PRICE-1.3.0004075500017500000012000000000001245331715400116025ustar00multixusersPRICE-1.3.0/README010064400017500000012000000236161245331662600125510ustar00multixusers========================== P. R. I. C. E. ========================== written by Riccardo Mottola rm@gnu.org Home on Sourceforge: http://price.sourceforge.net http://sourceforge.net/projects/price/ Document Revision: 7 January 2015 Current Version: 1.3.0 WHAT IS IT ? ------------ PRICE, which stands for Precision Raster Image Convolution Engine, aims to be a high quality Image filtering, enhancing and manipulation program. It is written in Objective-C and AppKit, thus designed for Cocoa and GNUstep. TO DO ----- - numeric input checking for convolution fields - Implement color median filter for luma only ? ? Filter Paramteres need to be autoreleased ? ? Undo should reset correct view scale ? bilinear scaling seems to add a black border sometimes (50%) but nearest neighbour not NOTES ----- - development and testing is currently done on MacOS-X 10.3, 10.4 and a G3, G4; 10.6 on i386, please report problems on other versions. 10.1/10.2 are now rarely tested but appear to continue to work, will probably deprecated in the future. - GNUstep versions have been tested by me on Solaris, Linux, MkLinux-ppc, OpenBSD, FreeBSD, NetBSD, MinGW on different CPU's (x86-32, x86-64, SPARC, PPC, MIPS and older versions on 68k) HISTORY ------- -- what's new in 1.3.0 -- (7 January 2015) + Scaling, cropping, Greyscale, Brigthness+Contrast, Curves, Median, Equalization, Convolution now support/preserve alpha-channel + Edge tracing ignores alpha-channel instead of refusing to filter + Curves now support direct manipulation of splines + Curves now supports better reset and other minor fixes + Crop border add bug-fixes, Crop supports any byte depth + Crop finally updated to PRFilterController architecture, thus it gains preview + Preview window supports scaling + Grayscale and inversion support 16 bit images + bug fixes for imags which are byte-aligned and have more bytesPerPixel than samplesPerPixel + on MacOS, handle through initial conversion alpha-first images (e.g. iPhone images) + Filter parameters checked before sending self-update during live preview, helps for a more responsive interface + enhanced support for 10.6, including UTIs -- what's new in 1.2.0 -- (25 December 2012) + support for JPEG as save format + In curves the transformed histogram is now drawn specular on top and not left + various bug fixes (e.g. Erratic histogram calculation, Curves Reset) -- what's new in 1.1.0 -- (23 April 2012) + Bilinear scaling + bug fixes in custom edge tracer + filters now close preview on Cancel + Curves level correction + GNUstep convolve matrix now acts on end-editing and not on enter, fixing year old limitation! -- what's new in 1.0.0 -- (08 August 2010) + Preview for filters + improvements and cleanup in the filter architecture -- what's new in 0.9.1 -- (31 December 2009) + cleaned and fixed notifications and outlets of the window controller, which fixes a crash on GNUstep. Mac wasn't affected. -- what's new in 0.9.0 (25 December 2009) + fixes to build on current glibc and current compilers with optimizations enabled. + new, unified, PRFilter architecture which simplifies all the controllers and unifies parameter passing with an Array + all PRTransform actions (rotations, flips, transposition) now support both color and grayscale and preserve alpha channel + complete update of all filters to support Cocoa >= 10.4 which pads the NSBitmapImageRep rows + 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 -- what's new in 0.8.3 (24 August 2008) + performance and memory usage improvments + license is now GPL v2 or later -- what's new in 0.8.2 (20 February 2008) + selectable method for greyscale conversion (rgb average and luminance of YCrCb) + image inversion for both color and greyscale images + in the GNUstep version an interface was corrected since it was corrupted and caused crashes -- what's new in 0.8.1 (5 November 2006) + equalization on the Y coordinate of the YCrCb colorspace -- what's new in 0.8.0 (29 April 2006) + 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. + the 5x5 convolution engine now works in color mode (separate RGB channels) too + a small fix for the convolve progress panel that wasn't updating properly + median filter has support for color filtering! (separate channel in RGB) + implemented separable linear scaling + implemented copy & paste + faster FFT -- what's new in 0.7.0 (26 June 2006) + fixed a memory release bug that occoured when greyscale images needed to be converted in colorspace on load + new interface for the "zoom" view of an image based on a pop-up button + a small info line at the bottom of the image + fixed zoom scale problem when doing undo/redo (it did always reset to 100%) -- what's new in 0.6.1 (10 June 2005) + automatic window scaling on open + implemented a preference panel + an Icon, finally! There are two versions of it, one for Macos-X and one for GNUstep. -- what's new in 0.6.0 (11 April 2005) + Brightness and Contrast adjustment + histogram fixes -- what's new in 0.5 (02 March 2005) + Scale image added + Crop image added + undo aspect ratio update fixed + many small tweaks in the UI (redesigned some panels, rearranged and relabeled those ugly Ok buttons) -- what's new in 0.4.1 (19 January 2005) + progress display for several filters (low and high pass, convolve, median, custom edge tracer) + Undo fundamentals implemented, one level of image undo is held! + Revert to saved works finally (thanks to the undo and some small fixes) + fixed refresh of transpose, rotate90 and rotate270 -- what's new in 0.4.0 + memory managment clean up (and some leak fixes) + automatic conversion to grayscale for many filters if the image was in color + further work in Custom edge tracer, algorithms now more complete and a third image can be used + improved zero corssing / non zero crossing for the edge tracer(s) -- what's new in 0.3.0 + fixed a bug in the transposition of color images + fixed a bug in the slider of the GNUstep Median filter interface + added image rotation of 90/180/70 degrees + added vertical and horizontal image flipping + fixed some naming in the panel titles -- what's new in 0.2.9 + separate RGB color image equalization implemented + colored display of Histogram and cumulative Hitogram + memory deallocation fixes + implemented zero-cross display for laplacian filters + implemented customizable median filter (different forms and size) + implemented the basis for a more customizable edge tracer + fixed a bug in the DFTHighPass interface on GNUstep -- what's new in 0.2.8 -- + NSImageView works now in gnustep (no more clipping) + edge tracing is implemented (with selectable filters) + 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. -- what's new in 0.2.7 -- + histogram and cumulative histogram display + fixed equalization, but improvment space remains. -- what's new in 0.2.6 -- + DFT low pass now uses a rised cosine for the transition improving the smoothness + the DFT low-pass controller now checks for the input range, also directly entering the numerical values works + rewrote pointer access in the Convolve 5x5 and did some clean up + auto-range for DFT based filters works now much, much better due to a careless bug I had left in -- what's new in 0.2.5 -- + FFT is now displayed shifted with the 0 in the center of the image + 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. + several GNUstep bugs were solved + DFT based Low and High pass are now skectechd out and roughly functional -- what's new in 0.2.4 -- (26 Oct 2003) + 2D FFT is now displayed in logarithmic scale, to ease visualization + Save works (TIFF output) -- what's new in 0.2.3 -- (13 Oct 2003) + 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! + DFT filter at the first (useless) implementation, basically the image is transformed and back-transformed -- what's new in 0.2.2 -- + key order in the convolution matrix is now correct + white and black color spaces are now correctly recongnized, although I don't like my current conversion method. + great FFT progress -- what's new in 0.2.1 -- (1 feb 2003) + manual entering of convolution finally works (and not only when closing and reopening the panel!) + "Auto Scale" correctly enables and disables manual controls, even on reopen. + convolution now works fine, it wraps and mirrors over the edges as it should -- what's new in 0.2 -- (30 jan 2003) + grayscale conversion + first work on the convolution engine + first work on filter preference panels. -- what's new in 0.1 -- (21 dic 2002) + first initial draft, first layouts LIMITATIONS ----------- - currently FFT and convolutions work only on grayscale images LICENSE and DISCLAIMER ----------------------- PRICE Copyright (C) 2002-2015 Riccardo Mottola This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. PRICE-1.3.0/.cvsignore010064400017500000012000000000061052176351600136530ustar00multixusersbuild PRICE-1.3.0/AppController.h010064400017500000012000000025601134032724300146100ustar00multixusers// // AppController.h // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // Copyright (c) 2002-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRPreviewController.h" #define prefEnlargeWindowsKey @"auto enlarge windows" #define prefClosePanelsKey @"close panels" #define prefEnlargeWindowsDefault YES #define prefClosePanelsDefault NO @interface AppController : NSObject { IBOutlet NSPanel *prefPanel; IBOutlet NSButton *closePanelsCheck; IBOutlet NSButton *enlargeWindowsCheck; PRPreviewController *previewController; @private BOOL prefClosePanels; @private BOOL prefEnlargeWindows; } - (IBAction) showPreferences:(id)sender; - (IBAction) savePreferences:(id)sender; - (IBAction) cancelPreferences:(id)sender; - (PRPreviewController *) previewController; - (BOOL) prefClosePanels; - (BOOL) prefEnlargeWindows; @end PRICE-1.3.0/AppController.m010064400017500000012000000060231244214615700146220ustar00multixusers// // AppController.m // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // Copyright (c) 2002-2005 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "AppController.h" #import "MyDocument.h" @implementation AppController - (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)theApplication { return NO; } - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename { NSDocumentController *dc; MyDocument *doc; dc = [NSDocumentController sharedDocumentController]; #if !defined (GNUSTEP) && (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4) doc = [dc openDocumentWithContentsOfFile:filename display:YES]; #else doc = [dc openDocumentWithContentsOfURL:[NSURL fileURLWithPath:filename] display:YES error:nil]; #endif return (doc != nil); } - (void)applicationDidFinishLaunching:(NSNotification *)notification { NSUserDefaults *defaults; NSDictionary *defDic; previewController = [[PRPreviewController alloc] init]; defaults = [NSUserDefaults standardUserDefaults]; /* we register default settings */ defDic = [NSDictionary dictionaryWithObjectsAndKeys: (prefEnlargeWindowsDefault ? @"YES" : @"NO"), prefEnlargeWindowsKey, (prefClosePanelsDefault ? @"YES" : @"NO"), prefClosePanelsKey, nil]; [defaults registerDefaults: defDic]; /* we read the last recorded value in the user defaults */ prefEnlargeWindows = [defaults boolForKey:prefEnlargeWindowsKey]; prefClosePanels = [defaults boolForKey:prefClosePanelsKey]; } - (PRPreviewController *) previewController { return previewController; } - (IBAction)showPreferences:(id)sender { [prefPanel makeKeyAndOrderFront:self]; if(prefEnlargeWindows == YES) [enlargeWindowsCheck setState:NSOnState]; else [enlargeWindowsCheck setState:NSOffState]; if(prefClosePanels == YES) [closePanelsCheck setState:NSOnState]; else [closePanelsCheck setState:NSOffState]; } - (IBAction)savePreferences:(id)sender { NSUserDefaults *defaults; defaults = [NSUserDefaults standardUserDefaults]; prefEnlargeWindows = [enlargeWindowsCheck state]; [defaults setBool:prefEnlargeWindows forKey:prefEnlargeWindowsKey]; prefClosePanels = [closePanelsCheck state]; [defaults setBool:prefClosePanels forKey:prefClosePanelsKey]; [prefPanel performClose:nil]; } - (IBAction) cancelPreferences:(id)sender { [prefPanel performClose:nil]; } - (BOOL) prefClosePanels { return prefClosePanels; } - (BOOL) prefEnlargeWindows { return prefEnlargeWindows; } @end PRICE-1.3.0/FFT.c010064400017500000012000000105601105335723300124400ustar00multixusers/* * FFT.c * PRICE * * Created by Riccardo Mottola on Sat Sep 13 2003. * Copyright (c) 2002-2005 Carduus. All rights reserved. * */ // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #include "FFT.h" double *cosinus; double *sinus; unsigned int *bitRevIndex; int initTrigonometrics(int num, unsigned int bitNumber) /* we init here the trigonometric arrays but we also init the bit reerse array */ { int i; double alpha; alpha = (2 * PI) / num; for (i = 0; i < num; i++) { cosinus[i] = cos(-alpha * i); sinus[i] = sin(-alpha * i); } for (i = 0; i < num; i++) bitRevIndex[i] = bitrev(i, bitNumber); return 0; } unsigned int binaryLog(unsigned int a) /* returns the smallest 2 power that contains the a */ { unsigned int i; unsigned int j; i = 1; j = 1; while (i < a) { i = i << 1; j++; } return j - 1; } unsigned int binpow(unsigned int n) { return 1 << n; } unsigned int bitrev(unsigned int i, unsigned int len) /* returns the bit-reverse of i given the bit number to work on */ { unsigned int r; unsigned int j; r = 0; for (j = 0; j < len-1; j++) /* we don't have to shift for the last position */ { r = r | (i & 1); r = r << 1; i = i >> 1; } r = r | (i & 1); return r; } int fft(int num, unsigned int bitNumber, double Ar[], double Ai[], double yr[], double yi[]) { unsigned int i; unsigned int s; unsigned int m; unsigned int j; unsigned int k; register double omega_r, omega_i; /* current unity root */ register unsigned int gamma; register double t_r, t_i; register double u_r, u_i; for (i = 0; i < num; i++) /* exponents are 0 to n-1 for n bits */ { yr[bitRevIndex[i]] = Ar[i]; yi[bitRevIndex[i]] = Ai[i]; } for (s = 1; s <= bitNumber; s++) { m = binpow(s); for (j = 0; j < m/2; j++) { gamma = ((num / m) * j) % num; omega_r = cosinus[gamma]; omega_i = sinus[gamma]; for (k = j; k < num; k += m) { t_r = omega_r * yr[k + m/2] - omega_i * yi[k + m/2]; t_i = omega_r * yi[k + m/2] + omega_i * yr[k + m/2]; u_r = yr[k]; u_i = yi[k]; yr[k] = u_r + t_r; yi[k] = u_i + t_i; yr[k + m/2] = u_r - t_r; yi[k + m/2] = u_i - t_i; } } } return 0; } int ifft(int num, unsigned int bitNumber, double Ar[], double Ai[], double yr[], double yi[]) { unsigned int i; unsigned int s; unsigned int m; unsigned int j; unsigned int k; register double omega_r, omega_i; /* current unity root */ register unsigned int gamma; register double t_r, t_i; register double u_r, u_i; for (i = 0; i < num; i++) /* exponents are 0 to n-1 for n bits */ { yr[bitRevIndex[i]] = Ar[i]; yi[bitRevIndex[i]] = Ai[i]; } for (s = 1; s <= bitNumber; s++) { m = binpow(s); for (j = 0; j < m/2; j++) { /* we follow the unity roots in the opposite direction */ /* but since sin(-a) = -sin(a) but cos(-a)=cos(a) just a sign is needed */ gamma = ((num / m) * j) % num; omega_r = cosinus[gamma]; omega_i = -sinus[gamma]; for (k = j; k < num; k += m) { t_r = omega_r * yr[k + m/2] - omega_i * yi[k + m/2]; t_i = omega_r * yi[k + m/2] + omega_i * yr[k + m/2]; u_r = yr[k]; u_i = yi[k]; yr[k] = u_r + t_r; yi[k] = u_i + t_i; yr[k + m/2] = u_r - t_r; yi[k + m/2] = u_i - t_i; } } } for (i = 0; i < num; i++) { yr[i] = yr[i]/num; yi[i] = yi[i]/num; } return 0; } PRICE-1.3.0/FFT.h010064400017500000012000000021021105335723300124360ustar00multixusers/* * FFT.h * PRICE * * Created by Riccardo Mottola on Sat Sep 13 2003. * Copyright (c) 2002-2003 Carduus. All rights reserved. * */ // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #include #include #include #define PI 3.14159265359 int initTrigonometrics(int num, unsigned int bitNumber); unsigned int binaryLog(unsigned int a); unsigned int binpow(unsigned int n); unsigned int bitrev(unsigned int i, unsigned int len); int fft(int num, unsigned int bitNumber, double Ar[], double Ai[], double yr[], double yi[]); int ifft(int num, unsigned int bitNumber, double Ar[], double Ai[], double yr[], double yi[]); PRICE-1.3.0/GNUmakefile010064400017500000012000000055661237774510400137510ustar00multixusers# # GNUmakefile - Generated by ProjectCenter # ifeq ($(GNUSTEP_MAKEFILES),) GNUSTEP_MAKEFILES := $(shell gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null) endif ifeq ($(GNUSTEP_MAKEFILES),) $(error You need to set GNUSTEP_MAKEFILES before compiling!) endif include $(GNUSTEP_MAKEFILES)/common.make # # Application # VERSION = 1.3.0 PACKAGE_NAME = PRICE APP_NAME = PRICE PRICE_APPLICATION_ICON = price-icon-os.tiff CVS_MODULE_NAME=PRICE-osx # # Resource files # PRICE_RESOURCE_FILES = \ Resources/MainMenu.gorm \ Resources/PRWindow.gorm \ Resources/Convolve55.gorm \ Resources/DFTLowPass.gorm \ Resources/DFTHighPass.gorm \ Resources/Equalize.gorm \ Resources/Histogram.gorm \ Resources/CumulHistogram.gorm \ Resources/TraceEdges.gorm \ Resources/CustTraceEdges.gorm \ Resources/Median.gorm \ Resources/ProgressPanel.gorm \ Resources/Scale.gorm \ Resources/Crop.gorm \ Resources/BriCon.gorm \ Resources/Grayscale.gorm \ Resources/Preview.gorm \ Resources/Curves.gorm \ Resources/price-icon-os.tiff \ Resources/README # # Header files # PRICE_HEADER_FILES = \ AppController.h \ MyDocument.h \ PRCConvolve55.h \ PRConvolve55.h \ PRFourier.h \ PRGrayscaleFilter.h \ PRImageView.h \ PRTransforms.h \ PRWindowController.h \ PRCDFTLowPass.h \ PRDFTLowPass.h \ PRCDFTHighPass.h \ PRDFTFilter.h \ PRDFTHighPass.h \ PRCEqualize.h \ PREqualize.h \ PRHistogram.h \ PRCHistogram.h \ PRHisto.h \ PRCCumHisto.h \ PRCumHisto.h \ PRCHisto.h \ PRCTraceEdges.h \ PRTraceEdges.h \ PRCustTraceEdges.h \ PRCCustTraceEdges.h \ PRMedian.h \ PRCMedian.h \ PRCProgress.h \ PRProgressAction.h \ PRScale.h \ PRCScale.h \ PRCCrop.h \ PRCrop.h \ PRBriCon.h \ PRCBriCon.h \ FFT.h \ PRImage.h \ PRCGrayscale.h \ PRInvert.h \ PRFilter.h \ PRCFourier.h \ PRCInvert.h \ PRCTransforms.h \ PRPreviewController.h \ PRFilterController.h \ PRCCurves.h \ PRCurves.h \ PRCurvesPath.h \ PRCurvesView.h # # Class files # PRICE_OBJC_FILES = \ main.m \ AppController.m \ MyDocument.m \ PRCConvolve55.m \ PRConvolve55.m \ PRFourier.m \ PRGrayscaleFilter.m \ PRImageView.m \ PRTransforms.m \ PRWindowController.m \ PRCDFTLowPass.m \ PRDFTLowPass.m \ PRCDFTHighPass.m \ PRDFTFilter.m \ PRDFTHighPass.m \ PRCEqualize.m \ PREqualize.m \ PRHistogram.m \ PRCHistogram.m \ PRHisto.m \ PRCCumHisto.m \ PRCumHisto.m \ PRCHisto.m \ PRCTraceEdges.m \ PRTraceEdges.m \ PRCustTraceEdges.m \ PRCCustTraceEdges.m \ PRMedian.m \ PRCMedian.m \ PRCProgress.m \ PRProgressAction.m \ PRScale.m \ PRCScale.m \ PRCCrop.m \ PRCrop.m \ PRBriCon.m \ PRCBriCon.m \ PRImage.m \ PRCGrayscale.m \ PRInvert.m \ PRFilter.m \ PRCFourier.m \ PRCInvert.m \ PRCTransforms.m \ PRPreviewController.m \ PRFilterController.m \ PRCCurves.m \ PRCurves.m \ PRCurvesPath.m \ PRCurvesView.m # # Other sources # PRICE_C_FILES = \ FFT.c # # Makefiles # -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make include $(GNUSTEP_MAKEFILES)/application.make -include GNUmakefile.postamble PRICE-1.3.0/GNUmakefile.preamble010064400017500000012000000010701074574347000155220ustar00multixusers# # GNUmakefile.preamble - Generated by ProjectCenter # # Additional flags to pass to the preprocessor ADDITIONAL_CPPFLAGS += # Additional flags to pass to Objective C compiler ADDITIONAL_OBJCFLAGS += # Additional flags to pass to C compiler ADDITIONAL_CFLAGS += # Additional flags to pass to the linker ADDITIONAL_LDFLAGS += # Additional include directories the compiler should search ADDITIONAL_INCLUDE_DIRS += # Additional library directories the linker should search ADDITIONAL_LIB_DIRS += # Additional GUI libraries to link ADDITIONAL_GUI_LIBS += PRICE-1.3.0/Info-PRICE.plist010064400017500000012000000124071245127134600144720ustar00multixusers CFBundleDevelopmentRegion English CFBundleDocumentTypes CFBundleTypeExtensions tiff TIFF TIF tif TIF CFBundleTypeName TIFF CFBundleTypeOSTypes TIFF CFBundleTypeRole Editor LSItemContentTypes public.tiff NSDocumentClass MyDocument CFBundleTypeExtensions jpg jpeg JPG JPEG CFBundleTypeName JPEG CFBundleTypeOSTypes JPEG CFBundleTypeRole Editor LSItemContentTypes public.jpeg NSDocumentClass MyDocument CFBundleTypeExtensions gif GIF CFBundleTypeName GIF CFBundleTypeOSTypes GIFf CFBundleTypeRole Viewer LSItemContentTypes com.compuserve.gif NSDocumentClass MyDocument CFBundleTypeExtensions pct pict PCT PICT CFBundleTypeName PICT CFBundleTypeOSTypes PICT CFBundleTypeRole Viewer LSItemContentTypes com.apple.pict NSDocumentClass MyDocument CFBundleTypeExtensions png PNG CFBundleTypeName PNG CFBundleTypeOSTypes PNGf CFBundleTypeRole Viewer LSItemContentTypes public.png NSDocumentClass MyDocument CFBundleTypeExtensions pdf PDF CFBundleTypeName PDF CFBundleTypeOSTypes PDF CFBundleTypeRole Viewer LSItemContentTypes com.adobe.pdf NSDocumentClass MyDocument CFBundleTypeExtensions bmp BMP CFBundleTypeName BMP CFBundleTypeOSTypes BMP CFBundleTypeRole Viewer LSItemContentTypes com.microsoft.bmp NSDocumentClass MyDocument CFBundleTypeExtensions eps EPS CFBundleTypeName EPS CFBundleTypeOSTypes EPSF CFBundleTypeRole Viewer LSItemContentTypes com.truevision.tga-image NSDocumentClass MyDocument CFBundleTypeExtensions tga TGA CFBundleTypeName TGA CFBundleTypeRole Viewer LSItemContentTypes com.truevision.tga-image NSDocumentClass MyDocument CFBundleExecutable PRICE CFBundleGetInfoString Precision Raster Image Convolution Engine CFBundleIconFile price128 CFBundleIdentifier org.gnustep.PRICE CFBundleInfoDictionaryVersion 6.0 CFBundleName PRICE CFBundlePackageType APPL CFBundleSignature ???? CFBundleVersion 1.3.0 NSMainNibFile MainMenu NSPrincipalClass NSApplication PRICE-1.3.0/LICENSE010064400017500000012000000423071025240022200126510ustar00multixusersThe GNU General Public License (GPL) Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what theProgram does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. one line to give the program's name and a brief idea of what it does. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, IInc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.PRICE-1.3.0/MyDocument.h010064400017500000012000000024571111461357200141170ustar00multixusers// // MyDocument.h // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // Copyright (c) 2002-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRWindowController.h" #import "PRCProgress.h" #import "AppController.h" /* so all other controllers have this included */ #import "PRImage.h" #import "PRFilter.h" @interface MyDocument : NSDocument { PRWindowController *windowController; NSPrintInfo *printInfo; @private PRImage *activeImage; @private PRImage *oldImage; } - (NSWindow *)window; - (NSView *)view; - (PRImage *)activeImage; - (void)setActiveImage: (PRImage *)theImage; - (void)runFilter:(PRFilter *)filter with:(NSArray *)parameters; - (void)restoreLastImage; - (void)saveCurrentImage; - (void)setPrintInfo:(NSPrintInfo *)anObject; - (NSPrintInfo *)printInfo; @end PRICE-1.3.0/MyDocument.m010064400017500000012000000500361245153320400141160ustar00multixusers// // MyDocument.m // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // Copyright (c) 2002-2015 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "MyDocument.h" #include #import "PRGrayscaleFilter.h" #import "PRInvert.h" #import "PRConvolve55.h" #import "PRTransforms.h" #import "PRFourier.h" #import "PRDFTLowPass.h" #import "PRDFTHighPass.h" #import "PREqualize.h" #import "PRTraceEdges.h" #import "PRCustTraceEdges.h" #import "PRMedian.h" #import "PRScale.h" #import "PRCrop.h" #import "PRBriCon.h" #import "PRCurves.h" /* changeSaveType is an undocument API call, not exported in AppKit headers */ @interface NSDocument(Hidden) - (void)changeSaveType:(id)sender; @end @implementation MyDocument - (NSData *)dataRepresentationOfType:(NSString *)aType { NSData *dataOfRep; NSDictionary *repProperties; dataOfRep = nil; if ([aType isEqualToString:@"TIFF"] || [aType isEqualToString:@"public.tiff"]) { NSLog(@"data representation of type TIFF"); repProperties = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:NSTIFFCompressionLZW] forKey:NSImageCompressionMethod]; dataOfRep = [[activeImage bitmapRep] representationUsingType: NSTIFFFileType properties:repProperties]; } else if ([aType isEqualToString:@"JPEG"] || [aType isEqualToString:@"public.jpeg"]) { float level; level = [windowController compressionLevel]; NSLog(@"data representation of type JPEG, %f", level); repProperties = [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:level] forKey:NSImageCompressionFactor]; dataOfRep = [[activeImage bitmapRep] representationUsingType: NSJPEGFileType properties:repProperties]; } return dataOfRep; } - (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType { PRImage *tempImage; tempImage = [[PRImage alloc] initWithData:data]; if (tempImage != nil) { NSBitmapImageRep *tmpImageRep; BOOL convertColorSpace; BOOL convertPlanar; NSMutableDictionary *imgProps; #if !defined (GNUSTEP) && (MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_3) /* since 10.4 we have different Alpha format position, let's convert it */ tmpImageRep = [tempImage bitmapRep]; if ([tmpImageRep bitmapFormat] != 0) { NSInteger x, y; NSInteger w, h; BOOL alphaFirst; BOOL nonPremultipliedA; BOOL floatingPoint; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger srcBytesPerRow; NSInteger destBytesPerRow; NSInteger srcBytesPerPixel; NSInteger destBytesPerPixel; NSLog(@"We have a non-standard format, let's try to convert it"); alphaFirst = [tmpImageRep bitmapFormat] & NSAlphaFirstBitmapFormat; nonPremultipliedA = [tmpImageRep bitmapFormat] & NSAlphaNonpremultipliedBitmapFormat; floatingPoint = [tmpImageRep bitmapFormat] & NSFloatingPointSamplesBitmapFormat; if ([tmpImageRep bitsPerSample] == 8) { unsigned char *srcData; unsigned char *destData; unsigned char *p1; unsigned char *p2; /* swap Alpha is hopefully only for chunky images */ if (alphaFirst) { imgProps = [[NSMutableDictionary alloc] init]; [imgProps setValue:[tmpImageRep valueForProperty:NSImageCompressionMethod] forKey:NSImageCompressionMethod]; [imgProps setValue:[tmpImageRep valueForProperty:NSImageCompressionFactor] forKey:NSImageCompressionFactor]; [imgProps setValue:[tmpImageRep valueForProperty:NSImageEXIFData] forKey:NSImageEXIFData]; w = [tmpImageRep pixelsWide]; h = [tmpImageRep pixelsHigh]; srcBytesPerRow = [tmpImageRep bytesPerRow]; srcBytesPerPixel = [tmpImageRep bitsPerPixel] / 8; destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:8 samplesPerPixel:[tmpImageRep samplesPerPixel] hasAlpha:[tmpImageRep hasAlpha] isPlanar:NO colorSpaceName:[tmpImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; srcData = [tmpImageRep bitmapData]; destData = [destImageRep bitmapData]; if (![tempImage hasColor]) { for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; p2 = destData + destBytesPerRow * y + destBytesPerPixel * x; p2[0] = p1[1]; p2[1] = p1[0]; } } else { for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; p2 = destData + destBytesPerRow * y + destBytesPerPixel * x; p2[0] = p1[1]; p2[1] = p1[2]; p2[2] = p1[3]; p2[3] = p1[0]; } } [destImageRep setProperty:NSImageEXIFData withValue:[imgProps objectForKey:NSImageEXIFData]]; [destImage setBitmapRep:destImageRep]; [destImageRep release]; [tempImage release]; tempImage = destImage; [imgProps release]; } } else /* for 16 bit */ { } } #endif /* Image format conversion */ /* if the loaded image is in BlackColorSpace we convert it to WhiteColorSpace */ /* which is the only TIFF rep used internally and generated by PRICE */ /* we also need to convert Planar images into a meshed configuration */ tmpImageRep = [tempImage bitmapRep]; imgProps = [[NSMutableDictionary alloc] init]; [imgProps setValue:[tmpImageRep valueForProperty:NSImageCompressionMethod] forKey:NSImageCompressionMethod]; [imgProps setValue:[tmpImageRep valueForProperty:NSImageCompressionFactor] forKey:NSImageCompressionFactor]; [imgProps setValue:[tmpImageRep valueForProperty:NSImageEXIFData] forKey:NSImageEXIFData]; NSLog(@"Properties: %@", imgProps); convertColorSpace = [[tmpImageRep colorSpaceName] isEqualToString: NSCalibratedBlackColorSpace] || [[tmpImageRep colorSpaceName] isEqualToString: NSDeviceBlackColorSpace]; convertPlanar = [tmpImageRep isPlanar]; if (convertColorSpace || convertPlanar) { unsigned char *dataPtr; unsigned char *dataPtr2; NSInteger k; NSInteger w, h; PRImage *newImage; NSBitmapImageRep *newImageRep; NSInteger destSamplesPerPixel; NSLog(@"Converting color space"); w = [tmpImageRep pixelsWide]; h = [tmpImageRep pixelsHigh]; destSamplesPerPixel = [tmpImageRep samplesPerPixel]; /* converting the colorspace */ newImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; newImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedWhiteColorSpace bytesPerRow:w*destSamplesPerPixel bitsPerPixel:0]; dataPtr = [tmpImageRep bitmapData]; dataPtr2 = [newImageRep bitmapData]; if (convertPlanar) { NSInteger x, y; NSInteger xp; if (convertColorSpace) { for (y = 0; y < h; y++) { xp = 0; for (x = 0; x < w*3; x += 3) { dataPtr2[y*(w*3) + x] = UCHAR_MAX - dataPtr[y*w + x]; dataPtr2[y*(w*3) + x + 1] = UCHAR_MAX - dataPtr[y*w*2 + x]; dataPtr2[y*(w*3) + x + 2] = UCHAR_MAX - dataPtr[y*w*3 + x]; xp++; } } } else { for (y = 0; y < h; y++) { xp = 0; for (x = 0; x < w*3; x += 3) { dataPtr2[y*(w*3) + x] = dataPtr[y*w + x]; dataPtr2[y*(w*3) + x + 1] = dataPtr[y*w*2 + x]; dataPtr2[y*(w*3) + x + 2] = dataPtr[y*w*3 + x]; xp++; } } } } else { if (convertColorSpace) { NSInteger s; s = w * h; for (k = 0; k < s; k++) *dataPtr2++ = UCHAR_MAX - *dataPtr++; } else { /* shall never happen */ NSLog(@"Internal error: tried to convert image when it wasn't necessary"); } } // FIXME: should we remove the color space from the EXIF data? [newImageRep setColorSpaceName:NSCalibratedWhiteColorSpace]; [newImageRep setProperty:NSImageEXIFData withValue:[imgProps objectForKey:NSImageEXIFData]]; [newImage setBitmapRep:newImageRep]; [newImageRep release]; [tempImage release]; tempImage = newImage; } [imgProps release]; } oldImage = nil; /* returns a bool to be able to know if loading was successul */ if (tempImage != nil) { /* we setActiveImage won't set the image info yet (why?) */ [self setActiveImage:tempImage]; [tempImage release]; return YES; } else return NO; } - (void)makeWindowControllers /* instantiate PRWindowController */ { windowController = [[PRWindowController alloc] initWithWindowNibName:@"PRWindow"]; [self addWindowController:windowController]; /* set undo levels */ [[self undoManager] setLevelsOfUndo:1]; } - (NSWindow *)window { return [windowController window]; } - (NSView *)view { return [windowController view]; } - (PRImage *)activeImage /* method to access the active image */ { return activeImage; } - (void)setActiveImage: (PRImage *)theImage /* method to set the active image */ { if (activeImage != nil) [activeImage release]; activeImage = [theImage retain]; NSLog(@"set active, per pixel: %d %d", [[activeImage bitmapRep] bitsPerSample], [[activeImage bitmapRep] bitsPerPixel]); /* window controller is still nil here the first time we load an image * thus the info must be manually set after the nib finished loading */ [windowController setImageToDraw:activeImage]; } - (void)copy:(id)sender { NSPasteboard *pboard; pboard = [NSPasteboard generalPasteboard]; [pboard declareTypes:[NSArray arrayWithObjects:NSTIFFPboardType, nil] owner:nil]; [pboard setData:[activeImage TIFFRepresentation] forType:NSTIFFPboardType]; } - (void)paste:(id)sender { NSUndoManager *uMgr; NSPasteboard *pboard; NSString *type; NSData *tempData; PRImage *tempImage; pboard = [NSPasteboard generalPasteboard]; type = [pboard availableTypeFromArray:[NSArray arrayWithObjects:NSTIFFPboardType, nil]]; if (type != nil) { if ([type isEqualToString:NSTIFFPboardType]) { /* get the clipboard data */ tempData = [pboard dataForType:NSTIFFPboardType]; if (tempData != nil) { uMgr = [self undoManager]; /* save the method on the undo stack */ [[uMgr prepareWithInvocationTarget: self] restoreLastImage]; [uMgr setActionName:@"Paste"]; /* save the current image */ [self saveCurrentImage]; tempImage = [[PRImage alloc] initWithData:tempData]; [self setActiveImage: tempImage]; [tempImage release]; [[windowController view] setFrameSize:[activeImage size]]; [[windowController view] setNeedsDisplay:YES]; } else { /* guidelines say I should put a panel */ /* #### fixme */ NSLog(@"something went wrong in paste"); } } else NSLog(@"received a paste of unhandled type: %@", type); } } - (void)runFilter:(PRFilter *)filter with:(NSArray *)parameters { NSUndoManager *uMgr; PRCProgress *filterProgr; NSMutableDictionary *imgProps; id tempVal; NSLog(@"before running filter, per pixel: %d %d", [[activeImage bitmapRep] bitsPerSample], [[activeImage bitmapRep] bitsPerPixel]); uMgr = [self undoManager]; /* save the method on the undo stack */ [[uMgr prepareWithInvocationTarget: self] restoreLastImage]; [uMgr setActionName:[filter actionName]]; filterProgr = nil; if ([filter displayProgress]) { filterProgr = [[PRCProgress alloc] init]; [filterProgr showProgress:self]; [filterProgr setTitle: [filter actionName]]; } /* save the current image */ [self saveCurrentImage]; /* save image properties */ imgProps = [[NSMutableDictionary alloc] init]; tempVal = [[activeImage bitmapRep] valueForProperty:NSImageCompressionMethod]; if (tempVal) [imgProps setObject:tempVal forKey:NSImageCompressionMethod]; tempVal = [[activeImage bitmapRep] valueForProperty:NSImageCompressionFactor]; if (tempVal) [imgProps setObject:tempVal forKey:NSImageCompressionFactor]; tempVal = [[activeImage bitmapRep] valueForProperty:NSImageEXIFData]; if (tempVal) [imgProps setObject:tempVal forKey:NSImageEXIFData]; NSLog(@"beforeFilter: %@", [[activeImage bitmapRep] valueForProperty:NSImageEXIFData]); /* instantiate and run the filter */ [self setActiveImage: [filter filterImage: activeImage with:parameters progressPanel:filterProgr]]; /* reset image properties */ if ([imgProps objectForKey:NSImageEXIFData] != nil) { NSMutableDictionary *exifDict; exifDict = [NSMutableDictionary dictionaryWithDictionary:[imgProps objectForKey:NSImageEXIFData]]; NSLog(@"we have EXIF Data: %@", exifDict); if ([exifDict objectForKey:@"PixelXDimension"]) { NSNumber *w = [NSNumber numberWithInt:[activeImage width]]; [exifDict setObject:w forKey:@"PixelXDimension"]; } if ([exifDict objectForKey:@"PixelYDimension"]) { NSNumber *w = [NSNumber numberWithInt:[activeImage height]]; [exifDict setObject:w forKey:@"PixelYDimension"]; } NSLog(@"New EXIF Data: %@", exifDict); [imgProps setObject:exifDict forKey:NSImageEXIFData]; } [[activeImage bitmapRep] setProperty:NSImageEXIFData withValue:[imgProps objectForKey:NSImageEXIFData]]; [imgProps release]; NSLog(@"afterFilter: %@", [[activeImage bitmapRep] valueForProperty:NSImageEXIFData]); [filterProgr release]; /* reset the selected zoom ration, this will also cause a view update */ [windowController scaleFromMenu:nil]; } - (void)restoreLastImage { PRImage *tempImage; tempImage = [activeImage copy]; [self setActiveImage: oldImage]; [oldImage release]; oldImage = tempImage; [[[self undoManager] prepareWithInvocationTarget: self] restoreLastImage]; [windowController scaleFromMenu:nil]; } - (void)saveCurrentImage { if (activeImage != nil) { if (oldImage != nil) [oldImage release]; NSLog(@"save active, per pixel: %d %d", [[activeImage bitmapRep] bitsPerSample], [[activeImage bitmapRep] bitsPerPixel]); oldImage = [activeImage copy]; NSLog(@"saved, per pixel: %d %d", [[oldImage bitmapRep] bitsPerSample], [[oldImage bitmapRep] bitsPerPixel]); } } - (void)dealloc { [activeImage release]; [windowController release]; [super dealloc]; } - (void)setPrintInfo:(NSPrintInfo *)anObject { if (printInfo != anObject) { [printInfo autorelease]; printInfo = [anObject copyWithZone:[self zone]]; } } - (NSPrintInfo *)printInfo { if (printInfo == nil) { [self setPrintInfo:[NSPrintInfo sharedPrintInfo]]; [printInfo setHorizontallyCentered:YES]; [printInfo setVerticallyCentered:YES]; [printInfo setLeftMargin:5.0]; [printInfo setRightMargin:5.0]; [printInfo setTopMargin:5.0]; [printInfo setBottomMargin:5.0]; } return printInfo; } - (void)printShowingPrintPanel:(BOOL)showPanels { NSPrintOperation *op = [NSPrintOperation printOperationWithView:[windowController view] printInfo:[self printInfo]]; [op setShowPanels:showPanels]; [op runOperationModalForWindow:[self window] delegate:nil didRunSelector:NULL contextInfo:NULL]; } /* file panel methods */ /* undocumented API call which works fine for our purpose to intercept the change of the filetype and update the view information accordingly */ - (void)changeSaveType:(id)sender { NSLog(@"MyDocument changeSaveType"); [super changeSaveType:sender]; [windowController changeSaveType:sender]; } /* we override this for GNUstep */ #if defined(GNUSTEP_GUI_VERSION) && GNU_GNUSTEP_GUI_MAJOR_VERSION == 0 && GNUSTEP_GUI_MINOR_VERSION <= 22 - (NSInteger) runModalSavePanel: (NSSavePanel*)savePanel withAccessoryView: (NSView*)accessoryView { NSLog(@"runModalSavePanel: withAccessoryView. We should see this only on GS gui <= 0.22"); [windowController prepareSavePanel: savePanel]; [windowController setWritableFileTypes:[MyDocument writableTypes]]; [windowController setCompressionType:[self fileType]]; /* we finally call super, but reget the accessory view since we changed it */ return [super runModalSavePanel:savePanel withAccessoryView:[savePanel accessoryView]]; } #endif /* we override this for Cocoa */ - (BOOL) prepareSavePanel:(NSSavePanel *) panel { BOOL r; r = [windowController prepareSavePanel: panel]; [windowController setWritableFileTypes:[MyDocument writableTypes]]; [windowController setCompressionType:[self fileType]]; return r; } @end PRICE-1.3.0/PRBriCon.h010064400017500000012000000014241111040406000134240ustar00multixusers// // PRBriCon.h // PRICE // // Created by Riccardo Mottola on Thu Mar 3 2005. // Copyright (c) 2005-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilter.h" @interface PRBriCon : PRFilter { } - (PRImage *)adjustImage :(PRImage *)srcImage :(int)bri :(float)con; @end PRICE-1.3.0/PRBriCon.m010064400017500000012000000121271243617651600134630ustar00multixusers// // PRBriCon.m // PRICE // // Created by Riccardo Mottola on Thu Mar 3 2005. // Copyright (c) 2005-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #include #import #include #define HALF_CHAR (UCHAR_MAX >> 1) #import "PRBriCon.h" @implementation PRBriCon - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { int brightness; float contrast; /* interpret the parameters */ brightness = [[parameters objectAtIndex:0] intValue]; contrast = [[parameters objectAtIndex:1] floatValue]; return [self adjustImage:image :brightness :contrast]; } - (NSString *)actionName { return @"Brightness & Contrast"; } - (PRImage *)adjustImage :(PRImage *)srcImage :(int)bri :(float)con { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; unsigned char *srcData; unsigned char *destData; int tempValue; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; BOOL hasAlpha; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; hasAlpha = [srcImageRep hasAlpha]; destSamplesPerPixel = srcSamplesPerPixel; /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:hasAlpha isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; if ([srcImage hasColor]) { for (y = 0; y < h; y++) for (x = 0; x < w; x++) { tempValue = (int)rint((float)(srcData[srcBytesPerRow*y + srcBytesPerPixel*x] - HALF_CHAR + bri) * con + HALF_CHAR); if (tempValue > UCHAR_MAX) tempValue = UCHAR_MAX; else if (tempValue < 0) tempValue = 0; destData[destBytesPerRow * y + destBytesPerPixel * x] = tempValue; tempValue = (int)rint((float)(srcData[srcBytesPerRow*y + srcBytesPerPixel*x + 1] - HALF_CHAR + bri) * con + HALF_CHAR); if (tempValue > UCHAR_MAX) tempValue = UCHAR_MAX; else if (tempValue < 0) tempValue = 0; destData[destBytesPerRow * y + destBytesPerPixel * x + 1] = tempValue; tempValue = (int)rint((float)(srcData[srcBytesPerRow*y + srcBytesPerPixel*x + 2] - HALF_CHAR + bri) * con + HALF_CHAR); if (tempValue > UCHAR_MAX) tempValue = UCHAR_MAX; else if (tempValue < 0) tempValue = 0; destData[destBytesPerRow * y + destBytesPerPixel * x + 2] = tempValue; if (hasAlpha) destData[destBytesPerRow * y + destBytesPerPixel * x + 3] = srcData[srcBytesPerRow*y + srcBytesPerPixel*x + 3]; } } else { for (y = 0; y < h; y++) for (x = 0; x < w; x++) { tempValue = (int)rint((float)(srcData[srcBytesPerRow*y + srcBytesPerPixel*x] - HALF_CHAR + bri) * con + HALF_CHAR); if (tempValue > UCHAR_MAX) tempValue = UCHAR_MAX; else if (tempValue < 0) tempValue = 0; destData[destBytesPerRow * y + destBytesPerPixel * x] = tempValue; if (hasAlpha) destData[destSamplesPerPixel*(y*w + x) + 1] = srcData[srcBytesPerRow*y + srcSamplesPerPixel*x + 1]; } } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (BOOL)displayProgress { return NO; } @end PRICE-1.3.0/PRCBriCon.h010064400017500000012000000021121134357267600135550ustar00multixusers// // PRCBriCon.h // PRICE // // Created by Riccardo Mottola on Thu Mar 3 2005. // Copyright (c) 2005-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilterController.h" @interface PRCBriCon : PRFilterController { IBOutlet NSWindow *briconWindow; IBOutlet NSStepper *briStep; IBOutlet NSSlider *briSlider; IBOutlet NSTextField *briVal; IBOutlet NSStepper *conStep; IBOutlet NSSlider *conSlider; IBOutlet NSTextField *conVal; } - (IBAction)briconReset:(id)sender; - (IBAction)changeBri:(id)sender; - (IBAction)changeCon:(id)sender; @end PRICE-1.3.0/PRCBriCon.m010064400017500000012000000072151237221614600135610ustar00multixusers// // PRCBriCon.m // PRICE // // Created by Riccardo Mottola on Thu Mar 3 2005. // Copyright (c) 2005-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. // for values > 1 // the minimum is from 126 to 127: 1.008 // 125 to 127: 1.015 // the maximum is from 1 to 127: 127 #include #import "PRCBriCon.h" #import "PRBriCon.h" #import "MyDocument.h" #include #define HALF_CHAR (UCHAR_MAX >> 1) @implementation PRCBriCon - (id)init { if ((self = [super init])) { filter = [[PRBriCon alloc] init]; } return self; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!briconWindow) [NSBundle loadNibNamed:@"BriCon" owner:self]; [briconWindow makeKeyAndOrderFront:nil]; [self parametersChanged:self]; } - (NSArray *)encodeParameters { NSArray *parameters; float contrast; int level; level = [conVal intValue]; contrast = 1 + (float)abs(level)/HALF_CHAR; if (level < 0) contrast = 1 / contrast; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:[briVal intValue]], [NSNumber numberWithFloat:contrast], nil]; return parameters; } - (void)closeFilterPanel { [briconWindow performClose:nil]; } - (IBAction)briconReset:(id)sender { [briSlider setIntValue:0]; [briStep setIntValue:0]; [briVal setIntValue:0]; [conSlider setFloatValue:0.0]; [conStep setFloatValue:0.0]; [conVal setFloatValue:0.0]; [self parametersChanged:sender]; } - (IBAction)changeBri:(id)sender { if (sender == briVal) { int tempVal; tempVal = [sender intValue]; if (tempVal > 255) { tempVal = 255; [briVal setIntValue:tempVal]; } else if (tempVal < -255) { tempVal = -255; [briVal setIntValue:tempVal]; } [briSlider setIntValue:tempVal]; [briStep setIntValue:tempVal]; } else if (sender == briStep) { [briSlider setIntValue:[sender intValue]]; [briVal setIntValue:[sender intValue]]; } else if (sender == briSlider) { [briVal setIntValue:[sender intValue]]; [briStep setIntValue:[sender intValue]]; } else NSLog(@"undexpected sender value in changeBri"); [self parametersChanged:sender]; } - (IBAction)changeCon:(id)sender { if (sender == conVal) { int tempVal; tempVal = [sender intValue]; if (tempVal > 127) { tempVal = 127; [briVal setIntValue:tempVal]; } else if (tempVal < -127) { tempVal = -127; [briVal setIntValue:tempVal]; } [conSlider setIntValue:tempVal]; [conStep setIntValue:tempVal]; } else if (sender == conStep) { [conSlider setIntValue:[sender intValue]]; [conVal setIntValue:[sender intValue]]; } else if (sender == conSlider) { [conVal setIntValue:[sender intValue]]; [conStep setIntValue:[sender intValue]]; } else NSLog(@"undexpected sender value in changeCon"); [self parametersChanged:sender]; } @end PRICE-1.3.0/PRCConvolve55.h010064400017500000012000000056671134446274500143640ustar00multixusers// // PRCConvolve55.h // PRICE // Convolve 5x5 Controller // // Created by Riccardo Mottola on Tue Jan 21 2003. // Copyright (c) 2003-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilterController.h" @interface PRCConvolve55 : PRFilterController { IBOutlet NSWindow *filterWindow; IBOutlet NSTextField *matField11; IBOutlet NSTextField *matField12; IBOutlet NSTextField *matField13; IBOutlet NSTextField *matField14; IBOutlet NSTextField *matField15; IBOutlet NSTextField *matField21; IBOutlet NSTextField *matField22; IBOutlet NSTextField *matField23; IBOutlet NSTextField *matField24; IBOutlet NSTextField *matField25; IBOutlet NSTextField *matField31; IBOutlet NSTextField *matField32; IBOutlet NSTextField *matField33; IBOutlet NSTextField *matField34; IBOutlet NSTextField *matField35; IBOutlet NSTextField *matField41; IBOutlet NSTextField *matField42; IBOutlet NSTextField *matField43; IBOutlet NSTextField *matField44; IBOutlet NSTextField *matField45; IBOutlet NSTextField *matField51; IBOutlet NSTextField *matField52; IBOutlet NSTextField *matField53; IBOutlet NSTextField *matField54; IBOutlet NSTextField *matField55; IBOutlet NSTextField *scaleField; IBOutlet NSTextField *offsetField; IBOutlet NSButton *autoScaleCheck; int convMatrix[5][5]; BOOL autoScale; int offset; float scale; } - (IBAction)convMatrix11:(id)sender; - (IBAction)convMatrix12:(id)sender; - (IBAction)convMatrix13:(id)sender; - (IBAction)convMatrix14:(id)sender; - (IBAction)convMatrix15:(id)sender; - (IBAction)convMatrix21:(id)sender; - (IBAction)convMatrix22:(id)sender; - (IBAction)convMatrix23:(id)sender; - (IBAction)convMatrix24:(id)sender; - (IBAction)convMatrix25:(id)sender; - (IBAction)convMatrix31:(id)sender; - (IBAction)convMatrix32:(id)sender; - (IBAction)convMatrix33:(id)sender; - (IBAction)convMatrix34:(id)sender; - (IBAction)convMatrix35:(id)sender; - (IBAction)convMatrix41:(id)sender; - (IBAction)convMatrix42:(id)sender; - (IBAction)convMatrix43:(id)sender; - (IBAction)convMatrix44:(id)sender; - (IBAction)convMatrix45:(id)sender; - (IBAction)convMatrix51:(id)sender; - (IBAction)convMatrix52:(id)sender; - (IBAction)convMatrix53:(id)sender; - (IBAction)convMatrix54:(id)sender; - (IBAction)convMatrix55:(id)sender; - (IBAction)scaleFactor:(id)sender; - (IBAction)offsetFactor:(id)sender; - (IBAction)autoRange:(id)sender; @end PRICE-1.3.0/PRCConvolve55.m010064400017500000012000000150101244262514600143440ustar00multixusers// // PRCConvolve55.m // PRICE // Convolve 5x5 Controller // // Created by Riccardo Mottola on Tue Jan 21 2003. // Copyright (c) 2003-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCConvolve55.h" #import "MyDocument.h" #import "PRConvolve55.h" @implementation PRCConvolve55 - (id)init { if ((self = [super init])) { filter = [[PRConvolve55 alloc] init]; } return self; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!filterWindow) [NSBundle loadNibNamed:@"Convolve55" owner:self]; [filterWindow makeKeyAndOrderFront:nil]; convMatrix[0][0] = [matField11 intValue]; convMatrix[0][1] = [matField12 intValue]; convMatrix[0][2] = [matField13 intValue]; convMatrix[0][3] = [matField14 intValue]; convMatrix[0][4] = [matField15 intValue]; convMatrix[1][0] = [matField21 intValue]; convMatrix[1][1] = [matField22 intValue]; convMatrix[1][2] = [matField23 intValue]; convMatrix[1][3] = [matField24 intValue]; convMatrix[1][4] = [matField25 intValue]; convMatrix[2][0] = [matField31 intValue]; convMatrix[2][1] = [matField32 intValue]; convMatrix[2][2] = [matField33 intValue]; convMatrix[2][3] = [matField34 intValue]; convMatrix[2][4] = [matField35 intValue]; convMatrix[3][0] = [matField41 intValue]; convMatrix[3][1] = [matField42 intValue]; convMatrix[3][2] = [matField43 intValue]; convMatrix[3][3] = [matField44 intValue]; convMatrix[3][4] = [matField45 intValue]; convMatrix[4][0] = [matField51 intValue]; convMatrix[4][1] = [matField52 intValue]; convMatrix[4][2] = [matField53 intValue]; convMatrix[4][3] = [matField54 intValue]; convMatrix[4][4] = [matField55 intValue]; if ([autoScaleCheck state] == NSOnState) { [scaleField setEnabled:NO]; [offsetField setEnabled:NO]; autoScale = YES; } else { [scaleField setEnabled:YES]; [offsetField setEnabled:YES]; autoScale = NO; } offset = [offsetField intValue]; scale = [scaleField floatValue]; [self parametersChanged:self]; } - (IBAction)convMatrix11:(id)sender { convMatrix[0][0] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix12:(id)sender { convMatrix[0][1] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix13:(id)sender { convMatrix[0][2] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix14:(id)sender { convMatrix[0][3] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix15:(id)sender { convMatrix[0][4] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix21:(id)sender { convMatrix[1][0] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix22:(id)sender { convMatrix[1][1] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix23:(id)sender { convMatrix[1][2] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix24:(id)sender { convMatrix[1][3] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix25:(id)sender { convMatrix[1][4] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix31:(id)sender { convMatrix[2][0] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix32:(id)sender { convMatrix[2][1] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix33:(id)sender { convMatrix[2][2] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix34:(id)sender { convMatrix[2][3] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix35:(id)sender { convMatrix[2][4] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix41:(id)sender { convMatrix[3][0] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix42:(id)sender { convMatrix[3][1] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix43:(id)sender { convMatrix[3][2] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix44:(id)sender { convMatrix[3][3] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix45:(id)sender { convMatrix[3][4] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix51:(id)sender { convMatrix[4][0] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix52:(id)sender { convMatrix[4][1] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix53:(id)sender { convMatrix[4][2] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix54:(id)sender { convMatrix[4][3] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)convMatrix55:(id)sender { convMatrix[4][4] = [sender intValue]; [self parametersChanged:self]; } - (IBAction)autoRange:(id)sender { autoScale = !autoScale; if (autoScale) { [scaleField setEnabled:NO]; [offsetField setEnabled:NO]; } else { [scaleField setEnabled:YES]; [offsetField setEnabled:YES]; } [self parametersChanged:self]; } - (IBAction)scaleFactor:(id)sender { scale = [sender floatValue]; [self parametersChanged:self]; } - (IBAction)offsetFactor:(id)sender { offset = [sender intValue]; [self parametersChanged:self]; } - (void)closeFilterPanel { [filterWindow performClose:nil]; } - (NSArray *)encodeParameters { NSArray *parameters; NSMutableArray *convArray; int i, j; /* encode the parameters */ convArray = [NSMutableArray arrayWithCapacity:25]; for (i = 0; i < 5; i++) for (j = 0; j < 5; j++) [convArray addObject: [NSNumber numberWithInt: convMatrix[i][j]]]; parameters = [NSArray arrayWithObjects: convArray, [NSNumber numberWithInt: offset], [NSNumber numberWithFloat: scale], [NSNumber numberWithBool: autoScale], nil]; return parameters; } @end PRICE-1.3.0/PRCCrop.h010064400017500000012000000023201244261601400132670ustar00multixusers// // PRCCrop.h // PRICE // // Created by Riccardo Mottola on Fri Jan 28 2005. // Copyright (c) 2005-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilterController.h" @interface PRCCrop : PRFilterController { IBOutlet NSWindow *cropWindow; IBOutlet NSTextField *topField; IBOutlet NSTextField *bottomField; IBOutlet NSTextField *leftField; IBOutlet NSTextField *rightField; IBOutlet NSTextField *widthField; IBOutlet NSTextField *heightField; NSInteger origWidth; NSInteger origHeight; } - (IBAction)changeTop:(id)sender; - (IBAction)changeBottom:(id)sender; - (IBAction)changeLeft:(id)sender; - (IBAction)changeRight:(id)sender; - (IBAction)resetValues:(id)sender; - (void)updateSize; @end PRICE-1.3.0/PRCCrop.m010064400017500000012000000047341244302520600133050ustar00multixusers// // PRCCrop.m // PRICE // // Created by Riccardo Mottola on Fri Jan 28 2005. // Copyright (c) 2005-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCCrop.h" #import "MyDocument.h" #import "PRCrop.h" @implementation PRCCrop - (id)init { if ((self = [super init])) { filter = [[PRCrop alloc] init]; } return self; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!cropWindow) [NSBundle loadNibNamed:@"Crop" owner:self]; [cropWindow makeKeyAndOrderFront:nil]; origWidth = [[[[NSDocumentController sharedDocumentController] currentDocument] activeImage] width]; origHeight = [[[[NSDocumentController sharedDocumentController] currentDocument] activeImage] height]; [self updateSize]; [self parametersChanged:self]; } - (NSArray *)encodeParameters { NSArray *parameters; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:[topField intValue]], [NSNumber numberWithInt:[bottomField intValue]], [NSNumber numberWithInt:[leftField intValue]], [NSNumber numberWithInt:[rightField intValue]], nil]; return parameters; } - (IBAction)changeTop:(id)sender { [self updateSize]; [self parametersChanged:self]; } - (IBAction)changeBottom:(id)sender { [self updateSize]; [self parametersChanged:self]; } - (IBAction)changeLeft:(id)sender { [self updateSize]; [self parametersChanged:self]; } - (IBAction)changeRight:(id)sender { [self updateSize]; [self parametersChanged:self]; } - (IBAction)resetValues:(id)sender { [topField setIntValue:0]; [bottomField setIntValue:0]; [leftField setIntValue:0]; [rightField setIntValue:0]; [self parametersChanged:self]; } - (void)updateSize { [widthField setIntValue:(origWidth - [rightField intValue] - [leftField intValue])]; [heightField setIntValue:(origHeight - [topField intValue] - [bottomField intValue])]; } - (void)closeFilterPanel { [cropWindow performClose:nil]; } @end PRICE-1.3.0/PRCCumHisto.h010064400017500000012000000015031105335723300141230ustar00multixusers// // PRCCumHisto.h // PRICE // Cumulative Histogram Controller // // Created by Riccardo Mottola on Thu Dec 18 2003. // Copyright (c) 2003 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCHistogram.h" #import "PRCumHisto.h" @interface PRCCumHisto : PRCHistogram { IBOutlet PRCumHisto *histoView; } - (IBAction)showHistogram:(id)sender; @end PRICE-1.3.0/PRCCumHisto.m010064400017500000012000000021101105335723300141230ustar00multixusers// // PRCCumHisto.m // PRICE // Cumulative Histogram Controller // // Created by Riccardo Mottola on Thu Dec 18 2003. // Copyright (c) 2003 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "MyDocument.h" #import "PRCCumHisto.h" @implementation PRCCumHisto - (IBAction)showHistogram:(id)sender { if (!histoWindow) [NSBundle loadNibNamed:@"CumulHistogram" owner:self]; [histoWindow makeKeyAndOrderFront:nil]; [histoView setImage :[[[NSDocumentController sharedDocumentController] currentDocument] activeImage]]; [histoView calculateHistogram]; [histoView setNeedsDisplay: YES]; } @end PRICE-1.3.0/PRCCurves.h010064400017500000012000000024701232127452500136440ustar00multixusers// // PRCCurves.h // PRICE // // Created by Riccardo Mottola on 7 August 2011. // Copyright 2011-2014 Riccardo Mottola. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import #import "PRCurvesView.h" #import "PRFilterController.h" @class NSBezierPath; @interface PRCCurves : PRFilterController { IBOutlet NSWindow *curvesWindow; IBOutlet PRCurvesView *curvesView; IBOutlet NSTextField *blackPointField; IBOutlet NSTextField *whitePointField; IBOutlet NSStepper *blackPointStepper; IBOutlet NSStepper *whitePointStepper; NSBezierPath *currPath; } - (IBAction)recalculateCurves:(id)sender; - (IBAction)curvesReset:(id)sender; - (IBAction)setBlackPoint:(id)sender; - (IBAction)setWhitePoint:(id)sender; - (void)setBlackPointValue:(int)val; - (void)setWhitePointValue:(int)val; @end PRICE-1.3.0/PRCCurves.m010064400017500000012000000102761243640337500136600ustar00multixusers// // PRCCurves.m // PRICE // // Created by Riccardo Mottola on 7 August 2011. // Copyright 2011-2014 Riccardo Mottola. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "MyDocument.h" #import "PRCCurves.h" #import "PRCurves.h" @implementation PRCCurves - (id)init { if ((self = [super init])) { filter = [[PRCurves alloc] init]; } return self; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!curvesWindow) [NSBundle loadNibNamed:@"Curves" owner:self]; [curvesView setFilterController: self]; currPath = [curvesView luminancePath]; // [self curvesReset: self]; PRImage *image = [[[NSDocumentController sharedDocumentController] currentDocument] activeImage]; [curvesView calculateHistogram: image]; [curvesWindow makeKeyAndOrderFront:nil]; [self parametersChanged:self]; } - (NSArray *)encodeParameters { NSArray *parameters; NSMutableArray *arrayL; NSMutableArray *arrayR; NSMutableArray *arrayG; NSMutableArray *arrayB; unsigned i; if ([curvesView hasColor]) { arrayR = [[NSMutableArray alloc] initWithCapacity: UCHAR_MAX]; arrayG = [[NSMutableArray alloc] initWithCapacity: UCHAR_MAX]; arrayB = [[NSMutableArray alloc] initWithCapacity: UCHAR_MAX]; for (i = 0; i <= UCHAR_MAX; i++) { [arrayR addObject: [NSNumber numberWithUnsignedInt: curvesView->funL[i]]]; [arrayG addObject: [NSNumber numberWithUnsignedInt: curvesView->funL[i]]]; [arrayB addObject: [NSNumber numberWithUnsignedInt: curvesView->funL[i]]]; } /* encode parameters */ parameters = [NSArray arrayWithObjects: arrayR, arrayG, arrayB, nil]; } else { arrayL = [[NSMutableArray alloc] initWithCapacity: UCHAR_MAX]; for (i = 0; i <= UCHAR_MAX; i++) [arrayL addObject: [NSNumber numberWithUnsignedInt: curvesView->funL[i]]]; /* encode parameters */ parameters = [NSArray arrayWithObjects: arrayL, nil]; } return parameters; } - (void)closeFilterPanel { [curvesWindow performClose:nil]; } - (IBAction)recalculateCurves:(id)sender { [curvesView calculateTransformedHistograms]; } - (IBAction)parametersChanged:(id)sender { [self recalculateCurves:sender]; [super parametersChanged: sender]; [curvesView setNeedsDisplay: YES]; } - (IBAction)curvesReset:(id)sender { /* first reconstruct the curves from scratch */ [curvesView initPathLumi]; [curvesView initPathR]; [curvesView initPathG]; [curvesView initPathB]; /* make white and black points coherent */ [self setWhitePointValue: 255]; [curvesView setWhitePoint: 255]; [self setBlackPointValue: 0]; [curvesView setBlackPoint: 0]; [self parametersChanged:sender]; } - (void)setBlackPointValue:(int)val { [blackPointField setIntValue: val]; [blackPointStepper setIntValue: val]; NSLog(@"black point: %d", val); } - (void)setWhitePointValue:(int)val { [whitePointField setIntValue: val]; [whitePointStepper setIntValue: val]; NSLog(@"white point: %d", val); } - (IBAction)setBlackPoint:(id)sender { int point; point = [sender intValue]; if (point > 254) point = 254; else if (point < 0) point = 0; else if (point >= [whitePointField intValue]) point = [whitePointField intValue]; [self setBlackPointValue:point]; [curvesView setBlackPoint: point]; [self parametersChanged:sender]; } - (IBAction)setWhitePoint:(id)sender { int point; point = [sender intValue]; if (point > 255) point = 255; else if (point < 1) point = 1; else if (point <= [blackPointField intValue]) point = [blackPointField intValue]; [self setWhitePointValue: point]; [curvesView setWhitePoint: point]; [self parametersChanged:sender]; } @end PRICE-1.3.0/PRCCustTraceEdges.h010064400017500000012000000036251134450706000152420ustar00multixusers// // PRCCustTraceEdges.h // PRICE // // Created by Riccardo Mottola on Thu Mar 18 2004. // Copyright (c) 2004-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilterController.h" @interface PRCCustTraceEdges : PRFilterController { IBOutlet NSWindow *edgeWindow; IBOutlet NSSlider *thresholdSlider; IBOutlet NSButton *zeroCrossCheck; IBOutlet NSTextField *thresholdField; IBOutlet NSPopUpButton *filterType; float thresholdLevel; IBOutlet NSButton *enableCheck1; IBOutlet NSButton *separableCheck1; IBOutlet NSPopUpButton *formSelect1; IBOutlet NSTextField *sizeField1; IBOutlet NSSlider *sizeSlider1; IBOutlet NSButton *enableCheck2; IBOutlet NSButton *separableCheck2; IBOutlet NSPopUpButton *formSelect2; IBOutlet NSTextField *sizeField2; IBOutlet NSSlider *sizeSlider2; IBOutlet NSButton *enableCheck3; IBOutlet NSButton *separableCheck3; IBOutlet NSPopUpButton *formSelect3; IBOutlet NSTextField *sizeField3; IBOutlet NSSlider *sizeSlider3; } - (IBAction)changeSize1:(id)sender; - (IBAction)changeSize2:(id)sender; - (IBAction)changeSize3:(id)sender; - (IBAction)enablePane1:(id)sender; - (IBAction)enablePane2:(id)sender; - (IBAction)enablePane3:(id)sender; - (IBAction)toggleStatePane1:(BOOL) state; - (IBAction)toggleStatePane2:(BOOL) state; - (IBAction)toggleStatePane3:(BOOL) state; - (IBAction)changeThreshold:(id)sender; @end PRICE-1.3.0/PRCCustTraceEdges.m010064400017500000012000000166161134450706000152530ustar00multixusers// // PRCCustTraceEdges.m // PRICE // // Created by Riccardo Mottola on Thu Mar 18 2004. // Copyright (c) 2004-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCCustTraceEdges.h" #import "PRCustTraceEdges.h" #import "MyDocument.h" #import "PRMedian.h" @implementation PRCCustTraceEdges - (id)init { if ((self = [super init])) { filter = [[PRCustTraceEdges alloc] init]; } return self; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!edgeWindow) [NSBundle loadNibNamed:@"CustTraceEdges" owner:self]; [edgeWindow makeKeyAndOrderFront:nil]; /* edge tracer NIB defaults setting */ [thresholdSlider setEnabled:YES]; [thresholdField setEnabled:YES]; if ([[filterType selectedItem] tag] >= 7) [zeroCrossCheck setEnabled:YES]; thresholdLevel = [thresholdField floatValue]; /* median image panes enables from NIB */ if ([enableCheck1 state] == NSOffState) [self toggleStatePane1:NO]; if ([enableCheck2 state] == NSOffState) [self toggleStatePane2:NO]; if ([enableCheck3 state] == NSOffState) [self toggleStatePane3:NO]; [self parametersChanged:self]; } - (NSArray *)encodeParameters { BOOL enable1, enable2, enable3; enum medianForms theForm1, theForm2, theForm3; BOOL isSeparable1, isSeparable2, isSeparable3; int theSize1, theSize2, theSize3; BOOL zeroCrossOn; NSArray *parameters; theForm1 = theForm2 = theForm3 = 0; isSeparable1 = isSeparable2 = isSeparable3 = 0; theSize1 = theSize2 = theSize3 = 0; if ([enableCheck1 state] == NSOnState) { enable1 = YES; if ([separableCheck1 state] == NSOnState) isSeparable1 = YES; else isSeparable1 = NO; switch ([[formSelect1 selectedItem] tag]) { case 1: theForm1 = HORIZONTAL_F; break; case 2: theForm1 = VERTICAL_F; break; case 3: theForm1 = CROSS_F; break; case 4: theForm1 = BOX_F; break; default: NSLog(@"Unrecognized form selected"); theForm1 = BOX_F; } theSize1 = [sizeSlider1 intValue]; } else enable1 = NO; if ([enableCheck2 state] == NSOnState) { enable2 = YES; if ([separableCheck2 state] == NSOnState) isSeparable2 = YES; else isSeparable2 = NO; switch ([[formSelect2 selectedItem] tag]) { case 1: theForm2 = HORIZONTAL_F; break; case 2: theForm2 = VERTICAL_F; break; case 3: theForm2 = CROSS_F; break; case 4: theForm2 = BOX_F; break; default: NSLog(@"Unrecognized form selected"); theForm2 = BOX_F; } theSize2 = [sizeSlider2 intValue]; } else enable2 = NO; if ([enableCheck3 state] == NSOnState) { enable3 = YES; if ([separableCheck3 state] == NSOnState) isSeparable3 = YES; else isSeparable3 = NO; switch ([[formSelect3 selectedItem] tag]) { case 1: theForm3 = HORIZONTAL_F; break; case 2: theForm3 = VERTICAL_F; break; case 3: theForm3 = CROSS_F; break; case 4: theForm3 = BOX_F; break; default: NSLog(@"Unrecognized form selected"); theForm3 = BOX_F; } theSize3 = [sizeSlider3 intValue]; } else enable3 = NO; if ([zeroCrossCheck state] == NSOnState) zeroCrossOn = YES; else zeroCrossOn = NO; /* set automatically zero cross */ if ([[filterType selectedItem] tag] < 7) { [zeroCrossCheck setState:NO]; zeroCrossOn = NO; } parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt: [[filterType selectedItem] tag]], [NSNumber numberWithFloat: thresholdLevel], [NSNumber numberWithBool: zeroCrossOn], [NSNumber numberWithBool: enable1], [NSNumber numberWithInt: theForm1], [NSNumber numberWithInt: theSize1], [NSNumber numberWithBool: isSeparable1], [NSNumber numberWithBool: enable2], [NSNumber numberWithInt: theForm2], [NSNumber numberWithInt: theSize2], [NSNumber numberWithBool: isSeparable2], [NSNumber numberWithBool: enable3], [NSNumber numberWithInt: theForm3], [NSNumber numberWithInt: theSize3], [NSNumber numberWithBool: isSeparable3], nil]; return parameters; } - (void)closeFilterPanel { [edgeWindow performClose:nil]; } - (IBAction)changeSize1:(id)sender { [sizeField1 setIntValue :[sizeSlider1 intValue] * 2 + 1]; [self parametersChanged:sender]; } - (IBAction)changeSize2:(id)sender { [sizeField2 setIntValue :[sizeSlider2 intValue] * 2 + 1]; [self parametersChanged:sender]; } - (IBAction)changeSize3:(id)sender { [sizeField3 setIntValue :[sizeSlider3 intValue] * 2 + 1]; [self parametersChanged:sender]; } - (IBAction)enablePane1:(id)sender { if ([enableCheck1 state] == NSOnState) [self toggleStatePane1:YES]; else [self toggleStatePane1:NO]; [self parametersChanged:sender]; } - (IBAction)enablePane2:(id)sender { if ([enableCheck2 state] == NSOnState) [self toggleStatePane2:YES]; else [self toggleStatePane2:NO]; [self parametersChanged:sender]; } - (IBAction)enablePane3:(id)sender { if ([enableCheck3 state] == NSOnState) [self toggleStatePane3:YES]; else [self toggleStatePane3:NO]; [self parametersChanged:sender]; } - (IBAction)toggleStatePane1:(BOOL) state { if (state == NSOnState) { [separableCheck1 setEnabled:YES]; [formSelect1 setEnabled:YES]; [sizeSlider1 setEnabled:YES]; } else { [separableCheck1 setEnabled:NO]; [formSelect1 setEnabled:NO]; [sizeSlider1 setEnabled:NO]; } } - (IBAction)toggleStatePane2:(BOOL) state { if (state == NSOnState) { [separableCheck2 setEnabled:YES]; [formSelect2 setEnabled:YES]; [sizeSlider2 setEnabled:YES]; } else { [separableCheck2 setEnabled:NO]; [formSelect2 setEnabled:NO]; [sizeSlider2 setEnabled:NO]; } } - (IBAction)toggleStatePane3:(BOOL) state { if (state == NSOnState) { [separableCheck3 setEnabled:YES]; [formSelect3 setEnabled:YES]; [sizeSlider3 setEnabled:YES]; } else { [separableCheck3 setEnabled:NO]; [formSelect3 setEnabled:NO]; [sizeSlider3 setEnabled:NO]; } } - (IBAction)changeThreshold:(id)sender { thresholdLevel = [sender floatValue]; [thresholdField setFloatValue:thresholdLevel]; [self parametersChanged:sender]; } @end PRICE-1.3.0/PRCDFTHighPass.h010064400017500000012000000024311134446517000144400ustar00multixusers// // PRCDFTHighPass.h // PRICE // DFT based HighPass filter controller // // Created by Riccardo Mottola on Mon Oct 13 2003. // Copyright (c) 2003-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilterController.h" @interface PRCDFTHighPass : PRFilterController { IBOutlet NSWindow *filterWindow; IBOutlet NSButton *autoRangeCheck; IBOutlet NSSlider *passBandSlider; IBOutlet NSSlider *stopBandSlider; IBOutlet NSTextField *passBandVal; IBOutlet NSTextField *passBandValPi; IBOutlet NSTextField *stopBandVal; IBOutlet NSTextField *stopBandValPi; float passBandFreq; float stopBandFreq; BOOL autoRange; } - (IBAction)dftHPAutoRange:(id)sender; - (IBAction)changeStopBand:(id)sender; - (IBAction)changePassBand:(id)sender; @end PRICE-1.3.0/PRCDFTHighPass.m010064400017500000012000000117171134446617100144560ustar00multixusers// // PRCDFTHighPass.m // PRICE // // Created by Riccardo Mottola on Mon Oct 13 2003. // Copyright (c) 2003-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCDFTHighPass.h" #import "MyDocument.h" #import "PRDFTHighPass.h" #include @implementation PRCDFTHighPass - (id)init { if ((self = [super init])) { filter = [[PRDFTHighPass alloc] init]; } return self; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!filterWindow) [NSBundle loadNibNamed:@"DFTHighPass" owner:self]; [filterWindow makeKeyAndOrderFront:nil]; /* now we read the default values and initialize all fields */ if ([autoRangeCheck state] == NSOnState) autoRange = YES; else autoRange = NO; passBandFreq = [passBandSlider floatValue]; [passBandVal setFloatValue:passBandFreq]; [passBandValPi setFloatValue:(passBandFreq*M_PI)]; stopBandFreq = [stopBandSlider floatValue]; [stopBandVal setFloatValue:stopBandFreq]; [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; [self parametersChanged:self]; } - (NSArray *)encodeParameters { NSArray *parameters; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithBool:autoRange], [NSNumber numberWithFloat:passBandFreq], [NSNumber numberWithFloat:stopBandFreq], nil]; return parameters; } - (void)closeFilterPanel { [filterWindow performClose:nil]; } - (IBAction)dftHPAutoRange:(id)sender { if ([autoRangeCheck state] == NSOnState) autoRange = YES; else autoRange = NO; [self parametersChanged:sender]; } - (IBAction)changeStopBand:(id)sender { if (sender == stopBandValPi) { stopBandFreq = [sender floatValue] / M_PI; if (stopBandFreq > 1) { stopBandFreq = 1; [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; } else if (stopBandFreq < 0) { stopBandFreq = 0; [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; } [stopBandVal setFloatValue:stopBandFreq]; [stopBandSlider setFloatValue:stopBandFreq]; } else if (sender == stopBandVal) { stopBandFreq = [sender floatValue]; if (stopBandFreq > 1) { stopBandFreq = 1; [stopBandVal setFloatValue:stopBandFreq]; } else if (passBandFreq < 0) { stopBandFreq = 0; [stopBandVal setFloatValue:stopBandFreq]; } [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; [stopBandSlider setFloatValue:stopBandFreq]; } else { stopBandFreq = [sender floatValue]; [stopBandVal setFloatValue:stopBandFreq]; [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; } if (stopBandFreq > passBandFreq) { passBandFreq = stopBandFreq; [passBandVal setFloatValue:passBandFreq]; [passBandValPi setFloatValue:(passBandFreq*M_PI)]; [passBandSlider setFloatValue:passBandFreq]; } [self parametersChanged:sender]; } - (IBAction)changePassBand:(id)sender { if (sender == passBandValPi) { passBandFreq = [sender floatValue] / M_PI; if (passBandFreq > 1) { passBandFreq = 1; [passBandValPi setFloatValue:(passBandFreq*M_PI)]; } else if (passBandFreq < 0) { passBandFreq = 0; [passBandValPi setFloatValue:(passBandFreq*M_PI)]; } [passBandVal setFloatValue:passBandFreq]; [passBandSlider setFloatValue:passBandFreq]; } else if (sender == passBandVal) { passBandFreq = [sender floatValue]; if (passBandFreq > 1) { passBandFreq = 1; [passBandVal setFloatValue:passBandFreq]; } else if (passBandFreq < 0) { passBandFreq = 0; [passBandVal setFloatValue:passBandFreq]; } [passBandValPi setFloatValue:(passBandFreq*M_PI)]; [passBandSlider setFloatValue:passBandFreq]; } else { passBandFreq = [sender floatValue]; [passBandVal setFloatValue:passBandFreq]; [passBandValPi setFloatValue:(passBandFreq*M_PI)]; } if (passBandFreq < stopBandFreq) { stopBandFreq = passBandFreq; [stopBandVal setFloatValue:stopBandFreq]; [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; [stopBandSlider setFloatValue:stopBandFreq]; } [self parametersChanged:sender]; } @end PRICE-1.3.0/PRCDFTLowPass.h010064400017500000012000000024261134446517000143260ustar00multixusers// // PRCDFTLowPass.h // PRICE // DFT based LowPass filter controller // // Created by Riccardo Mottola on Sat Sep 13 2003. // Copyright (c) 2003-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilterController.h" @interface PRCDFTLowPass : PRFilterController { IBOutlet NSWindow *filterWindow; IBOutlet NSButton *autoRangeCheck; IBOutlet NSSlider *passBandSlider; IBOutlet NSSlider *stopBandSlider; IBOutlet NSTextField *passBandVal; IBOutlet NSTextField *passBandValPi; IBOutlet NSTextField *stopBandVal; IBOutlet NSTextField *stopBandValPi; float passBandFreq; float stopBandFreq; BOOL autoRange; } - (IBAction)dftLPAutoRange:(id)sender; - (IBAction)changeStopBand:(id)sender; - (IBAction)changePassBand:(id)sender; @end PRICE-1.3.0/PRCDFTLowPass.m010064400017500000012000000117631134446617100143410ustar00multixusers// // PRCDFTLowPass.m // PRICE // DFT based LowPass filter controller // // Created by Riccardo Mottola on Sat Sep 13 2003. // Copyright (c) 2003-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCDFTLowPass.h" #import "MyDocument.h" #include "math.h" #import "PRDFTLowPass.h" @implementation PRCDFTLowPass - (id)init { if ((self = [super init])) { filter = [[PRDFTLowPass alloc] init]; } return self; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!filterWindow) [NSBundle loadNibNamed:@"DFTLowPass" owner:self]; [filterWindow makeKeyAndOrderFront:nil]; /* now we read the default values and initialize all fields */ if ([autoRangeCheck state] == NSOnState) autoRange = YES; else autoRange = NO; passBandFreq = [passBandSlider floatValue]; [passBandVal setFloatValue:passBandFreq]; [passBandValPi setFloatValue:(passBandFreq*M_PI)]; stopBandFreq = [stopBandSlider floatValue]; [stopBandVal setFloatValue:stopBandFreq]; [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; [self parametersChanged:self]; } - (NSArray *)encodeParameters { NSArray *parameters; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithBool:autoRange], [NSNumber numberWithFloat:passBandFreq], [NSNumber numberWithFloat:stopBandFreq], nil]; return parameters; } - (void)closeFilterPanel { [filterWindow performClose:nil]; } - (IBAction)dftLPAutoRange:(id)sender { if ([autoRangeCheck state] == NSOnState) autoRange = YES; else autoRange = NO; [self parametersChanged:sender]; } - (IBAction)changeStopBand:(id)sender { if (sender == stopBandValPi) { stopBandFreq = [sender floatValue] / M_PI; if (stopBandFreq > 1) { stopBandFreq = 1; [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; } else if (stopBandFreq < 0) { stopBandFreq = 0; [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; } [stopBandVal setFloatValue:stopBandFreq]; [stopBandSlider setFloatValue:stopBandFreq]; } else if (sender == stopBandVal) { stopBandFreq = [sender floatValue]; if (stopBandFreq > 1) { stopBandFreq = 1; [stopBandVal setFloatValue:stopBandFreq]; } else if (passBandFreq < 0) { stopBandFreq = 0; [stopBandVal setFloatValue:stopBandFreq]; } [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; [stopBandSlider setFloatValue:stopBandFreq]; } else { stopBandFreq = [sender floatValue]; [stopBandVal setFloatValue:stopBandFreq]; [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; } if (passBandFreq > stopBandFreq) { passBandFreq = stopBandFreq; [passBandVal setFloatValue:passBandFreq]; [passBandValPi setFloatValue:(passBandFreq*M_PI)]; [passBandSlider setFloatValue:passBandFreq]; } [self parametersChanged:sender]; } - (IBAction)changePassBand:(id)sender { if (sender == passBandValPi) { passBandFreq = [sender floatValue] / M_PI; if (passBandFreq > 1) { passBandFreq = 1; [passBandValPi setFloatValue:(passBandFreq*M_PI)]; } else if (passBandFreq < 0) { passBandFreq = 0; [passBandValPi setFloatValue:(passBandFreq*M_PI)]; } [passBandVal setFloatValue:passBandFreq]; [passBandSlider setFloatValue:passBandFreq]; } else if (sender == passBandVal) { passBandFreq = [sender floatValue]; if (passBandFreq > 1) { passBandFreq = 1; [passBandVal setFloatValue:passBandFreq]; } else if (passBandFreq < 0) { passBandFreq = 0; [passBandVal setFloatValue:passBandFreq]; } [passBandValPi setFloatValue:(passBandFreq*M_PI)]; [passBandSlider setFloatValue:passBandFreq]; } else { passBandFreq = [sender floatValue]; [passBandVal setFloatValue:passBandFreq]; [passBandValPi setFloatValue:(passBandFreq*M_PI)]; } if (stopBandFreq < passBandFreq) { stopBandFreq = passBandFreq; [stopBandVal setFloatValue:stopBandFreq]; [stopBandValPi setFloatValue:(stopBandFreq*M_PI)]; [stopBandSlider setFloatValue:stopBandFreq]; } [self parametersChanged:sender]; } @end PRICE-1.3.0/PRCEqualize.h010064400017500000012000000015341134450706000141510ustar00multixusers// // PRCEqualize.h // PRICE // Image Equalization Controller // // Created by Riccardo Mottola on Fri Dec 05 2003. // Copyright (c) 2003-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilterController.h" @interface PRCEqualize : PRFilterController { IBOutlet NSWindow *equalWindow; IBOutlet NSPopUpButton *colorSpaceChoice; } @end PRICE-1.3.0/PRCEqualize.m010064400017500000012000000030731137447213100141610ustar00multixusers// // PRCEqualize.m // PRICE // Image Equalization Controller // // Created by Riccardo Mottola on Fri Dec 05 2003. // Copyright (c) 2003-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCEqualize.h" #import "PREqualize.h" #import "MyDocument.h" @implementation PRCEqualize - (id)init { if ((self = [super init])) { filter = [[PREqualize alloc] init]; } return self; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!equalWindow) [NSBundle loadNibNamed:@"Equalize" owner:self]; [equalWindow makeKeyAndOrderFront:nil]; [self parametersChanged:self]; } - (NSArray *)encodeParameters { NSArray *parameters; int index; int space; index = [colorSpaceChoice indexOfSelectedItem]; space = COLOR_SPACE_RGB; if (index == 0) space = COLOR_SPACE_RGB; else if (index == 1) space = COLOR_SPACE_YUV; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:space], nil]; return parameters; } - (void)closeFilterPanel { [equalWindow performClose:nil]; } @end PRICE-1.3.0/PRCFourier.h010064400017500000012000000013711110735716600140130ustar00multixusers// // PRCFourier.h // PRICE // Fourier Controller // // Created by Riccardo Mottola on Fri Nov 14 2008. // Copyright (c) 2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import @interface PRCFourier : NSObject { } - (IBAction)transformImage:(id)sender; @end PRICE-1.3.0/PRCFourier.m010064400017500000012000000017231110735716600140210ustar00multixusers// // PRCFourier.m // PRICE // Fourier Controller // // Created by Riccardo Mottola on Fri Nov 14 2008. // Copyright (c) 2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCFourier.h" #import "PRFourier.h" #import "MyDocument.h" @implementation PRCFourier - (IBAction)transformImage:(id)sender { PRFourier *filter; filter = [[PRFourier alloc] init]; [[[NSDocumentController sharedDocumentController] currentDocument] runFilter:filter with:nil]; [filter release]; } @end PRICE-1.3.0/PRCGrayscale.h010064400017500000012000000015351134446274500143170ustar00multixusers// // PRCGrayscale.h // PRICE // Grayscale Conversion Controller // // Created by Riccardo Mottola on Tue Jan 16 2007. // Copyright (c) 2007-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilterController.h" @interface PRCGrayscale : PRFilterController { IBOutlet NSWindow *grayWindow; IBOutlet NSPopUpButton *methodChoice; } @end PRICE-1.3.0/PRCGrayscale.m010064400017500000012000000031641147034304000143060ustar00multixusers// // PRCGrayscale.m // PRICE // Grayscale Conversion Controller // // Created by Riccardo Mottola on Tue Jan 16 2007. // Copyright (c) 2007-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCGrayscale.h" #import "PRGrayscaleFilter.h" @implementation PRCGrayscale - (id)init { if ((self = [super init])) { filter = [[PRGrayscaleFilter alloc] init]; } return self; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!grayWindow) [NSBundle loadNibNamed:@"Grayscale" owner:self]; [grayWindow makeKeyAndOrderFront:nil]; [self parametersChanged:self]; } - (NSArray *)encodeParameters { NSArray *parameters; int index; int method; index = [methodChoice indexOfSelectedItem]; if (index == 0) method = METHOD_AVERAGE; else if (index == 1) method = METHOD_LUMINANCE; else method = -1; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:method], nil]; return parameters; } - (void)closeFilterPanel { [grayWindow performClose:nil]; } @end PRICE-1.3.0/PRCHisto.h010064400017500000012000000014051105335723300134570ustar00multixusers// // PRCHisto.h // PRICE // Histogram Controller // // Created by Riccardo Mottola on Thu Dec 18 2003. // Copyright (c) 2003 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCHistogram.h" #import "PRHisto.h" @interface PRCHisto : PRCHistogram { IBOutlet PRHisto *histoView; } @end PRICE-1.3.0/PRCHisto.m010064400017500000012000000020571105335723300134700ustar00multixusers// // PRCHisto.m // PRICE // Histogram Controller // // Created by Riccardo Mottola on Thu Dec 18 2003. // Copyright (c) 2003 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "MyDocument.h" #import "PRCHisto.h" @implementation PRCHisto - (IBAction)showHistogram:(id)sender { if (!histoWindow) [NSBundle loadNibNamed:@"Histogram" owner:self]; [histoWindow makeKeyAndOrderFront:nil]; [histoView setImage :[[[NSDocumentController sharedDocumentController] currentDocument] activeImage]]; [histoView calculateHistogram]; [histoView setNeedsDisplay: YES]; } @end PRICE-1.3.0/PRCHistogram.h010064400017500000012000000014371105335723300143330ustar00multixusers// // PRCHistogram.h // PRICE // // Created by Riccardo Mottola on Thu Dec 11 2003. // Copyright (c) 2003 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRHistogram.h" @interface PRCHistogram : NSObject { IBOutlet NSWindow *histoWindow; } - (IBAction)showHistogram:(id)sender; @end PRICE-1.3.0/PRCHistogram.m010064400017500000012000000015561105335723300143420ustar00multixusers// // PRCHistogram.m // PRICE // // Created by Riccardo Mottola on Thu Dec 11 2003. // Copyright (c) 2003 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "MyDocument.h" #import "PRCHistogram.h" @implementation PRCHistogram - (IBAction)showHistogram:(id)sender { if (!histoWindow) [NSBundle loadNibNamed:@"Histogram" owner:self]; [histoWindow makeKeyAndOrderFront:nil]; } @end PRICE-1.3.0/PRCInvert.h010064400017500000012000000013741110735716600136520ustar00multixusers// // PRCInvert.h // PRICE // Image Inversion Controller // // Created by Riccardo Mottola on Fri Nov 14 2008. // Copyright (c) 2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import @interface PRCInvert : NSObject { } - (IBAction)makeInverse:(id)sender; @end PRICE-1.3.0/PRCInvert.m010064400017500000012000000017241110735716600136560ustar00multixusers// // PRCInvert.m // PRICE // Image Inversion Controller // // Created by Riccardo Mottola on Fri Nov 14 2008. // Copyright (c) 2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCInvert.h" #import "PRInvert.h" #import "MyDocument.h" @implementation PRCInvert - (IBAction)makeInverse:(id)sender { PRInvert *filter; filter = [[PRInvert alloc] init]; [[[NSDocumentController sharedDocumentController] currentDocument] runFilter:filter with:nil]; [filter release]; } @end PRICE-1.3.0/PRCMedian.h010064400017500000012000000017051134450706000135670ustar00multixusers// // PRCMedian.h // PRICE // // Created by Riccardo Mottola on Thu Mar 25 2004. // Copyright (c) 2004-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilterController.h" @interface PRCMedian : PRFilterController { IBOutlet NSWindow *medianWindow; IBOutlet NSButton *separableCheck; IBOutlet NSPopUpButton *formSelect; IBOutlet NSTextField *sizeField; IBOutlet NSSlider *sizeSlider; } - (IBAction)changeSize:(id)sender; @end PRICE-1.3.0/PRCMedian.m010064400017500000012000000042211134450706000135700ustar00multixusers// // PRCMedian.m // PRICE // // Created by Riccardo Mottola on Thu Mar 25 2004. // Copyright (c) 2004-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCMedian.h" #import "PRMedian.h" #import "MyDocument.h" @implementation PRCMedian - (id)init { if ((self = [super init])) { filter = [[PRMedian alloc] init]; } return self; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!medianWindow) [NSBundle loadNibNamed:@"Median" owner:self]; [medianWindow makeKeyAndOrderFront:nil]; [self parametersChanged:self]; } - (NSArray *)encodeParameters { enum medianForms theForm; BOOL isSeparable; int theSize; NSArray *parameters; if ([separableCheck state] == NSOnState) isSeparable = YES; else isSeparable = NO; switch ([[formSelect selectedItem] tag]) { case 1: theForm = HORIZONTAL_F; break; case 2: theForm = VERTICAL_F; break; case 3: theForm = CROSS_F; break; case 4: theForm = BOX_F; break; default: NSLog(@"Unrecognized form selected"); theForm = BOX_F; } theSize = [sizeSlider intValue]; parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt: theForm], [NSNumber numberWithInt: theSize], [NSNumber numberWithBool: isSeparable], nil]; return parameters; } - (IBAction)changeSize:(id)sender { [sizeField setIntValue :[sizeSlider intValue] * 2 + 1]; [self parametersChanged:sender]; } - (void)closeFilterPanel { [medianWindow performClose:nil]; } @end PRICE-1.3.0/PRCProgress.h010064400017500000012000000020321134352212600141670ustar00multixusers// // PRCProgress.h // PRICE // // Created by Riccardo Mottola on Mon Jun 21 2004. // Copyright (c) 2004 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import @protocol FilterProgress - (void)setTitle:(NSString *)title; - (void)setActivity:(NSString *)activity; - (void)setProgress:(double)progress; @end @interface PRCProgress : NSObject { IBOutlet NSWindow *progressPanel; IBOutlet NSProgressIndicator *progressBar; IBOutlet NSTextField *activityDescription; } - (IBAction)showProgress:(id)sender; @end PRICE-1.3.0/PRCProgress.m010064400017500000012000000024711200647561600142130ustar00multixusers// // PRCProgress.m // PRICE // // Created by Riccardo Mottola on Mon Jun 21 2004. // Copyright (c) 2004-2012 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCProgress.h" @implementation PRCProgress - (IBAction)showProgress:(id)sender { if (!progressPanel) [NSBundle loadNibNamed:@"ProgressPanel" owner:self]; [progressPanel makeKeyAndOrderFront:nil]; } - (void)setTitle:(NSString *)title { [progressPanel setTitle:title]; [progressPanel displayIfNeeded]; } - (void)setProgress:(double)progress { [progressBar setDoubleValue:progress]; [progressPanel displayIfNeeded]; [progressPanel flushWindowIfNeeded]; } - (void)setActivity:(NSString *)title { [activityDescription setStringValue:title]; [progressPanel displayIfNeeded]; } - (void) dealloc { [progressPanel close]; [super dealloc]; } @end PRICE-1.3.0/PRCScale.h010064400017500000012000000025151244262162500134250ustar00multixusers// // PRCScale.h // PRICE // // Created by Riccardo Mottola on Wed Jan 19 2005. // Copyright (c) 2005-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilterController.h" @interface PRCScale : PRFilterController { IBOutlet NSWindow *scaleWindow; IBOutlet NSTextField *pixelsXField; IBOutlet NSTextField *pixelsYField; IBOutlet NSTextField *percentXField; IBOutlet NSTextField *percentYField; IBOutlet NSButton *uniformToggle; IBOutlet NSPopUpButton *methodSelect; NSInteger pixelsX; NSInteger pixelsY; NSInteger originalWidth; NSInteger originalHeight; float ratio; } - (IBAction)changePixelsX:(id)sender; - (IBAction)changePixelsY:(id)sender; - (IBAction)changePercentX:(id)sender; - (IBAction)changePercentY:(id)sender; @end PRICE-1.3.0/PRCScale.m010064400017500000012000000075561244262162500134440ustar00multixusers// // PRCScale.m // PRICE // // Created by Riccardo Mottola on Wed Jan 19 2005. // Copyright (c) 2005-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #include #import "PRCScale.h" #import "PRScale.h" #import "MyDocument.h" @implementation PRCScale - (id)init { if ((self = [super init])) { filter = [[PRScale alloc] init]; } return self; } - (IBAction)changePixelsX:(id)sender { pixelsX = [pixelsXField intValue]; [percentXField setFloatValue:((float)pixelsX / originalWidth *100)]; if ([uniformToggle intValue]) { pixelsY = (int)rint(pixelsX * ratio); [pixelsYField setIntValue:pixelsY]; [percentYField setFloatValue:[percentXField floatValue]]; } [self parametersChanged:self]; } - (IBAction)changePixelsY:(id)sender { pixelsY = [pixelsYField intValue]; [percentYField setFloatValue:((float)pixelsY / originalHeight *100)]; if ([uniformToggle intValue]) { pixelsX = (int)rint(pixelsY / ratio); [pixelsXField setIntValue:pixelsX]; [percentXField setFloatValue:[percentYField floatValue]]; } [self parametersChanged:self]; } - (IBAction)changePercentX:(id)sender { float percentX; percentX = [percentXField floatValue]; pixelsX = (int)rint(originalWidth * (percentX / 100)); [pixelsXField setIntValue:pixelsX]; if ([uniformToggle intValue]) { pixelsY = (int)rint(pixelsX * ratio); [pixelsYField setIntValue:pixelsY]; [percentYField setFloatValue:percentX]; } [self parametersChanged:self]; } - (IBAction)changePercentY:(id)sender { float percentY; percentY = [percentYField floatValue]; pixelsY = (int)rint(originalHeight * (percentY / 100)); [pixelsYField setIntValue:pixelsY]; if ([uniformToggle intValue]) { pixelsX = (int)rint(pixelsY / ratio); [pixelsXField setIntValue:pixelsX]; [percentXField setFloatValue:percentY]; } [self parametersChanged:self]; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!scaleWindow) [NSBundle loadNibNamed:@"Scale" owner:self]; [scaleWindow makeKeyAndOrderFront:nil]; pixelsX = [[[[NSDocumentController sharedDocumentController] currentDocument] activeImage] width]; pixelsY = [[[[NSDocumentController sharedDocumentController] currentDocument] activeImage] height]; originalWidth = pixelsX; originalHeight = pixelsY; ratio = (float)pixelsY / (float)pixelsX; [pixelsXField setIntValue:pixelsX]; [pixelsYField setIntValue:pixelsY]; [percentXField setFloatValue:100]; [percentYField setFloatValue:100]; [self parametersChanged:self]; } - (NSArray *)encodeParameters { int method; NSArray *parameters; switch ([[methodSelect selectedItem] tag]) { case 0: method = NEAREST_NEIGHBOUR; break; case 1: method = BILINEAR; break; default: method = NEAREST_NEIGHBOUR; NSLog(@"Unexpected value for method in scale"); } /* read pixels value again */ pixelsX = [pixelsXField intValue]; pixelsY = [pixelsYField intValue]; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:pixelsX], [NSNumber numberWithInt:pixelsY], [NSNumber numberWithInt:method], nil]; return parameters; } - (void)closeFilterPanel { [scaleWindow performClose:nil]; } @end PRICE-1.3.0/PRCTraceEdges.h010064400017500000012000000027371134450706000144060ustar00multixusers// // PRCTraceEdges.h // PRICE // // Created by Riccardo Mottola on Wed Jan 14 2004. // Copyright (c) 2004-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. // we encode the filter type in the tag of the NSMenuItem of the NSPopUpButton // 1: gradient, pixel difference // 2: gradient, separated pixel difference // 3: gradient, Roberts // 4: gradient, Prewitt // 5: gradient, Sobel // 6: gradient, Abdou, hx // 7: Laplacian 1, 4 neighbors // 8: Laplacian 2, 8 neighbors // 9: Laplacian, Prewitt, method 1 #import #import "PRFilterController.h" @interface PRCTraceEdges : PRFilterController { IBOutlet NSWindow *edgeWindow; IBOutlet NSButton *thresholdCheck; IBOutlet NSSlider *thresholdSlider; IBOutlet NSButton *zeroCrossCheck; IBOutlet NSTextField *thresholdField; IBOutlet NSPopUpButton *filterType; BOOL thresholdOn; float thresholdLevel; } - (IBAction)thresholdToggle:(id)sender; - (IBAction)changeThreshold:(id)sender; - (IBAction)filterTypeToggle:(id)sender; @end PRICE-1.3.0/PRCTraceEdges.m010064400017500000012000000061051134450706000144040ustar00multixusers// // PRCTraceEdges.m // PRICE // // Created by Riccardo Mottola on Wed Jan 14 2004. // Copyright (c) 2004-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCTraceEdges.h" #import "MyDocument.h" #import "PRTraceEdges.h" @implementation PRCTraceEdges - (id)init { if ((self = [super init])) { filter = [[PRTraceEdges alloc] init]; } return self; } - (IBAction)showFilter:(id)sender { [super showFilter:sender]; if (!edgeWindow) [NSBundle loadNibNamed:@"TraceEdges" owner:self]; [edgeWindow makeKeyAndOrderFront:nil]; if ([thresholdCheck state] == NSOnState) { [thresholdSlider setEnabled:YES]; [thresholdField setEnabled:YES]; thresholdOn = YES; if ([[filterType selectedItem] tag] >= 7) [zeroCrossCheck setEnabled:YES]; } else { [thresholdSlider setEnabled:NO]; [thresholdField setEnabled:NO]; thresholdOn = NO; [zeroCrossCheck setEnabled:NO]; } thresholdLevel = [thresholdField floatValue]; [self parametersChanged:self]; } - (NSArray *)encodeParameters { BOOL zeroCrossOn; NSArray *parameters; if ([zeroCrossCheck state] == NSOnState) zeroCrossOn = YES; else zeroCrossOn = NO; if ([[filterType selectedItem] tag] < 7) { [zeroCrossCheck setState:NO]; zeroCrossOn = NO; } parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt: [[filterType selectedItem] tag]], [NSNumber numberWithBool: thresholdOn], [NSNumber numberWithFloat: thresholdLevel], [NSNumber numberWithBool: zeroCrossOn], nil]; return parameters; } - (void)closeFilterPanel { [edgeWindow performClose:nil]; } - (IBAction)thresholdToggle:(id)sender { thresholdOn = !thresholdOn; if (thresholdOn) { [thresholdSlider setEnabled:YES]; [thresholdField setEnabled:YES]; if ([[filterType selectedItem] tag] >= 7) [zeroCrossCheck setEnabled:YES]; } else { [thresholdSlider setEnabled:NO]; [thresholdField setEnabled:NO]; [zeroCrossCheck setEnabled:NO]; } [self parametersChanged:sender]; } - (IBAction)changeThreshold:(id)sender { thresholdLevel = [sender floatValue]; [thresholdField setFloatValue:thresholdLevel]; [self parametersChanged:sender]; } - (IBAction)filterTypeToggle:(id)sender { if ([[filterType selectedItem] tag] >= 7) [zeroCrossCheck setEnabled:YES]; else [zeroCrossCheck setEnabled:NO]; [self parametersChanged:sender]; } @end PRICE-1.3.0/PRCTransforms.h010064400017500000012000000017571110765243000145360ustar00multixusers// // PRTransforms.h // PRICE // // Created by Riccardo Mottola on Fri Nov 14 2008. // Copyright (c) 2002-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import @interface PRCTransforms : NSObject { NSString *actionName; } - (void)setActionName:(NSString *)name; - (IBAction)transposeImage:(id)sender; - (IBAction)rotateImage90:(id)sender; - (IBAction)rotateImage180:(id)sender; - (IBAction)rotateImage270:(id)sender; - (IBAction)flipImageVert:(id)sender; - (IBAction)flipImageHoriz:(id)sender; @end PRICE-1.3.0/PRCTransforms.m010064400017500000012000000067441110766104400145450ustar00multixusers// // PRTransforms.m // PRICE // // Created by Riccardo Mottola on Fri Nov 14 2008. // Copyright (c) 2002-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCTransforms.h" #import "PRTransforms.h" #import "MyDocument.h" @implementation PRCTransforms - (IBAction)transposeImage:(id)sender { NSArray *parameters; PRTransforms *filter; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:TRANSPOSE], nil]; filter = [[PRTransforms alloc] init]; [filter setActionName:@"Transpose"]; [[[NSDocumentController sharedDocumentController] currentDocument] runFilter:filter with:parameters]; [filter release]; } - (IBAction)rotateImage90:(id)sender { NSArray *parameters; PRTransforms *filter; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:ROTATE90], nil]; filter = [[PRTransforms alloc] init]; [filter setActionName:@"Rotate 90"]; [[[NSDocumentController sharedDocumentController] currentDocument] runFilter:filter with:parameters]; [filter release]; } - (IBAction)rotateImage180:(id)sender { NSArray *parameters; PRTransforms *filter; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:ROTATE180], nil]; filter = [[PRTransforms alloc] init]; [filter setActionName:@"Rotate 180"]; [[[NSDocumentController sharedDocumentController] currentDocument] runFilter:filter with:parameters]; [filter release]; } - (IBAction)rotateImage270:(id)sender { NSArray *parameters; PRTransforms *filter; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:ROTATE270], nil]; filter = [[PRTransforms alloc] init]; [filter setActionName:@"Rotate 270"]; [[[NSDocumentController sharedDocumentController] currentDocument] runFilter:filter with:parameters]; [filter release]; } - (IBAction)flipImageVert:(id)sender { NSArray *parameters; PRTransforms *filter; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:FLIP_VERT], nil]; filter = [[PRTransforms alloc] init]; [filter setActionName:@"Flip Vertical"]; [[[NSDocumentController sharedDocumentController] currentDocument] runFilter:filter with:parameters]; [filter release]; } - (IBAction)flipImageHoriz:(id)sender { NSArray *parameters; PRTransforms *filter; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:FLIP_HORIZ], nil]; filter = [[PRTransforms alloc] init]; [filter setActionName:@"Flip Horizontal"]; [[[NSDocumentController sharedDocumentController] currentDocument] runFilter:filter with:parameters]; [filter release]; } - (void)setActionName:(NSString *)name { actionName = name; } - (NSString *)actionName { return actionName; } @end PRICE-1.3.0/PRConvolve55.h010064400017500000012000000016011110712653100142240ustar00multixusers// // PRConvolve55.h // PRICE // // Created by Riccardo Mottola on Sat Jan 18 2003. // Copyright (c) 2003-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRProgressAction.h" #import "PRImage.h" @interface PRConvolve55 : PRProgressAction { } - (PRImage *)convolveImage:(PRImage *)srcImage :(int[5][5])convMat :(int)offset :(float)scale :(BOOL)autoScale :(PRCProgress *)prPan; @end PRICE-1.3.0/PRConvolve55.m010064400017500000012000001225501243447250100142450ustar00multixusers// // PRConvolve55.m // PRICE // // Created by Riccardo Mottola on Sat Jan 18 2003. // Copyright (c) 2003-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #include #include #import "PRConvolve55.h" #import "PRGrayscaleFilter.h" @implementation PRConvolve55 - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { NSArray *convArray; int convMat[5][5]; int offset; float scale; BOOL autoScale; int i, j, k; /* interpret the parameters */ convArray = [parameters objectAtIndex:0]; k = 0; for (i = 0; i < 5; i++) for (j = 0; j < 5; j++) convMat[i][j] = [[convArray objectAtIndex:k++] intValue]; offset = [[parameters objectAtIndex:1] intValue]; scale = [[parameters objectAtIndex:2] floatValue]; autoScale = [[parameters objectAtIndex:3] boolValue]; return [self convolveImage:image :convMat :offset :scale :autoScale :progressPanel]; } - (NSString *)actionName { return @"Convolve 5x5"; } - (PRImage *)convolveImage:(PRImage *)srcImage :(int[5][5])convMat :(int)offset :(float)scale :(BOOL)autoScale :(PRCProgress *)prPan { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; /* image scanning variables */ NSInteger i, j; /* convolve matrix scanning */ unsigned char *srcData; unsigned char *destData; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; float normalizeFactor; int minVal, maxVal; BOOL hasAlpha; progressSteps = 0; totalProgressSteps = 2; if (autoScale) totalProgressSteps++; progPanel = prPan; /* get source image representation and associated information */ if (progPanel != nil) { [self setActivity:@"get image representation"]; [self advanceProgress]; } srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; destSamplesPerPixel = srcSamplesPerPixel; /* check bith depth and color/greyscale image */ hasAlpha = [srcImage hasAlpha]; /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:[srcImageRep samplesPerPixel] hasAlpha:hasAlpha isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; if ([srcImage hasColor]) { int convSumR, convSumG, convSumB; if (autoScale) { if (progPanel != nil) { [self setActivity:@"Evaluating range"]; [self advanceProgress]; } minVal = INT_MAX; maxVal = INT_MIN; /* calibrate output range */ for (y = 0 + 2; y < h - 3; y++) for (x = 0 + 2; x < w - 3; x++) { convSumR = 0; convSumG = 0; convSumB = 0; for (i = -2; i <= 2; i++) for (j = -2; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } if (convSumR + convSumG + convSumB > maxVal) maxVal = convSumR + convSumG + convSumB; if (convSumR + convSumG + convSumB < minVal) minVal = convSumR + convSumG + convSumB; } maxVal = maxVal / 3; minVal = minVal / 3; printf("Max %d, min %d\n", maxVal, minVal); normalizeFactor = (float)fabs(maxVal -minVal)/(float)UCHAR_MAX; printf("normalize factor: %f\n", normalizeFactor); offset = -minVal; scale = normalizeFactor; } printf("offset: %d, scale:%f\n", offset, scale); if (progPanel != nil) { [self setActivity:@"convolving"]; [self advanceProgress]; } /* execute the actual filtering */ /* the borders */ for (y = 0; y < 0 + 2; y++) { /* top left corner */ for (x = 0; x < (0 + 2); x++) { convSumR = 0; convSumG = 0; convSumB = 0; for (i = -2; i <= -1 - y; i++) { for (j = -2; j <= -1 - x; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel + 2]; } for (j = 0 - x; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } } for (i = 0 - y; i <= 2; i++) { for (j = -2; j <= -1 - x; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel + 2]; } for (j = 0 - x; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } } convSumR += offset; convSumG += offset; convSumB += offset; convSumR = (int)rint((float)convSumR / scale); convSumG = (int)rint((float)convSumG / scale); convSumB = (int)rint((float)convSumB / scale); if (convSumR < 0) convSumR = 0; if (convSumG < 0) convSumG = 0; if (convSumB < 0) convSumB = 0; if (convSumR > UCHAR_MAX) convSumR = UCHAR_MAX; if (convSumG > UCHAR_MAX) convSumG = UCHAR_MAX; if (convSumB > UCHAR_MAX) convSumB = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSumR; destData[destBytesPerRow * y + destBytesPerPixel * x + 1] = (unsigned char)convSumG; destData[destBytesPerRow * y + destBytesPerPixel * x + 2] = (unsigned char)convSumB; } /* top band */ for (x = (0 + 2); x < (w - 3); x++) { convSumR = 0; convSumG = 0; convSumB = 0; for (i = -2; i <= -1 - y; i++) for (j = -2; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } for (i = 0 - y; i <= 2; i++) for (j = -2; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } convSumR += offset; convSumG += offset; convSumB += offset; convSumR = (int)rint((float)convSumR / scale); convSumG = (int)rint((float)convSumG / scale); convSumB = (int)rint((float)convSumB / scale); if (convSumR < 0) convSumR = 0; if (convSumG < 0) convSumG = 0; if (convSumB < 0) convSumB = 0; if (convSumR > UCHAR_MAX) convSumR = UCHAR_MAX; if (convSumG > UCHAR_MAX) convSumG = UCHAR_MAX; if (convSumB > UCHAR_MAX) convSumB = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSumR; destData[destBytesPerRow * y + destBytesPerPixel * x + 1] = (unsigned char)convSumG; destData[destBytesPerRow * y + destBytesPerPixel * x + 2] = (unsigned char)convSumB; } /* top right corner */ for (x = (w - 3); x < w; x++) { convSumR = 0; convSumG = 0; convSumB = 0; for (i = -2; i <= -1 - y; i++) { for (j = -2; j <= -1 - (x - w); j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } for (j = 0 - (x - w); j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel + 2]; } } for (i = 0 - y; i <= 2; i++) { for (j = -2; j <= -1 - (x - w); j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } for (j = 0 - (x - w); j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel + 2]; } } convSumR += offset; convSumG += offset; convSumB += offset; convSumR = (int)rint((float)convSumR / scale); convSumG = (int)rint((float)convSumG / scale); convSumB = (int)rint((float)convSumB / scale); if (convSumR < 0) convSumR = 0; if (convSumG < 0) convSumG = 0; if (convSumB < 0) convSumB = 0; if (convSumR > UCHAR_MAX) convSumR = UCHAR_MAX; if (convSumG > UCHAR_MAX) convSumG = UCHAR_MAX; if (convSumB > UCHAR_MAX) convSumB = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSumR; destData[destBytesPerRow * y + destBytesPerPixel * x + 1] = (unsigned char)convSumG; destData[destBytesPerRow * y + destBytesPerPixel * x + 2] = (unsigned char)convSumB; } } for (y = 0 + 2; y < h - 3; y++) { /* left band */ for (x = 0; x < (0 + 2); x++) { convSumR = 0; convSumG = 0; convSumB = 0; for (i = -2; i <= 2; i++) { for (j = -2; j <= -1 - x; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel + 2]; } for (j = 0 - x; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } } convSumR += offset; convSumG += offset; convSumB += offset; convSumR = (int)rint((float)convSumR / scale); convSumG = (int)rint((float)convSumG / scale); convSumB = (int)rint((float)convSumB / scale); if (convSumR < 0) convSumR = 0; if (convSumG < 0) convSumG = 0; if (convSumB < 0) convSumB = 0; if (convSumR > UCHAR_MAX) convSumR = UCHAR_MAX; if (convSumG > UCHAR_MAX) convSumG = UCHAR_MAX; if (convSumB > UCHAR_MAX) convSumB = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSumR; destData[destBytesPerRow * y + destBytesPerPixel * x + 1] = (unsigned char)convSumG; destData[destBytesPerRow * y + destBytesPerPixel * x + 2] = (unsigned char)convSumB; } /* right band */ for (x = (w - 3); x < w; x++) { convSumR = 0; convSumG = 0; convSumB = 0; for (i = -2; i <= 2; i++) { for (j = -2; j <= -1 - (x - w); j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } for (j = 0 - (x - w); j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel + 2]; } } convSumR += offset; convSumG += offset; convSumB += offset; convSumR = (int)rint((float)convSumR / scale); convSumG = (int)rint((float)convSumG / scale); convSumB = (int)rint((float)convSumB / scale); if (convSumR < 0) convSumR = 0; if (convSumG < 0) convSumG = 0; if (convSumB < 0) convSumB = 0; if (convSumR > UCHAR_MAX) convSumR = UCHAR_MAX; if (convSumG > UCHAR_MAX) convSumG = UCHAR_MAX; if (convSumB > UCHAR_MAX) convSumB = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSumR; destData[destBytesPerRow * y + destBytesPerPixel * x + 1] = (unsigned char)convSumG; destData[destBytesPerRow * y + destBytesPerPixel * x + 2] = (unsigned char)convSumB; } } for (y = h - 3; y < h; y++) { /* bottom left corner */ for (x = 0; x < (0 + 2); x++) { convSumR = 0; convSumG = 0; convSumB = 0; for (i = -2; i <= -1 - (y - h); i++) { for (j = -2; j <= -1 - x; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel + 2]; } for (j = 0 - x; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } } for (i = 0 - (y - h); i <= 2; i++) { for (j = -2; j <= -1 - x; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel + 2]; } for (j = 0 - x; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } } convSumR += offset; convSumG += offset; convSumB += offset; convSumR = (int)rint((float)convSumR / scale); convSumG = (int)rint((float)convSumG / scale); convSumB = (int)rint((float)convSumB / scale); if (convSumR < 0) convSumR = 0; if (convSumG < 0) convSumG = 0; if (convSumB < 0) convSumB = 0; if (convSumR > UCHAR_MAX) convSumR = UCHAR_MAX; if (convSumG > UCHAR_MAX) convSumG = UCHAR_MAX; if (convSumB > UCHAR_MAX) convSumB = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSumR; destData[destBytesPerRow * y + destBytesPerPixel * x + 1] = (unsigned char)convSumG; destData[destBytesPerRow * y + destBytesPerPixel * x + 2] = (unsigned char)convSumB; } /* bottom band */ for (x = (0 + 2); x < (w - 3); x++) { convSumR = 0; convSumG = 0; convSumB = 0; for (i = -2; i <= -1 - (y - h); i++) for (j = -2; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } for (i = 0 - (y - h); i <= 2; i++) for (j = -2; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } convSumR += offset; convSumG += offset; convSumB += offset; convSumR = (int)rint((float)convSumR / scale); convSumG = (int)rint((float)convSumG / scale); convSumB = (int)rint((float)convSumB / scale); if (convSumR < 0) convSumR = 0; if (convSumG < 0) convSumG = 0; if (convSumB < 0) convSumB = 0; if (convSumR > UCHAR_MAX) convSumR = UCHAR_MAX; if (convSumG > UCHAR_MAX) convSumG = UCHAR_MAX; if (convSumB > UCHAR_MAX) convSumB = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSumR; destData[destBytesPerRow * y + destBytesPerPixel * x + 1] = (unsigned char)convSumG; destData[destBytesPerRow * y + destBytesPerPixel * x + 2] = (unsigned char)convSumB; } /* bottom right corner */ for (x = (w - 3); x < w; x++) { convSumR = 0; convSumG = 0; convSumB = 0; for (i = -2; i <= -1 - (y - h); i++) { for (j = -2; j <= -1 - (x - w); j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } for (j = 0 - (x - w); j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel + 2]; } } for (i = 0 - (y - h); i <= 2; i++) { for (j = -2; j <= -1 - (x - w); j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } for (j = 0 - (x - w); j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel + 2]; } } convSumR += offset; convSumG += offset; convSumB += offset; convSumR = (int)rint((float)convSumR / scale); convSumG = (int)rint((float)convSumG / scale); convSumB = (int)rint((float)convSumB / scale); if (convSumR < 0) convSumR = 0; if (convSumG < 0) convSumG = 0; if (convSumB < 0) convSumB = 0; if (convSumR > UCHAR_MAX) convSumR = UCHAR_MAX; if (convSumG > UCHAR_MAX) convSumG = UCHAR_MAX; if (convSumB > UCHAR_MAX) convSumB = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSumR; destData[destBytesPerRow * y + destBytesPerPixel * x + 1] = (unsigned char)convSumG; destData[destBytesPerRow * y + destBytesPerPixel * x + 2] = (unsigned char)convSumB; } } /* the core */ for (y = 0 + 2; y < h - 3; y++) for (x = (0 + 2); x < (w - 3); x++) { convSumR = 0; convSumG = 0; convSumB = 0; for (i = -2; i <= 2; i++) for (j = -2; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel + 2]; } convSumR += offset; convSumG += offset; convSumB += offset; convSumR = (int)rint((float)convSumR / scale); convSumG = (int)rint((float)convSumG / scale); convSumB = (int)rint((float)convSumB / scale); if (convSumR < 0) convSumR = 0; if (convSumG < 0) convSumG = 0; if (convSumB < 0) convSumB = 0; if (convSumR > UCHAR_MAX) convSumR = UCHAR_MAX; if (convSumG > UCHAR_MAX) convSumG = UCHAR_MAX; if (convSumB > UCHAR_MAX) convSumB = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSumR; destData[destBytesPerRow * y + destBytesPerPixel * x + 1] = (unsigned char)convSumG; destData[destBytesPerRow * y + destBytesPerPixel * x + 2] = (unsigned char)convSumB; } } else { int convSum; if (autoScale) { if (progPanel != nil) { [self setActivity:@"Evaluating range"]; [self advanceProgress]; } minVal = INT_MAX; maxVal = INT_MIN; /* calibrate output range */ for (y = 0 + 2; y < h - 3; y++) for (x = 0 + 2; x < w - 3; x++) { convSum = 0; for (i = -2; i <= 2; i++) for (j = -2; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; if (convSum > maxVal) maxVal = convSum; if (convSum < minVal) minVal = convSum; } printf("Max %d, min %d\n", maxVal, minVal); normalizeFactor = (float)fabs(maxVal -minVal)/(float)UCHAR_MAX; printf("normalize factor: %f\n", normalizeFactor); offset = -minVal; scale = normalizeFactor; } printf("offset: %d, scale:%f\n", offset, scale); if (progPanel != nil) { [self setActivity:@"convolving"]; [self advanceProgress]; } /* execute the actual filtering */ /* the borders */ for (y = 0; y < 0 + 2; y++) { /* top left corner */ for (x = 0; x < 0 + 2; x++) { convSum = 0; for (i = -2; i <= -1 - y; i++) { for (j = -2; j <= -1 - x; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel]; for (j = 0 - x; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; } for (i = 0 - y; i <= 2; i++) { for (j = -2; j <= -1 - x; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel]; for (j = 0 - x; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSum; } /* top band */ for (x = 0 + 2; x < w - 3; x++) { convSum = 0; for (i = -2; i <= -1 - y; i++) for (j = -2; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; for (i = 0 - y; i <= 2; i++) for (j = -2; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSum; } /* top right corner */ for (x = w - 3; x < w; x++) { convSum = 0; for (i = -2; i <= -1 - y; i++) { for (j = -2; j <= -1 - (x - w); j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; for (j = 0 - (x - w); j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel]; } for (i = 0 - y; i <= 2; i++) { for (j = -2; j <= -1 - (x - w); j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; for (j = 0 - (x - w); j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel]; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSum; } } for (y = 0 + 2; y < h - 3; y++) { /* left band */ for (x = 0; x < 0 + 2; x++) { convSum = 0; for (i = -2; i <= 2; i++) { for (j = -2; j <= -1 - x; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel]; for (j = 0 - x; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSum; } /* right band */ for (x = w - 3; x < w; x++) { convSum = 0; for (i = -2; i <= 2; i++) { for (j = -2; j <= -1 - (x - w); j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; for (j = 0 - (x - w); j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel]; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSum; } } for (y = h - 3; y < h; y++) { /* bottom left corner */ for (x = 0; x < 0 + 2; x++) { convSum = 0; for (i = -2; i <= -1 - (y - h); i++) { for (j = -2; j <= -1 - x; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel]; for (j = 0 - x; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; } for (i = 0 - (y - h); i <= 2; i++) { for (j = -2; j <= -1 - x; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j-1))*srcBytesPerPixel]; for (j = 0 - x; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSum; } /* bottom band */ for (x = 0 + 2; x < w - 3; x++) { convSum = 0; for (i = -2; i <= -1 - (y - h); i++) for (j = -2; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; for (i = 0 - (y - h); i <= 2; i++) for (j = -2; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSum; } /* bottom right corner */ for (x = w - 3; x < w; x++) { convSum = 0; for (i = -2; i <= -1 - (y - h); i++) { for (j = -2; j <= -1 - (x - w); j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; for (j = 0 - (x - w); j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel]; } for (i = 0 - (y - h); i <= 2; i++) { for (j = -2; j <= -1 - (x - w); j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; for (j = 0 - (x - w); j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j+1))*srcBytesPerPixel]; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSum; } } /* the core */ for (y = 0 + 2; y < h - 3; y++) for (x = 0 + 2; x < w - 3; x++) { convSum = 0; for (i = -2; i <= 2; i++) for (j = -2; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcBytesPerPixel]; convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[destBytesPerRow * y + destBytesPerPixel * x] = (unsigned char)convSum; } } /* preserve Alpha Channel if present */ if (hasAlpha) { for (y = 0; y < h; y++) for (x = 0; x < w; x++) destData[destBytesPerRow * y + destBytesPerPixel * x + (destSamplesPerPixel-1)] = srcData[srcBytesPerRow * y + srcBytesPerPixel * x + (srcSamplesPerPixel-1)]; } if (progPanel != nil) { [self setActivity:@"Done"]; [self showProgress]; } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.3.0/PRCrop.h010064400017500000012000000014641111461357200131750ustar00multixusers// // PRCrop.h // PRICE // // Created by Riccardo Mottola on Fri Jan 28 2005. // Copyright (c) 2005-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #include #import "PRFilter.h" @interface PRCrop : PRFilter { } - (PRImage *)cropImage :(PRImage *)srcImage :(int)pixTop :(int)pixBottom :(int)pixLeft :(int)pixRight; @end PRICE-1.3.0/PRCrop.m010064400017500000012000000077241243474363700132230ustar00multixusers// // PRCrop.m // PRICE // // Created by Riccardo Mottola on Fri Jan 28 2005. // Copyright (c) 2005-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #include "PRCrop.h" @implementation PRCrop - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { int pixTop; int pixBottom; int pixRight; int pixLeft; /* interpret the parameters */ pixTop = [[parameters objectAtIndex:0] intValue]; pixBottom = [[parameters objectAtIndex:1] intValue]; pixLeft = [[parameters objectAtIndex:2] intValue]; pixRight = [[parameters objectAtIndex:3] intValue]; return [self cropImage:image :pixTop :pixBottom :pixLeft :pixRight]; } - (NSString *)actionName { return @"Crop"; } - (PRImage *)cropImage :(PRImage *)srcImage :(int)pixTop :(int)pixBottom :(int)pixLeft :(int)pixRight { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger origW, origH; NSInteger newW, newH; NSInteger x, y; NSInteger i; unsigned char *srcData; unsigned char *destData; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; /* some trace */ NSLog(@"top: %d left:%d right:%d bottom:%d", pixTop, pixLeft, pixRight, pixBottom); /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; origW = [srcImageRep pixelsWide]; origH = [srcImageRep pixelsHigh]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = srcSamplesPerPixel; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; newW = origW - pixLeft - pixRight; newH = origH - pixTop - pixBottom; /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(newW, newH)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:newW pixelsHigh:newH bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:[srcImageRep hasAlpha] isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; for (y = 0; y < newH; y++) for (x = 0; x < newW; x++) for (i = 0; i < srcSamplesPerPixel; i++) { NSInteger sX, sY; sX = x + pixLeft; sY = y + pixTop; if ((sX >= 0 && sX < origW) && (sY >= 0 && sY < origH)) { destData[destBytesPerRow * y + destBytesPerPixel * x + i] = srcData[srcBytesPerRow * sY + srcBytesPerPixel * sX + i]; } else { destData[destBytesPerRow * y + destBytesPerPixel * x + i] = 0; } } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.3.0/PRCumHisto.h010064400017500000012000000012651105335723300140250ustar00multixusers// // PRCumHisto.h // PRICE // // Created by Riccardo Mottola on Thu Dec 18 2003. // Copyright (c) 2003 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRHistogram.h" @interface PRCumHisto : PRHistogram @end PRICE-1.3.0/PRCumHisto.m010064400017500000012000000051601243505267700140410ustar00multixusers// // PRCumHisto.m // PRICE // // Created by Riccardo Mottola on Thu Dec 18 2003. // Copyright (c) 2003-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCumHisto.h" @implementation PRCumHisto - (void)displayHistogram :(NSRect)viewRect { NSRect bar; NSBezierPath *bez; NSBezierPath *redBez, *greenBez, *blueBez; NSColor *fillRed, *fillGreen, *fillBlue; int i; float barWidth; float barHeightScale; NSLog(@"Cumulative Histogram drawing"); NSLog(@"maxHisto: %f", maxHisto); barWidth = viewRect.size.width / UCHAR_MAX; barHeightScale = viewRect.size.height; NSLog(@"frame height: %f", viewRect.size.height); NSLog(@"scale: %f", barHeightScale); bez = [NSBezierPath bezierPath]; redBez = [NSBezierPath bezierPath]; greenBez = [NSBezierPath bezierPath]; blueBez = [NSBezierPath bezierPath]; if (hasColor) { fillRed = [NSColor redColor]; fillGreen = [NSColor greenColor]; fillBlue = [NSColor blueColor]; for(i = 0; i < UCHAR_MAX; i++) { float redHeight; float greenHeight; float blueHeight; redHeight = cumulativeHistogramR[i]*barHeightScale/3; greenHeight = cumulativeHistogramG[i]*barHeightScale/3; blueHeight = cumulativeHistogramB[i]*barHeightScale/3; bar = NSMakeRect(i*barWidth, 0, barWidth, greenHeight); [greenBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, greenHeight, barWidth, redHeight); [redBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, greenHeight + redHeight, barWidth, blueHeight); [blueBez appendBezierPathWithRect:bar]; } [fillRed set]; [redBez fill]; [fillGreen set]; [greenBez fill]; [fillBlue set]; [blueBez fill]; } else /* greyscale */ { for(i = 0; i < UCHAR_MAX; i++) { bar = NSMakeRect(i*barWidth, 0, barWidth, cumulativeHistogram[i]*barHeightScale); [bez appendBezierPathWithRect:bar]; } [bez fill]; } } @end PRICE-1.3.0/PRCurves.h010064400017500000012000000015441162202701200135300ustar00multixusers// // PRCurves.h // PRICE // // Created by Riccardo Mottola on 07/08/11. // Copyright 2011 Riccardo Mottola. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilter.h" #import "PRImage.h" @interface PRCurves : PRFilter { } - (PRImage *)adjustImage :(PRImage *)srcImage :(unsigned *)arrayL :(unsigned *)arrayR :(unsigned *)arrayG :(unsigned *)arrayB; @end PRICE-1.3.0/PRCurves.m010064400017500000012000000136201243617651600135550ustar00multixusers// // PRCurves.m // PRICE // // Created by Riccardo Mottola on 07/08/11. // Copyright 2011-2014 Riccardo Mottola. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCurves.h" @implementation PRCurves /* * Paramters order: * Luminance Array * Red Array * Green Array * Blue Array */ - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { PRImage *retImage; NSArray *array; unsigned arrayL[UCHAR_MAX + 1]; unsigned arrayR[UCHAR_MAX + 1]; unsigned arrayG[UCHAR_MAX + 1]; unsigned arrayB[UCHAR_MAX + 1]; unsigned i; if ([parameters count] != 1 && [parameters count] != 3) { NSLog(@"inconsistent number of parametetrs: %u", (unsigned int)[parameters count]); return nil; } if ([parameters count] == 1) { array = [parameters objectAtIndex:0]; if ([array count] > 0) { if ([array count] == UCHAR_MAX+1) { for (i = 0; i <= UCHAR_MAX; i++) arrayL[i] = [(NSNumber *)[array objectAtIndex: i] unsignedIntValue]; } else { NSLog(@"Incompatible size of parameter array: %u", (unsigned int)[array count]); } } retImage = [self adjustImage: image :arrayL :NULL :NULL :NULL]; } else { array = [parameters objectAtIndex:0]; if ([array count] > 0) { if ([array count] == UCHAR_MAX+1) { for (i = 0; i <= UCHAR_MAX; i++) arrayR[i] = [(NSNumber *)[array objectAtIndex: i] unsignedIntValue]; } else { NSLog(@"Incompatible size of parameter array: %u", (unsigned int)[array count]); } } array = [parameters objectAtIndex:1]; if ([array count] > 0) { if ([array count] == UCHAR_MAX+1) { for (i = 0; i <= UCHAR_MAX; i++) arrayG[i] = [(NSNumber *)[array objectAtIndex: i] unsignedIntValue]; } else { NSLog(@"Incompatible size of parameter array: %u", (unsigned int)[array count]); } } array = [parameters objectAtIndex:2]; if ([array count] > 0) { if ([array count] == UCHAR_MAX+1) { for (i = 0; i <= UCHAR_MAX; i++) arrayB[i] = [(NSNumber *)[array objectAtIndex: i] unsignedIntValue]; } else { NSLog(@"Incompatible size of parameter array: %u", (unsigned int)[array count]); } } retImage = [self adjustImage: image :arrayL :arrayR :arrayG :arrayB]; } return retImage; } - (NSString *)actionName { return @"Curves"; } - (PRImage *)adjustImage :(PRImage *)srcImage :(unsigned *)arrayL :(unsigned *)arrayR :(unsigned *)arrayG :(unsigned *)arrayB { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; unsigned char *srcData; unsigned char *destData; int tempValue; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; NSInteger srcBytesPerRow; NSInteger destBytesPerRow; NSInteger srcBytesPerPixel; NSInteger destBytesPerPixel; BOOL hasAlpha; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; /* check bith depth and color/greyscale image */ hasAlpha = [srcImageRep hasAlpha]; destSamplesPerPixel = srcSamplesPerPixel; /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:hasAlpha isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; if ([srcImage hasColor]) { for (y = 0; y < h; y++) for (x = 0; x < w; x++) { tempValue = arrayR[srcData[srcBytesPerRow*y + srcBytesPerPixel*x]]; destData[destBytesPerRow*y + destBytesPerPixel*x] = tempValue; tempValue = arrayG[srcData[srcBytesPerRow*y + srcBytesPerPixel*x + 1]]; destData[destBytesPerRow*y + destBytesPerPixel*x + 1] = tempValue; tempValue = arrayB[srcData[srcBytesPerRow*y + srcBytesPerPixel*x + 2]]; destData[destBytesPerRow*y + destBytesPerPixel*x + 2] = tempValue; if (hasAlpha) destData[destBytesPerRow*y + destBytesPerPixel*x + 3] = srcData[srcBytesPerRow*y + srcBytesPerPixel*x + 3]; } } else { for (y = 0; y < h; y++) for (x = 0; x < w; x++) { destData[destBytesPerRow*y + destBytesPerPixel*x] = arrayL[srcData[srcBytesPerRow*y + srcBytesPerPixel*x]]; if (hasAlpha) destData[destBytesPerRow*y + destBytesPerPixel*x + 1] = srcData[srcBytesPerRow*y + srcBytesPerPixel*x + 1]; } } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (BOOL)displayProgress { return NO; } @end PRICE-1.3.0/PRCurvesPath.h010064400017500000012000000021531232127356200143540ustar00multixusers// // PRCurvesPath.h // PRICE // // Created by Riccardo Mottola on Thu 11 August 2011. // Copyright 2011-2014 Riccardo Mottola. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import @interface PRCurvesPath : NSBezierPath { BOOL isEditing; } -(BOOL)isEditing; -(void)setIsEditing: (BOOL)flag; -(NSArray *)values; /** returns black point */ -(NSPoint)blackPoint; /** returns white point */ -(NSPoint)whitePoint; /** moves a control point p1 to p2 */ -(void)move: (NSPoint)p1 toPoint:(NSPoint)p2; /** determines if any control point of the path got hit */ -(BOOL)pointOnControlHandle:(NSPoint)p; @end PRICE-1.3.0/PRCurvesPath.m010064400017500000012000000136061232154346300143660ustar00multixusers// // PRCurvesPath.m // PRICE // // Created by Riccardo Mottola on Thu 11 August 2011. // Copyright 2011-2014 Riccardo Mottola. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCurvesPath.h" #import @implementation PRCurvesPath - (id)init { self = [super init]; if(self) { isEditing = YES; } return self; } -(void)stroke { unsigned i; [super stroke]; if (isEditing) for (i = 0; i < [self elementCount]; i++) { NSPoint cp[3]; NSBezierPathElement pe; NSRect cpRect; pe = [self elementAtIndex: i associatedPoints: cp]; if (pe == NSMoveToBezierPathElement) { [[NSColor purpleColor] set]; cpRect = NSMakeRect(cp[0].x - 1, cp[0].y - 1, 4, 4); [NSBezierPath fillRect: cpRect]; } else if (pe == NSCurveToBezierPathElement) { [[NSColor orangeColor] set]; cpRect = NSMakeRect(cp[0].x - 1, cp[0].y - 1, 4, 4); [NSBezierPath fillRect: cpRect]; [[NSColor orangeColor] set]; cpRect = NSMakeRect(cp[1].x - 1, cp[1].y - 1, 4, 4); [NSBezierPath fillRect: cpRect]; [[NSColor purpleColor] set]; cpRect = NSMakeRect(cp[2].x - 1, cp[2].y - 1, 4, 4); [NSBezierPath fillRect: cpRect]; } } } -(BOOL)isEditing; { return isEditing; } -(void)setIsEditing: (BOOL)flag { isEditing = flag; } -(NSPoint)blackPoint { NSPoint cp[3]; NSPoint p; NSBezierPathElement pe; pe = [self elementAtIndex: 0 associatedPoints: cp]; p = cp[0]; NSLog(@"calculated black point: %f", p.x); // ATTENTION: this is really true only for the simple S curve return p; } -(NSPoint)whitePoint { NSPoint cp[3]; NSPoint p; NSBezierPathElement pe; pe = [self elementAtIndex:[self elementCount]-1 associatedPoints: cp]; p = NSZeroPoint; if (pe == NSMoveToBezierPathElement) p = cp[0]; else if (pe == NSLineToBezierPathElement) p = cp[0]; else if (pe == NSCurveToBezierPathElement) p = cp[2]; NSLog(@"calculated white point: %f", p.x); return p; } -(NSArray *)values { NSBezierPath *tp; NSBezierPath *fp; unsigned i, j; NSPoint *yVals; unsigned valsCount; NSMutableArray *f; unsigned minX, maxX; float lastY; tp = [NSBezierPath bezierPath]; [tp appendBezierPath:(NSBezierPath *)self]; [tp setFlatness: 1.0]; fp = [tp bezierPathByFlatteningPath]; valsCount = [fp elementCount]; yVals = calloc(valsCount, sizeof(NSPoint)); if (yVals == NULL) return nil; f = [[NSMutableArray alloc] initWithCapacity: UCHAR_MAX]; for (i = 0; i < valsCount; i++) { NSBezierPathElement pe; NSPoint cp[3]; pe = [fp elementAtIndex: i associatedPoints: cp]; yVals[i] = cp[0]; } minX = floor(yVals[0].x); maxX = floor(yVals[valsCount].x); for (i = 0; i < minX; i++) [f addObject: [NSNumber numberWithFloat: yVals[0].y]]; for (j = 0; j < valsCount; j++) { unsigned k, l; float y1, y2; /* find estimation interval (k) and begin/end values y1 y2 */ y1 = yVals[j].y; l = i; k = i; if (j+1 < valsCount) { while (k < floor(yVals[j+1].x)) k++; y2 = yVals[j+1].y; } else { y2 = y1; k++; } // NSLog(@"%d block %d-%d, y1-y2 %f-%f", j, l, k, y1, y2); for (; i < k; i++) { float a; a = (float)(i-l)/(k-l); // NSLog(@"a: %f", a); [f addObject: [NSNumber numberWithFloat: (y1 + (y2-y1)*a)]]; } } lastY = [[f objectAtIndex: [f count]-1] floatValue]; for (; i <= UCHAR_MAX; i++) [f addObject: [NSNumber numberWithFloat: lastY]]; free(yVals); return f; } -(void)move: (NSPoint)p1 toPoint:(NSPoint)p2 { unsigned i; NSLog (@"move %f %f %f %f", p1.x, p1.y, p2.x, p2.y); for (i = 0; i < [self elementCount]; i++) { NSPoint cp[3]; NSBezierPathElement pe; NSRect cpRect; pe = [self elementAtIndex: i associatedPoints: cp]; if (pe == NSMoveToBezierPathElement) { cpRect = NSMakeRect(cp[0].x - 1, cp[0].y - 1, 4, 4); if (NSPointInRect(p1, cpRect)) { cp[0] = p2; } } else if (pe == NSCurveToBezierPathElement) { cpRect = NSMakeRect(cp[0].x - 1, cp[0].y - 1, 4, 4); if(NSPointInRect(p1, cpRect)) cp[0] = p2; cpRect = NSMakeRect(cp[1].x - 1, cp[1].y - 1, 4, 4); if (NSPointInRect(p1, cpRect)) cp[1] = p2; cpRect = NSMakeRect(cp[2].x - 1, cp[2].y - 1, 4, 4); if(NSPointInRect(p1, cpRect)) cp[2] = p2; } [self setAssociatedPoints:cp atIndex:i]; } } -(BOOL)pointOnControlHandle:(NSPoint)p; { unsigned i; BOOL hit; hit = NO; for (i = 0; i < [self elementCount]; i++) { NSPoint cp[3]; NSBezierPathElement pe; NSRect cpRect; pe = [self elementAtIndex: i associatedPoints: cp]; if (pe == NSMoveToBezierPathElement) { cpRect = NSMakeRect(cp[0].x - 1, cp[0].y - 1, 4, 4); hit |= NSPointInRect(p, cpRect); } else if (pe == NSCurveToBezierPathElement) { cpRect = NSMakeRect(cp[0].x - 1, cp[0].y - 1, 4, 4); hit |= NSPointInRect(p, cpRect); cpRect = NSMakeRect(cp[1].x - 1, cp[1].y - 1, 4, 4); hit |= NSPointInRect(p, cpRect); cpRect = NSMakeRect(cp[2].x - 1, cp[2].y - 1, 4, 4); hit |= NSPointInRect(p, cpRect); } } return hit; } @end PRICE-1.3.0/PRCurvesView.h010064400017500000012000000054101243640337500143750ustar00multixusers// // PRCurvesView.h // PRICE // // Created by Riccardo Mottola on 7 August 2011. // Copyright 2011-2014 Riccardo Mottola. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import #import #import "PRCurvesPath.h" @class PRCCurves; @class PRImage; @interface PRCurvesView : NSView { PRCCurves *controller; BOOL hasColor; unsigned pixNum; float histogramScale; /* scale factor for both in and out histograms */ unsigned long int histogramDenormL[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned long int histogramDenormR[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned long int histogramDenormG[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned long int histogramDenormB[UCHAR_MAX+1]; /* not normalized pixel count for each level */ float histogramL[UCHAR_MAX+1]; /* normalized histogram */ float histogramR[UCHAR_MAX+1]; /* normalized histogram */ float histogramG[UCHAR_MAX+1]; /* normalized histogram */ float histogramB[UCHAR_MAX+1]; /* normalized histogram */ float histogramLTr[UCHAR_MAX+1]; /* transformed histogram */ float histogramRTr[UCHAR_MAX+1]; /* transformed histogram */ float histogramGTr[UCHAR_MAX+1]; /* transformed histogram */ float histogramBTr[UCHAR_MAX+1]; /* transformed histogram */ PRCurvesPath *pathLumi; PRCurvesPath *pathR; PRCurvesPath *pathG; PRCurvesPath *pathB; NSBezierPath *pathHLumi; NSBezierPath *pathHR; NSBezierPath *pathHG; NSBezierPath *pathHB; NSBezierPath *pathHLumiTr; NSBezierPath *pathHRTr; NSBezierPath *pathHGTr; NSBezierPath *pathHBTr; @public unsigned funL[UCHAR_MAX+1]; /* mapped function */ } -(BOOL)hasColor; -(PRCurvesPath *)luminancePath; -(PRCurvesPath *)redPath; -(PRCurvesPath *)greenPath; -(PRCurvesPath *)bluePath; - (void)initPathLumi; - (void)initPathR; - (void)initPathG; - (void)initPathB; -(void)setBlackPoint: (int)value; -(void)setWhitePoint: (int)value; -(void)setFilterController: (PRCCurves *)aFilterController; -(void)calculateHistogram: (PRImage *)image; -(void)calculateTransformedHistograms; -(void)moveControlPoint:(NSPoint)cp ofCurve:(PRCurvesPath *)curveP; @end PRICE-1.3.0/PRCurvesView.m010064400017500000012000000351671243640601700144120ustar00multixusers// // PRCurvesView.m // PRICE // // Created by Riccardo Mottola on 7 August 2011. // Copyright 2011-2014 Riccardo Mottola. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCurvesView.h" #import "PRCCurves.h" @implementation PRCurvesView - (id)initWithFrame:(NSRect)frame { self = [super initWithFrame:frame]; if (self) { hasColor = NO; pathLumi = [[PRCurvesPath alloc] init]; pathR = [[PRCurvesPath alloc] init]; pathG = [[PRCurvesPath alloc] init]; pathB = [[PRCurvesPath alloc] init]; pathHLumi = [[NSBezierPath alloc] init]; pathHR = [[NSBezierPath alloc] init]; pathHG = [[NSBezierPath alloc] init]; pathHB = [[NSBezierPath alloc] init]; pathHLumiTr = [[NSBezierPath alloc] init]; pathHRTr = [[NSBezierPath alloc] init]; pathHGTr = [[NSBezierPath alloc] init]; pathHBTr = [[NSBezierPath alloc] init]; [self initPathLumi]; [self initPathR]; [self initPathG]; [self initPathB]; histogramScale = 0.5; } return self; } - (void)initPath:(PRCurvesPath *)p { [p removeAllPoints]; [p moveToPoint: NSMakePoint(0, 0)]; [p curveToPoint: NSMakePoint(255, 255) controlPoint1: NSMakePoint(50, 0) controlPoint2: NSMakePoint(205, 255)]; } - (void)initPathLumi { [self initPath: pathLumi]; } - (void)initPathR { [self initPath: pathR]; } - (void)initPathG { [self initPath: pathG]; } - (void)initPathB { [self initPath: pathB]; } - (void)dealloc { [pathLumi release]; [pathR release]; [pathG release]; [pathB release]; [pathHLumi release]; [pathHR release]; [pathHG release]; [pathHB release]; [pathHLumiTr release]; [pathHRTr release]; [pathHGTr release]; [pathHBTr release]; [super dealloc]; } -(BOOL)hasColor { return hasColor; } -(void)setFilterController: (PRCCurves *)aFilterController; { controller = aFilterController; } -(void)setBlackPoint: (int)value { PRCurvesPath *path; NSBezierPathElement pe; NSPoint cp[3]; float diff; path = pathLumi; pe = [path elementAtIndex: 0 associatedPoints: cp]; diff = cp[0].x - (float)value; if ((pe == NSMoveToBezierPathElement) || (pe == NSLineToBezierPathElement)) { /* if we have a straight line, we move the next control point too to preserve the curve */ NSBezierPathElement pe2; NSPoint cp2[3]; if ([path elementCount] > 0) { cp[0].x = (float)value; pe2 = [path elementAtIndex: 1 associatedPoints: cp2]; if (pe2 == NSCurveToBezierPathElement) { NSLog(@"old cp2-0.x: %f", cp2[0].x); cp2[0].x = cp2[0].x - diff; NSLog(@"new cp2-0.x: %f", cp2[0].x); [path setAssociatedPoints: cp2 atIndex: 1]; } } [path setAssociatedPoints: cp atIndex: 0]; } } -(void)setWhitePoint: (int)value { PRCurvesPath *path; NSBezierPathElement pe; NSPoint cp[3]; path = pathLumi; pe = [path elementAtIndex: [path elementCount]-1 associatedPoints: cp]; if (pe == NSMoveToBezierPathElement) cp[0].x = value; else if (pe == NSLineToBezierPathElement) cp[0].x = value; else if (pe == NSCurveToBezierPathElement) { float diff; diff = cp[2].x - (float)value; cp[2].x = value; cp[1].x = cp[1].x - diff; //cp[2].x = cp[2].x - diff; } [path setAssociatedPoints: cp atIndex: [path elementCount]-1]; } -(PRCurvesPath *)luminancePath { return pathLumi; } -(PRCurvesPath *)redPath { return pathR; } -(PRCurvesPath *)greenPath { return pathG; } -(PRCurvesPath *)bluePath { return pathB; } - (void)drawRect:(NSRect)rect { [[NSColor whiteColor] set]; [NSBezierPath fillRect: [self bounds]]; if (hasColor) { [[NSColor colorWithDeviceRed:1.0 green:0.0 blue:0.0 alpha:1.0] set]; [pathHR stroke]; [[NSColor colorWithDeviceRed:1.0 green:0.0 blue:0.0 alpha:0.7] set]; [pathHR fill]; [[NSColor colorWithDeviceRed:1.0 green:0.0 blue:0.0 alpha:1.0] set]; [pathHRTr stroke]; [[NSColor colorWithDeviceRed:1.0 green:0.0 blue:0.0 alpha:0.7] set]; [pathHRTr fill]; // [[NSColor redColor] set]; // [pathR stroke]; [[NSColor colorWithDeviceRed:0.0 green:1.0 blue:0.0 alpha:1.0] set]; [pathHG stroke]; [[NSColor colorWithDeviceRed:0.0 green:1.0 blue:0.0 alpha:0.7] set]; [pathHG fill]; [[NSColor colorWithDeviceRed:0.0 green:1.0 blue:0.0 alpha:1.0] set]; [pathHGTr stroke]; [[NSColor colorWithDeviceRed:0.0 green:1.0 blue:0.0 alpha:0.7] set]; [pathHGTr fill]; // [[NSColor greenColor] set]; // [pathG stroke]; [[NSColor colorWithDeviceRed:0.0 green:0.0 blue:1.0 alpha:1.0] set]; [pathHB stroke]; [[NSColor colorWithDeviceRed:0.0 green:0.0 blue:1.0 alpha:0.7] set]; [pathHB fill]; [[NSColor colorWithDeviceRed:0.0 green:0.0 blue:1.0 alpha:1.0] set]; [pathHBTr stroke]; [[NSColor colorWithDeviceRed:0.0 green:0.0 blue:1.0 alpha:0.7] set]; [pathHBTr fill]; // [[NSColor blueColor] set]; // [pathB stroke]; // FIXME: temporary, until we have full RGB support [[NSColor blackColor] set]; [pathLumi stroke]; } else { [[NSColor colorWithDeviceWhite:0.5 alpha:1.0] set]; [pathHLumi stroke]; [[NSColor colorWithDeviceWhite:0.9 alpha:1.0] set]; [pathHLumi fill]; [[NSColor colorWithDeviceWhite:0.5 alpha:1.0] set]; [pathHLumiTr stroke]; [[NSColor colorWithDeviceWhite:0.9 alpha:1.0] set]; [pathHLumiTr fill]; [[NSColor blackColor] set]; [pathLumi stroke]; } /* boundaries */ [[NSColor blackColor] set]; [NSBezierPath strokeRect: [self bounds]]; } -(void)calculateHistogram: (PRImage *)image; { NSBitmapImageRep *theImageRep; unsigned char *theData; NSInteger w, h; NSInteger x, y; NSInteger i; NSInteger srcBytesPerPixel; NSInteger srcBytesPerRow; float maxHisto; unsigned viewHeight; float histoScale; /* get source image representation and associated information */ theImageRep = [image bitmapRep]; w = [theImageRep pixelsWide]; h = [theImageRep pixelsHigh]; pixNum = h * w; srcBytesPerRow = [theImageRep bytesPerRow]; srcBytesPerPixel = [theImageRep bitsPerPixel] / 8; hasColor = [image hasColor]; theData = [theImageRep bitmapData]; if (hasColor) { /* calculate the histogram */ for (i = 0; i <= UCHAR_MAX; i++) histogramDenormR[i] = histogramDenormG[i] = histogramDenormB[i] = 0; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { histogramDenormR[theData[y*srcBytesPerRow + x*srcBytesPerPixel]]++; histogramDenormG[theData[y*srcBytesPerRow + x*srcBytesPerPixel + 1]]++; histogramDenormB[theData[y*srcBytesPerRow + x*srcBytesPerPixel + 2]]++; } /* normalize histogram */ /* calculate the maximum luminance as maxHisto */ maxHisto = 0; for (i = 0; i <= UCHAR_MAX; i++) { histogramR[i] = (float)histogramDenormR[i] / (float)pixNum; histogramG[i] = (float)histogramDenormG[i] / (float)pixNum; histogramB[i] = (float)histogramDenormB[i] / (float)pixNum; if (histogramR[i] > maxHisto) maxHisto = histogramR[i]; if (histogramG[i] > maxHisto) maxHisto = histogramG[i]; if (histogramB[i] > maxHisto) maxHisto = histogramB[i]; } } else { /* calculate the histogram */ for (i = 0; i <= UCHAR_MAX; i++) histogramDenormL[i] = 0; for (y = 0; y < h; y++) for (x = 0; x < w; x++) histogramDenormL[theData[y*srcBytesPerRow + x*srcBytesPerPixel]]++; /* normalize histogram */ maxHisto = 0; for (i = 0; i <= UCHAR_MAX; i++) { histogramL[i] = (float)histogramDenormL[i] / (float)pixNum; if (histogramL[i] > maxHisto) maxHisto = histogramL[i]; } } viewHeight = 256; NSLog(@"maxHisto L : %f for %u", maxHisto, pixNum); histoScale = (histogramScale * viewHeight) / maxHisto; if (hasColor) { [pathHR removeAllPoints]; [pathHG removeAllPoints]; [pathHB removeAllPoints]; [pathHR moveToPoint: NSMakePoint(0, 0)]; [pathHR moveToPoint: NSMakePoint(0, 0)]; [pathHG moveToPoint: NSMakePoint(0, 0)]; [pathHB moveToPoint: NSMakePoint(0, 0)]; for (i = 0; i <= UCHAR_MAX; i++) { [pathHR lineToPoint: NSMakePoint(i, histogramR[i] * histoScale)]; [pathHG lineToPoint: NSMakePoint(i, histogramG[i] * histoScale)]; [pathHB lineToPoint: NSMakePoint(i, histogramB[i] * histoScale)]; } [pathHR lineToPoint: NSMakePoint(viewHeight, 0)]; [pathHG lineToPoint: NSMakePoint(viewHeight, 0)]; [pathHB lineToPoint: NSMakePoint(viewHeight, 0)]; } else { [pathHLumi removeAllPoints]; [pathHLumi moveToPoint: NSMakePoint(0, 0)]; for (i = 0; i <= UCHAR_MAX; i++) { [pathHLumi lineToPoint: NSMakePoint(i, histogramL[i] * histoScale)]; } [pathHLumi lineToPoint: NSMakePoint(viewHeight, 0)]; } NSLog(@"curves histogram initing ended"); } -(void)calculateFunctions { unsigned i; NSArray *curveL; curveL = [pathLumi values]; for (i = 0; i <= UCHAR_MAX; i++) funL[i] = floor([[curveL objectAtIndex: i] floatValue]); } -(void)calculateTransformedHistograms { unsigned long int histogramDenormLTr[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned long int histogramDenormRTr[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned long int histogramDenormGTr[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned long int histogramDenormBTr[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned i; float maxHisto; unsigned viewHeight; float histoScale; [self calculateFunctions]; /* zero histogram */ for (i = 0; i <= UCHAR_MAX; i++) { histogramDenormLTr[i] = 0; histogramDenormRTr[i] = 0; histogramDenormGTr[i] = 0; histogramDenormBTr[i] = 0; } /* derive new histogram */ for (i = 0; i <= UCHAR_MAX; i++) { histogramDenormLTr[funL[i]] += histogramDenormL[i]; histogramDenormRTr[funL[i]] += histogramDenormR[i]; histogramDenormGTr[funL[i]] += histogramDenormG[i]; histogramDenormBTr[funL[i]] += histogramDenormB[i]; } /* normalize histogram */ if (hasColor) { maxHisto = 0; for (i = 0; i <= UCHAR_MAX; i++) { histogramRTr[i] = (float)histogramDenormRTr[i] / (float)pixNum; histogramGTr[i] = (float)histogramDenormGTr[i] / (float)pixNum; histogramBTr[i] = (float)histogramDenormBTr[i] / (float)pixNum; if (histogramRTr[i] > maxHisto) maxHisto = histogramRTr[i]; if (histogramGTr[i] > maxHisto) maxHisto = histogramGTr[i]; if (histogramBTr[i] > maxHisto) maxHisto = histogramBTr[i]; } } else { maxHisto = 0; for (i = 0; i <= UCHAR_MAX; i++) { histogramLTr[i] = (float)histogramDenormLTr[i] / (float)pixNum; if (histogramLTr[i] > maxHisto) maxHisto = histogramLTr[i]; } } viewHeight = 256; NSLog(@"transformed maxHisto L : %f for %u", maxHisto, pixNum); histoScale = (histogramScale * viewHeight) / maxHisto; [pathHLumiTr removeAllPoints]; [pathHLumiTr moveToPoint: NSMakePoint(0, viewHeight)]; for (i = 0; i <= UCHAR_MAX; i++) { [pathHLumiTr lineToPoint: NSMakePoint(i, viewHeight-(histogramLTr[i] * histoScale))]; } [pathHLumiTr lineToPoint: NSMakePoint(viewHeight, viewHeight)]; [pathHRTr removeAllPoints]; [pathHGTr removeAllPoints]; [pathHBTr removeAllPoints]; [pathHRTr moveToPoint: NSMakePoint(0, viewHeight)]; [pathHGTr moveToPoint: NSMakePoint(0, viewHeight)]; [pathHBTr moveToPoint: NSMakePoint(0, viewHeight)]; for (i = 0; i <= UCHAR_MAX; i++) { [pathHRTr lineToPoint: NSMakePoint(i, viewHeight - (histogramRTr[i] * histoScale))]; [pathHGTr lineToPoint: NSMakePoint(i, viewHeight - (histogramGTr[i] * histoScale))]; [pathHBTr lineToPoint: NSMakePoint(i, viewHeight - (histogramBTr[i] * histoScale))]; } [pathHRTr lineToPoint: NSMakePoint(viewHeight, viewHeight)]; [pathHGTr lineToPoint: NSMakePoint(viewHeight, viewHeight)]; [pathHBTr lineToPoint: NSMakePoint(viewHeight, viewHeight)]; } - (void)moveControlPoint:(NSPoint)cp ofCurve:(PRCurvesPath *)curveP { NSEvent *nextEvent; NSPoint oldP; oldP = cp; nextEvent = [[self window] nextEventMatchingMask: NSLeftMouseUpMask | NSLeftMouseDraggedMask]; if([nextEvent type] == NSLeftMouseDragged) { NSPoint p; do { p = [nextEvent locationInWindow]; p = [self convertPoint:p fromView:nil]; /* bounds checking */ if (p.x < 0) p.x = 0; if (p.x > [self frame].size.width-1) p.x = [self frame].size.width-1; if (p.y < 0) p.y = 0; if (p.y > [self frame].size.height-1) p.y = [self frame].size.height-1; [curveP move:oldP toPoint:p]; [controller recalculateCurves:self]; [controller setBlackPointValue: (int)floor([curveP blackPoint].x)]; [controller setWhitePointValue: (int)floor([curveP whitePoint].x)]; [self setNeedsDisplay:YES]; oldP = p; nextEvent = [[self window] nextEventMatchingMask: NSLeftMouseUpMask | NSLeftMouseDraggedMask]; } while([nextEvent type] != NSLeftMouseUp); } [controller parametersChanged:self]; } - (void)mouseDown:(NSEvent *)theEvent { NSPoint p; unsigned count = [theEvent clickCount]; p = [theEvent locationInWindow]; p = [self convertPoint: p fromView: nil]; if (count == 1) { if ([pathLumi pointOnControlHandle:p]) { NSLog(@"Luminance path hit"); [self moveControlPoint:p ofCurve:pathLumi]; } else if ([pathR pointOnControlHandle:p]) { NSLog(@"Red path hit"); [self moveControlPoint:p ofCurve:pathR]; } else if ([pathG pointOnControlHandle:p]) { NSLog(@"Green path hit"); [self moveControlPoint:p ofCurve:pathG]; } else if ([pathB pointOnControlHandle:p]) { NSLog(@"Blue path hit"); [self moveControlPoint:p ofCurve:pathB]; } } else { NSLog(@"click count: %d", count); } } @end PRICE-1.3.0/PRCustTraceEdges.h010064400017500000012000000021541154706162700151440ustar00multixusers// // PRCustTraceEdges.h // PRICE // // Created by Riccardo Mottola on Fri Mar 19 2004. // Copyright (c) 2004-2011 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRProgressAction.h" #import "PRImage.h" #import "PRMedian.h" @interface PRCustTraceEdges : PRProgressAction { } - (PRImage *)edgeImage :(PRImage *)srcImage :(int)filterType :(float)thresholdLevel :(BOOL)useZeroCross :(BOOL)enable1 :(enum medianForms)form1 :(int)size1 :(BOOL)separable1 :(BOOL)enable2 :(enum medianForms)form2 :(int)size2 :(BOOL)separable2 :(BOOL) enable3 :(enum medianForms)form3 :(int)size3 :(BOOL)separable3 :(PRCProgress *)prPanel; @end PRICE-1.3.0/PRCustTraceEdges.m010064400017500000012000000245111243655310000151400ustar00multixusers// // PRCustTraceEdges.m // PRICE // // Created by Riccardo Mottola on Fri Mar 19 2004. // Copyright (c) 2004-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRCustTraceEdges.h" #import "PRTraceEdges.h" #import "PRMedian.h" #import "PRGrayscaleFilter.h" #include #include @implementation PRCustTraceEdges - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { int filterType; float thresLevel; BOOL useZeroCross; BOOL enable1; enum medianForms form1; int size1; BOOL separable1; BOOL enable2; enum medianForms form2; int size2; BOOL separable2; BOOL enable3; enum medianForms form3; int size3; BOOL separable3; /* interpret the parameters */ filterType = [[parameters objectAtIndex:0] intValue]; thresLevel = [[parameters objectAtIndex:1] floatValue]; useZeroCross = [[parameters objectAtIndex:2] boolValue]; enable1 = [[parameters objectAtIndex:3] boolValue]; form1 = [[parameters objectAtIndex:4] intValue]; size1 = [[parameters objectAtIndex:5] intValue]; separable1 = [[parameters objectAtIndex:6] boolValue]; enable2 = [[parameters objectAtIndex:7] boolValue]; form2 = [[parameters objectAtIndex:8] intValue]; size2 = [[parameters objectAtIndex:9] intValue]; separable2 = [[parameters objectAtIndex:10] boolValue]; enable3 = [[parameters objectAtIndex:11] boolValue]; form3 = [[parameters objectAtIndex:12] intValue]; size3 = [[parameters objectAtIndex:13] intValue]; separable3 = [[parameters objectAtIndex:14] boolValue]; return [self edgeImage :image :filterType :thresLevel :useZeroCross :enable1 :form1 :size1 :separable1 :enable2 :form2 :size2 :separable2 :enable3 :form3 :size3 :separable3 :progressPanel]; } - (NSString *)actionName { return @"Edge Tracer"; } - (PRImage *)edgeImage :(PRImage *)srcImage :(int)filterType :(float)thresholdLevel :(BOOL)useZeroCross :(BOOL)enable1 :(enum medianForms)form1 :(int)size1 :(BOOL)separable1 :(BOOL)enable2 :(enum medianForms)form2 :(int)size2 :(BOOL)separable2 :(BOOL) enable3 :(enum medianForms)form3 :(int)size3 :(BOOL)separable3 :(PRCProgress *)prPanel { PRImage *destImage; NSBitmapImageRep *destImageRep; unsigned char *destData; NSInteger w, h; NSInteger x, y; NSInteger destSamplesPerPixel; NSInteger destBytesPerRow; NSInteger destBytesPerPixel; PRMedian *medianFilter; PRTraceEdges *edgeFilter; int finalLevels; int finalLevelSize; progressSteps = 0; totalProgressSteps = 1; if (enable1) totalProgressSteps += 2; if (enable2) totalProgressSteps += 2; if (enable3) totalProgressSteps += 2; if (!enable1 && !enable2 && !enable3) /* if none of the median processors is enabled */ totalProgressSteps++; progPanel = prPanel; /* check the number of images to process */ finalLevels = 0; if (enable1) finalLevels++; if (enable2) finalLevels++; if (enable3) finalLevels++; finalLevelSize = 0; if (finalLevels) finalLevelSize = UCHAR_MAX / finalLevels; /* get source image representation and associated information */ if (progPanel != nil) { [self setActivity:@"Get image size"]; [self advanceProgress]; } w = [srcImage width]; h = [srcImage height]; /* check bith depth and color/greyscale image */ if ([srcImage hasColor]) { PRGrayscaleFilter *grayFilter; grayFilter = [[PRGrayscaleFilter alloc] init]; srcImage = [grayFilter filterImage:srcImage :METHOD_LUMINANCE]; [grayFilter release]; } destSamplesPerPixel = 1; /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedWhiteColorSpace bytesPerRow:0 bitsPerPixel:0]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; /* let's make the paper white */ memset(destData, UCHAR_MAX, h * destBytesPerRow); /* allocate filters */ medianFilter = [[PRMedian alloc] init]; edgeFilter = [[PRTraceEdges alloc] init]; if (finalLevels > 0) { if (enable1) { PRImage *firstImage; NSBitmapImageRep *firstImageRep; NSInteger fiBytesPerRow; NSInteger fiBytesPerPixel; unsigned char *fiData; if (progPanel != nil) { [self setActivity:@"Processing image 1: median"]; [self advanceProgress]; } firstImage = [medianFilter medianImage :srcImage :form1 :size1 :separable1 :NULL]; if (progPanel != nil) { [self setActivity:@"Processing image 1: trace edges"]; [self advanceProgress]; } firstImage = [edgeFilter edgeImage :firstImage :filterType :YES :thresholdLevel :useZeroCross]; firstImageRep = [firstImage bitmapRep]; fiBytesPerRow = [firstImageRep bytesPerRow]; fiBytesPerPixel = [firstImageRep bitsPerPixel] / 8; fiData = [firstImageRep bitmapData]; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { if (*(fiData + fiBytesPerRow*y + fiBytesPerPixel*x) == 0) *(destData + destBytesPerRow*y + destBytesPerPixel*x) -= finalLevelSize; } } } if (enable2) { PRImage *secondImage; NSBitmapImageRep *secondImageRep; NSInteger siBytesPerRow; NSInteger siBytesPerPixel; unsigned char *siData; if (progPanel != nil) { [self setActivity:@"Processing image 2: median"]; [self advanceProgress]; } secondImage = [medianFilter medianImage :srcImage :form2 :size2 :separable2 :NULL]; if (progPanel != nil) { [self setActivity:@"Processing image 2: trace edges"]; [self advanceProgress]; } secondImage = [edgeFilter edgeImage :secondImage :filterType :YES :thresholdLevel :useZeroCross]; secondImageRep = [secondImage bitmapRep]; siBytesPerRow = [secondImageRep bytesPerRow]; siBytesPerPixel = [secondImageRep bitsPerPixel] / 8; siData = [secondImageRep bitmapData]; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { if (*(siData + siBytesPerRow*y + siBytesPerPixel*x) == 0) *(destData + destBytesPerRow*y + destBytesPerPixel*x) -= finalLevelSize; } } } if (enable3) { PRImage *thirdImage; NSBitmapImageRep *thirdImageRep; NSInteger tiBytesPerRow; NSInteger tiBytesPerPixel; unsigned char *tiData; if (progPanel != nil) { [self setActivity:@"Processing image 3: median"]; [self advanceProgress]; } thirdImage = [medianFilter medianImage :srcImage :form3 :size3 :separable3 :NULL]; if (progPanel != nil) { [self setActivity:@"Processing image 3: trace edges"]; [self advanceProgress]; } thirdImage = [edgeFilter edgeImage :thirdImage :filterType :YES :thresholdLevel :useZeroCross]; thirdImageRep = [thirdImage bitmapRep]; tiBytesPerRow = [thirdImageRep bytesPerRow]; tiBytesPerPixel = [thirdImageRep bitsPerPixel] / 8; tiData = [thirdImageRep bitmapData]; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { if (*(tiData + tiBytesPerRow*y + tiBytesPerPixel*x) == 0) *(destData + destBytesPerRow*y + destBytesPerPixel*x) -= finalLevelSize; } } } } else { NSBitmapImageRep *srcImageRep; unsigned char *srcData; NSInteger srcBytesPerRow; NSInteger srcBytesPerPixel; /* no median processing */ /* we conventionally process the image */ if (progPanel != nil) { [self setActivity:@"Processing image: trace edges"]; [self advanceProgress]; } srcImage = [edgeFilter edgeImage :srcImage :filterType :YES :thresholdLevel :useZeroCross]; srcImageRep = [srcImage bitmapRep]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; srcData = [srcImageRep bitmapData]; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { if (*(srcData + srcBytesPerRow*y + srcBytesPerPixel*x) == 0) *(destData + destBytesPerRow*y + destBytesPerPixel*x) = 0; } } } /* release filters */ [medianFilter release]; [edgeFilter release]; if (progPanel != nil) { [self setActivity:@"Done"]; [self showProgress]; } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.3.0/PRDFTFilter.h010064400017500000012000000015611105335723300140540ustar00multixusers// // PRDFTFilter.h // PRICE // // Created by Riccardo Mottola on Tue Nov 18 2003. // Copyright (c) 2003-2005 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRImage.h" @interface PRDFTFilter : NSObject { } - (PRImage *)filterImage :(PRImage *)srcImage :(double **)filterMatRe :(double **)filterMatIm :(unsigned int) filterSize :(BOOL)autoRange :(id)controller; @end PRICE-1.3.0/PRDFTFilter.m010064400017500000012000000254341243641034600140670ustar00multixusers// // PRDFTFilter.m // PRICE // // Created by Riccardo Mottola on Tue Nov 18 2003. // Copyright (c) 2003-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRDFTFilter.h" #import "PRGrayscaleFilter.h" #import "FFT.h" #include #import "PRProgressAction.h" extern double *cosinus; extern double *sinus; extern unsigned int *bitRevIndex; @implementation PRDFTFilter - (PRImage *)filterImage :(PRImage *)srcImage :(double **)filterMatRe :(double **)filterMatIm :(unsigned int) num :(BOOL)autoRange :(id)controller /* perform a convolution between the source image and the filter given by the two matrices */ { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; unsigned int w, h; unsigned int x, y; /* image scanning variables */ unsigned int i; /* convolve matrix scanning */ unsigned char *srcData; unsigned char *destData; NSInteger destSamplesPerPixel; NSInteger srcBytesPerRow; NSInteger srcBytesPerPixel; unsigned int leftBorder, topBorder; /* borders to center the image */ unsigned int rightBorder, bottomBorder; unsigned int bitNum; double *Aa; double *Ab; double *ya; double *yb; double **Ma; /* non quantized, float image */ double **Mb; double min, max, scale; if (controller) { [controller setActivity:@"initialize FFT"]; [controller advanceProgress]; } /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImage width]; h = [srcImage height]; /* calculate back the bit number */ NSAssert(num > 0, @"Internal error. num <= 0"); bitNum = binaryLog(num); sinus = (double*)calloc(num, sizeof(double)); cosinus = (double*)calloc(num, sizeof(double)); bitRevIndex = (unsigned int*)calloc(num, sizeof(unsigned int)); initTrigonometrics(num, bitNum); if (![srcImage hasColor]) { PRGrayscaleFilter *grayFilter; printf("Color image\n"); grayFilter = [[PRGrayscaleFilter alloc] init]; srcImage = [grayFilter filterImage:srcImage :METHOD_AVERAGE]; [grayFilter release]; NSLog (@"done greyscale converting"); /* we reget previous information that is no longer valid */ /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; } srcBytesPerRow = [srcImageRep bytesPerRow]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; /* allocate 1-D FFT arrays */ Aa = (double*)calloc(num, sizeof(double)); Ab = (double*)calloc(num, sizeof(double)); ya = (double*)calloc(num, sizeof(double)); yb = (double*)calloc(num, sizeof(double)); /* allocate float destination matrix */ Ma = (double**)calloc(num, sizeof(double*)); for (i = 0; i < num; i++) { Ma[i] = (double*)calloc(num, sizeof(double)); if (!Ma[i]) { printf("out of memory allocating float matrix?\n"); return srcImage; } memset(Ma[i], '\000', num); } Mb = (double**)calloc(num, sizeof(double*)); for (i = 0; i < num; i++) { Mb[i] = (double*)calloc(num, sizeof(double)); if (!Mb[i]) { printf("out of memory allocating float matrix?\n"); return srcImage; } memset(Mb[i], '\000', num); } /* allocate destination image and its representation */ destSamplesPerPixel = 1; destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedWhiteColorSpace bytesPerRow:w*destSamplesPerPixel bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; /* calculate borders */ leftBorder = (num - w) / 2; topBorder = (num - h) / 2; rightBorder = (num - w) - leftBorder; bottomBorder = (num - h) - topBorder; printf("top %d left %d\n", topBorder, leftBorder); /* copy the image to the float matrix */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) Ma[y + topBorder][x + leftBorder] = (double)srcData[y * srcBytesPerRow + x*srcBytesPerPixel] / UCHAR_MAX; /* the image is greyscale, no bit-depth displace */ /* replicate borders */ /* top */ for (y = 0; y < topBorder; y++) for (x = 0; x < w; x++) Ma[y][x + leftBorder] = Ma[2*topBorder-y-1][x + leftBorder]; /* bottom */ for (y = 0; y < bottomBorder; y++) for (x = 0; x < w; x++) Ma[y+h+topBorder][x + leftBorder] = Ma[(h+topBorder)-y-1][x + leftBorder]; if (leftBorder > 0) { /* top left */ for (y = 0; y < topBorder; y++) for (x = 0; x < leftBorder; x++) Ma[y][x] = Ma[2*topBorder-y-1][2*leftBorder-x-1]; /* left */ for (y = 0; y < h; y++) for (x = 0; x < leftBorder; x++) Ma[y + topBorder][x] = Ma[y + topBorder][2*leftBorder-x-1]; /* bottom left */ for (y = 0; y < topBorder; y++) for (x = 0; x < leftBorder; x++) Ma[y+h+topBorder][x] = Ma[(h+topBorder)-y-1][2*leftBorder-x-1]; } if (rightBorder > 0) { /* top right */ for (y = 0; y < topBorder; y++) for (x = 0; x < rightBorder; x++) Ma[y][x+w+leftBorder] = Ma[2*topBorder-y-1][(w+leftBorder)-x-1]; /* right */ for (y = 0; y < h; y++) for (x = 0; x < rightBorder; x++) Ma[y + topBorder][x+w+leftBorder] = Ma[y + topBorder][(w+rightBorder)-x-1]; /* bottom right */ for (y = 0; y < bottomBorder; y++) for (x = 0; x < rightBorder; x++) Ma[y+h+topBorder][x+w+leftBorder] = Ma[(h+topBorder)-y-1][(w+rightBorder)-x-1]; } /* execute the actual filtering */ if (controller) { [controller setActivity:@"FFT forward pass"]; [controller advanceProgress]; } /* forward pass */ /* horizontal pass */ for (y = 0; y < num; y++) { for (i = 0; i < num; i++) { Aa[i] = Ma[y][i]; Ab[i] = Mb[y][i]; } fft(num, bitNum, Aa, Ab, ya, yb); for (i = 0; i < num; i++) { Ma[y][i] = ya[i]; Mb[y][i] = yb[i]; } } /* vertical pass */ for (x = 0; x < num; x++) { for (i = 0; i < num; i++) { Aa[i] = Ma[i][x]; Ab[i] = Mb[i][x]; } fft(num, bitNum, Aa, Ab, ya, yb); for (i = 0; i < num; i++) { Ma[i][x] = ya[i]; Mb[i][x] = yb[i]; } } // printf("Fa %f %f\n", filterMatRe[0][0], filterMatRe[30][30]); /* applying the transformation */ if (filterMatIm) /* we have a filter with I part */ for (x = 0; x < num; x++) for (y = 0; y < num; y++) { Ma[x][y] = Ma[x][y]*filterMatRe[x][y] - Mb[x][y]*filterMatIm[x][y]; Mb[x][y] = Ma[x][y]*filterMatIm[x][y] + Mb[x][y]*filterMatRe[x][y]; } else for (x = 0; x < num; x++) for (y = 0; y < num; y++) { Ma[x][y] = Ma[x][y]*filterMatRe[x][y]; Mb[x][y] = Mb[x][y]*filterMatRe[x][y]; } if (controller) { [controller setActivity:@"FFT reverse pass"]; [controller advanceProgress]; } /* reverse pass */ /* horizontal pass */ for (y = 0; y < num; y++) { for (i = 0; i < num; i++) { Aa[i] = Ma[y][i]; Ab[i] = Mb[y][i]; } ifft(num, bitNum, Aa, Ab, ya, yb); for (i = 0; i < num; i++) { Ma[y][i] = ya[i]; Mb[y][i] = yb[i]; } } /* vertical pass */ for (x = 0; x < num; x++) { for (i = 0; i < num; i++) { Aa[i] = Ma[i][x]; Ab[i] = Mb[i][x]; } ifft(num, bitNum, Aa, Ab, ya, yb); for (i = 0; i < num; i++) { Ma[i][x] = ya[i]; Mb[i][x] = yb[i]; } } if (autoRange) { /* AutoRange result */ /* now we find the range */ min = DBL_MAX; max = DBL_MIN; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { if (Ma[y+topBorder][x+leftBorder] > max) max = Ma[y+topBorder][x+leftBorder]; if (Ma[y+topBorder][x+leftBorder] < min) min = Ma[y+topBorder][x+leftBorder]; } } scale = fabs(max - min)/(double)UCHAR_MAX; printf ("min = %f, max = %f, scale = %f\n", min, max, scale); /* now we copy the result back, after scaling */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) destData[y*w + x] = (unsigned char) rint((Ma[y+topBorder][x+leftBorder]-min)/scale); } else { /* just scale back the result */ double sample; /* now we copy the result back, after clipping */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) { sample = rint(Ma[y+topBorder][x+leftBorder]*UCHAR_MAX); if (sample > UCHAR_MAX) sample = UCHAR_MAX; else if (sample < 0) sample = 0; destData[y*w + x] = (unsigned char) sample; } } [destImage setBitmapRep:destImageRep]; [destImageRep release]; /* free up the 1-D arrays */ free(Aa); free(Ab); free(ya); free(yb); /* now we free our float matrix */ for (i = 0; i < num; i++) free(Ma[i]); free(Ma); for (i = 0; i < num; i++) free(Mb[i]); free(Mb); /* free other arrays */ free(sinus); free(cosinus); free(bitRevIndex); if (controller) { [controller setActivity:@"FFT done"]; [controller showProgress]; } [destImage autorelease]; return destImage; } @end PRICE-1.3.0/PRDFTHighPass.h010064400017500000012000000015701105335723300143350ustar00multixusers// // PRDFTHighPass.h // PRICE // // Created by Riccardo Mottola on Fri Oct 24 2003. // Copyright (c) 2003-2005 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRProgressAction.h" #import "PRImage.h" @interface PRDFTHighPass : PRProgressAction { } - (PRImage *)transformImage:(PRImage *)srcImage :(BOOL)autoRange :(float) BPFreq :(float) BSFreq :(PRCProgress *)prPanel; @end PRICE-1.3.0/PRDFTHighPass.m010064400017500000012000000110221130615755300143370ustar00multixusers// // PRDFTHighPass.m // PRICE // // Created by Riccardo Mottola on Fri Oct 24 2003. // Copyright (c) 2003-2009 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRDFTHighPass.h" #import "PRDFTFilter.h" #import "FFT.h" #include "math.h" extern double *cosinus; extern double *sinus; extern unsigned int *bitRevIndex; @implementation PRDFTHighPass - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { BOOL autoRange; float bandPassFreq; float bandStopFreq; autoRange = [[parameters objectAtIndex:0] boolValue]; bandPassFreq = [[parameters objectAtIndex:1] floatValue]; bandStopFreq = [[parameters objectAtIndex:2] floatValue]; return [self transformImage:image :autoRange :bandPassFreq :bandStopFreq :progressPanel]; } - (NSString *)actionName { return @"DFT High Pass"; } - (PRImage *)transformImage:(PRImage *)srcImage :(BOOL)autoRange :(float) BPFreq :(float) BSFreq :(PRCProgress *)prPanel { PRDFTFilter *filter; double **Fa, **Fb; unsigned int i, j; unsigned int w, h; unsigned int bitNum; unsigned int num; unsigned int halfNum; float radius; PRImage *destImage; progressSteps = 0; totalProgressSteps = 5; progPanel = prPanel; /* get source image representation and associated information */ if (progPanel != nil) { [self setActivity:@"Get image size"]; [self advanceProgress]; } w = [srcImage width]; h = [srcImage height]; /* we set the image square to the nearest power of two on the longer side */ if (w > h) bitNum = binaryLog(w); else bitNum = binaryLog(h); num = binpow(bitNum); /* calculate the half comprising the zero */ halfNum = (num >> 1); NSLog(@"halfNum %d", halfNum); /* allocate filter matrix */ Fa = (double**)calloc(num, sizeof(double*)); for (i = 0; i < num; i++) { Fa[i] = (double*)calloc(num, sizeof(double)); if (!Fa[i]) { printf("out of memory allocating float matrix?\n"); return srcImage; } memset(Fa[i], '\000', num); } Fb = (double**)calloc(num, sizeof(double*)); for (i = 0; i < num; i++) { Fb[i] = (double*)calloc(num, sizeof(double)); if (!Fb[i]) { printf("out of memory allocating float matrix?\n"); return srcImage; } memset(Fb[i], '\000', num); } /* calculate the filter */ NSLog(@"BP %f, BS %f", BPFreq, BSFreq); /* top left quadrant */ for (i = 0; i < halfNum; i++) for (j = 0; j < halfNum; j++) { radius = sqrt(i*i + j*j) / halfNum; if (radius > BPFreq) { Fa[i][j] = 1; } else if (radius > BSFreq) { Fa[i][j] = 0.5*(cos(M_PI*(BPFreq-radius)/(BPFreq-BSFreq))+1); } } /* top right quadrant */ for (i = 0; i < halfNum; i++) for (j = 0; j < halfNum; j++) Fa[i][num - j - 1] = Fa[i][j]; /* bottom left quadrant */ for (i = 0; i < halfNum; i++) for (j = 0; j < halfNum; j++) Fa[num - i - 1][j] = Fa[i][j]; /* bottom right quadrant */ for (i = 0; i < halfNum; i++) for (j = 0; j < halfNum; j++) Fa[num - i - 1][num - j - 1] = Fa[i][j]; if (progPanel != nil) { [self setActivity:@"run the filter"]; [self advanceProgress]; } /* instantiate the filter */ filter = [[PRDFTFilter alloc] init]; /* run it */ destImage = [[filter filterImage :srcImage :Fa :Fb :num :autoRange :NULL] retain]; /* release filter */ [filter release]; /* now we free our filter matrix */ for (i = 0; i < num; i++) free(Fa[i]); free(Fa); for (i = 0; i < num; i++) free(Fb[i]); free(Fb); if (progPanel != nil) { [self setActivity:@"Done"]; [self showProgress]; } [destImage autorelease]; return destImage; } @end PRICE-1.3.0/PRDFTLowPass.h010064400017500000012000000015671105335723300142250ustar00multixusers// // PRDFTLowPass.h // PRICE // // Created by Riccardo Mottola on Sat Sep 13 2003. // Copyright (c) 2003-2005 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRProgressAction.h" #import "PRImage.h" @interface PRDFTLowPass : PRProgressAction { } - (PRImage *) transformImage:(PRImage *)srcImage :(BOOL)autoRange :(float) BPFreq :(float) BSFreq :(PRCProgress *)prPanel; @end PRICE-1.3.0/PRDFTLowPass.m010064400017500000012000000100601130615755300142220ustar00multixusers// // PRDFTLowPass.m // PRICE // // Created by Riccardo Mottola on Sat Sep 13 2003. // Copyright (c) 2003-2009 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRDFTLowPass.h" #import "PRDFTFilter.h" #import "FFT.h" #include "math.h" @implementation PRDFTLowPass - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { BOOL autoRange; float bandPassFreq; float bandStopFreq; autoRange = [[parameters objectAtIndex:0] boolValue]; bandPassFreq = [[parameters objectAtIndex:1] floatValue]; bandStopFreq = [[parameters objectAtIndex:2] floatValue]; return [self transformImage:image :autoRange :bandPassFreq :bandStopFreq :progressPanel]; } - (NSString *)actionName { return @"DFT Low Pass"; } - (PRImage *)transformImage:(PRImage *)srcImage :(BOOL)autoRange :(float) BPFreq :(float) BSFreq :(PRCProgress *)prPanel { PRDFTFilter *filter; double **Fa; unsigned int i, j; unsigned int w, h; unsigned int bitNum; unsigned int num; unsigned int halfNum; PRImage *destImage; float radius; progressSteps = 0; totalProgressSteps = 5; progPanel = prPanel; /* get source image associated information */ if (progPanel != nil) { [self setActivity:@"Get image size"]; [self advanceProgress]; } w = [srcImage width]; h = [srcImage height]; /* we set the image square to the nearest power of two on the longer side */ if (w > h) bitNum = binaryLog(w); else bitNum = binaryLog(h); num = binpow(bitNum); /* calculate the half comprising the zero */ halfNum = (num >> 1); NSLog(@"halfNum %d", halfNum); /* allocate filter matrix */ Fa = (double**)calloc(num, sizeof(double*)); for (i = 0; i < num; i++) { Fa[i] = (double*)calloc(num, sizeof(double)); if (!Fa[i]) { printf("out of memory allocating float matrix?\n"); return srcImage; } memset(Fa[i], '\000', num); } /* calculate the filter */ NSLog(@"BP %f, BS %f", BPFreq, BSFreq); /* top left quadrant */ for (i = 0; i <= halfNum; i++) for (j = 0; j <= halfNum; j++) { radius = sqrt(i*i + j*j) / halfNum; if (radius < BPFreq) { Fa[i][j] = 1; } else if (radius < BSFreq) { Fa[i][j] = 0.5*(cos(M_PI*(radius-BPFreq)/(BSFreq-BPFreq))+1); } } /* top right quadrant */ for (i = 0; i < halfNum; i++) for (j = 0; j < halfNum-1; j++) Fa[i][num - j - 1] = Fa[i][j]; /* bottom left quadrant */ for (i = 0; i < halfNum-1; i++) for (j = 0; j < halfNum; j++) Fa[num - i - 1][j] = Fa[i][j]; /* bottom right quadrant */ for (i = 0; i < halfNum-1; i++) for (j = 0; j < halfNum-1; j++) Fa[num - i - 1][num - j - 1] = Fa[i][j]; if (progPanel != nil) { [self setActivity:@"run the filter"]; [self advanceProgress]; } /* instantiate the filter */ filter = [[PRDFTFilter alloc] init]; /* run it */ destImage = [[filter filterImage :srcImage :Fa :NULL :num :autoRange :self] retain]; /* release filter */ [filter release]; /* now we free our filter matrix */ for (i = 0; i < num; i++) free(Fa[i]); free(Fa); if (progPanel != nil) { [self setActivity:@"Done"]; [self showProgress]; } [destImage autorelease]; return destImage; } @end PRICE-1.3.0/PREqualize.h010064400017500000012000000015051111037272600140440ustar00multixusers// // PREqualize.h // PRICE // // Created by Riccardo Mottola on Fri Dec 05 2003. // Copyright (c) 2003-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilter.h" #define COLOR_SPACE_RGB 1 #define COLOR_SPACE_YUV 2 @interface PREqualize : PRFilter { } - (PRImage *)equalizeImage:(PRImage *)srcImage :(int)space; @end PRICE-1.3.0/PREqualize.m010064400017500000012000000300441243536016000140510ustar00multixusers// // PREqualize.m // PRICE // Image level equalization // // Created by Riccardo Mottola on Fri Dec 05 2003. // Copyright (c) 2003-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #include #include #import "PREqualize.h" #if defined (__SVR4) && defined (__sun) #define rintf(x) rint(x) #endif @implementation PREqualize - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { int space; /* interpret the parameters */ space = [[parameters objectAtIndex:0] intValue]; return [self equalizeImage:image :space]; } - (NSString *)actionName { return @"Equalize"; } - (PRImage *)equalizeImage:(PRImage *)srcImage :(int)space { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; NSInteger i; unsigned char *srcData; unsigned char *destData; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; int pixNum; BOOL hasAlpha; /* some trace */ NSLog(@"levels: %d", UCHAR_MAX); NSLog(@"space: %d", space); /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; pixNum = h * w; NSLog(@"pixels: %d", pixNum); srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; destSamplesPerPixel = srcSamplesPerPixel; hasAlpha = [srcImageRep hasAlpha]; /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:[srcImage hasAlpha] isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:w*destSamplesPerPixel bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; if ([srcImage hasColor]) { if (space == COLOR_SPACE_RGB) { unsigned long int histogramDenormR[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned long int histogramDenormG[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned long int histogramDenormB[UCHAR_MAX+1]; /* not normalized pixel count for each level */ float histogramR[UCHAR_MAX+1]; /* normalized histogram */ float histogramG[UCHAR_MAX+1]; /* normalized histogram */ float histogramB[UCHAR_MAX+1]; /* normalized histogram */ float cumulativeHistogramR[UCHAR_MAX+1]; /* cumulative histogram */ float cumulativeHistogramG[UCHAR_MAX+1]; /* cumulative histogram */ float cumulativeHistogramB[UCHAR_MAX+1]; /* cumulative histogram */ /* calculate the histogram */ for (i = 0; i <= UCHAR_MAX; i++) histogramDenormR[i] = histogramDenormG[i] = histogramDenormB[i] = 0; for (y = 0; y < h; y++) for (x = 0; x < w*3; x += 3) { histogramDenormR[srcData[y*srcBytesPerRow + srcBytesPerPixel*x]]++; histogramDenormG[srcData[y*srcBytesPerRow + srcBytesPerPixel*x + 1]]++; histogramDenormB[srcData[y*srcBytesPerRow + srcBytesPerPixel*x + 2]]++; } /* normalize histogram */ for (i = 0; i <= UCHAR_MAX; i++) { histogramR[i] = (float)histogramDenormR[i] / (float)pixNum; histogramG[i] = (float)histogramDenormG[i] / (float)pixNum; histogramB[i] = (float)histogramDenormB[i] / (float)pixNum; } /* cumulative histogram */ cumulativeHistogramR[0] = histogramR[0]; cumulativeHistogramG[0] = histogramG[0]; cumulativeHistogramB[0] = histogramB[0]; for (i = 1; i <= UCHAR_MAX; i++) { cumulativeHistogramR[i] = cumulativeHistogramR[i-1] + histogramR[i]; cumulativeHistogramG[i] = cumulativeHistogramG[i-1] + histogramG[i]; cumulativeHistogramB[i] = cumulativeHistogramB[i-1] + histogramB[i]; } /* equalize */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) { destData[y*destBytesPerRow + destBytesPerPixel*x] = floor((UCHAR_MAX+0.9)*cumulativeHistogramR[srcData[y*srcBytesPerRow + srcBytesPerPixel*x]]); destData[y*destBytesPerRow + destBytesPerPixel*x + 1] = floor((UCHAR_MAX+0.9)*cumulativeHistogramG[srcData[y*srcBytesPerRow + srcBytesPerPixel*x + 1]]); destData[y*destBytesPerRow + destBytesPerPixel*x + 2] = floor((UCHAR_MAX+0.9)*cumulativeHistogramB[srcData[y*srcBytesPerRow + srcBytesPerPixel*x + 2]]); if (hasAlpha) destData[y*destBytesPerRow + destBytesPerPixel*x + 3] = srcData[y*srcBytesPerRow + srcBytesPerPixel*x + 3]; } } else if (space == COLOR_SPACE_YUV) { unsigned long int histogramDenormY[UCHAR_MAX+1]; /* not normalized pixel count for each level */ float histogramY[UCHAR_MAX+1]; /* normalized histogram */ float cumulativeHistogramY[UCHAR_MAX+1]; /* cumulative histogram */ register int r, g, b; unsigned char yy, cb, cr; /* * JPEG-YCbCr (601) from "digital 8-bit R'G'B' " * ======================================================================== * Y' = + 0.299 * R'd + 0.587 * G'd + 0.114 * B'd * Cb = 128 - 0.168736 * R'd - 0.331264 * G'd + 0.5 * B'd * Cr = 128 + 0.5 * R'd - 0.418688 * G'd - 0.081312 * B'd * ........................................................................ * R'd, G'd, B'd in {0, 1, 2, ..., 255} * Y', Cb, Cr in {0, 1, 2, ..., 255} * R = Y + 1.402 (Cr-128) * G = Y - 0.34414 (Cb-128) - 0.71414 (Cr-128) * B = Y + 1.772 (Cb-128) */ /* first we convert the whole image to YCC-d */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) { r = srcData[y*srcBytesPerRow + srcBytesPerPixel*x]; g = srcData[y*srcBytesPerRow + srcBytesPerPixel*x + 1]; b = srcData[y*srcBytesPerRow + srcBytesPerPixel*x + 2]; yy = rintf( + 0.2990f*r + 0.5870f*g + 0.1140f*b); cb = rintf(128.0f - 0.1687f*r - 0.3313f*g + 0.5000f*b); cr = rintf(128.0f + 0.5000f*r - 0.4187f*g - 0.0813f*b); destData[y*destBytesPerRow + destBytesPerPixel*x] = yy; destData[y*destBytesPerRow + destBytesPerPixel*x + 1] = cb; destData[y*destBytesPerRow + destBytesPerPixel*x + 2] = cr; if (hasAlpha) destData[y*destBytesPerRow + destBytesPerPixel*x + 3] = srcData[y*srcBytesPerRow + srcBytesPerPixel*x + 3]; } /* calculate the histogram */ for (i = 0; i <= UCHAR_MAX; i++) histogramDenormY[i] = 0; for (y = 0; y < h; y++) for (x = 0; x < w; x++) histogramDenormY[destData[y*destBytesPerRow + destBytesPerPixel*x]]++; /* normalize histogram */ for (i = 0; i <= UCHAR_MAX; i++) histogramY[i] = (float)histogramDenormY[i] / (float)pixNum; /* cumulative histogram */ cumulativeHistogramY[0] = histogramY[0]; for (i = 1; i <= UCHAR_MAX; i++) cumulativeHistogramY[i] = cumulativeHistogramY[i-1] + histogramY[i]; /* equalize */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) { destData[y*destBytesPerRow + destBytesPerPixel*x] = floor((UCHAR_MAX+0.9)*cumulativeHistogramY[destData[y*destBytesPerRow + destBytesPerPixel*x]]); } /* now we convert back to RGB */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) { yy = destData[y*destBytesPerRow + destBytesPerPixel*x]; cb = destData[y*destBytesPerRow + destBytesPerPixel*x + 1]; cr = destData[y*destBytesPerRow + destBytesPerPixel*x + 2]; r = yy + (int)rintf(1.40200f*(cr-128)); g = yy - (int)rintf(0.34414f*(cb-128) + 0.71414f*(cr-128)); b = yy + (int)rintf(1.77200f*(cb-128)); r = r > UCHAR_MAX ? UCHAR_MAX : r; g = g > UCHAR_MAX ? UCHAR_MAX : g; b = b > UCHAR_MAX ? UCHAR_MAX : b; r = r < 0 ? 0 : r; g = g < 0 ? 0 : g; b = b < 0 ? 0 : b; destData[y*destBytesPerRow + destBytesPerPixel*x] = r; destData[y*destBytesPerRow + destBytesPerPixel*x + 1] = g; destData[y*destBytesPerRow + destBytesPerPixel*x + 2] = b; /* no need to convert back alpha channel */ } } } else { unsigned long int histogramDenorm[UCHAR_MAX+1]; /* not normalized pixel count for each level */ float histogram[UCHAR_MAX+1]; /* normalized histogram */ float cumulativeHistogram[UCHAR_MAX+1]; /* cumulative histogram */ /* calculate the histogram */ for (i = 0; i <= UCHAR_MAX; i++) histogramDenorm[i] = 0; for (y = 0; y < h; y++) for (x = 0; x < w; x++) histogramDenorm[srcData[y*srcBytesPerRow + x]]++; /* normalize histogram */ for (i = 0; i <= UCHAR_MAX; i++) histogram[i] = (float)histogramDenorm[i] / (float)pixNum; /* cumulative histogram */ cumulativeHistogram[0] = histogram[0]; for (i = 1; i <= UCHAR_MAX; i++) cumulativeHistogram[i] = cumulativeHistogram[i-1] + histogram[i]; /* equalize */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) { destData[y*destBytesPerRow + destBytesPerPixel*x] = floor((UCHAR_MAX+0.9)*cumulativeHistogram[srcData[y*srcBytesPerRow + srcBytesPerPixel*x]]); if (hasAlpha) destData[y*destBytesPerRow + destBytesPerPixel*x + 1] = srcData[y*srcBytesPerRow + srcBytesPerPixel*x + 1]; } } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.3.0/PRFilter.h010064400017500000012000000017331134352212700135150ustar00multixusers// // PRFilter.h // PRICE // // Created by Riccardo Mottola on 11/8/08. // Copyright (c) 2008-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRImage.h" #import "PRCProgress.h" #import "PRFilterController.h" @interface PRFilter : NSObject { @protected PRFilterController *filterController; } - (BOOL)displayProgress; - (NSString *)actionName; - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(id )progressPanel; @end PRICE-1.3.0/PRFilter.m010064400017500000012000000021361162202662200135170ustar00multixusers// // PRFilter.m // PRICE // // Created by Riccardo Mottola on 11/8/08. // Copyright (c) 2008-2011 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRFilter.h" @implementation PRFilter /** * override this method to decide wether or not the progress panel gets displayed */ - (BOOL)displayProgress { return YES; } - (NSString *)actionName { return @"Filter"; } - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(id )progressPanel { [NSException raise:@"PRFilter Abstract Method" format:@"filterImage: Subclasses should provide implementation"]; return nil; } @end PRICE-1.3.0/PRFilterController.h010064400017500000012000000021351244261601400155560ustar00multixusers// // PRFilterController.h // PRICE // Filter Controller // // Created by Riccardo Mottola on 2/19/10. // Copyright 2010-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRImage.h" @class PRPreviewController; @class PRFilter; @interface PRFilterController : NSObject { PRPreviewController *previewController; PRFilter *filter; NSArray *oldParameters; } - (IBAction)showFilter:(id)sender; - (IBAction)filterOK:(id)sender; - (IBAction)filterCancel:(id)sender; - (IBAction)parametersChanged:(id)sender; - (void)closeFilterPanel; - (NSArray *)encodeParameters; - (PRImage *)filteredImage; @end PRICE-1.3.0/PRFilterController.m010064400017500000012000000054231244262620000155640ustar00multixusers// // PRFilterController.m // PRICE // Filter Controller // // Created by Riccardo Mottola on 2/19/10. // Copyright 2010-2011 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRFilterController.h" #import "PRImage.h" #import "PRFilter.h" #import "MyDocument.h" @implementation PRFilterController - (void)dealloc { [oldParameters release]; [filter release]; [super dealloc]; } /** generic action to be called when the filter parameters change and update of the preview is desired */ - (IBAction)parametersChanged:(id)sender { NSArray *newParameters; newParameters = [self encodeParameters]; if (oldParameters && [newParameters isEqualToArray:oldParameters]) return; [newParameters retain]; [oldParameters release]; oldParameters = newParameters; if ([previewController continuous]) [previewController updatePreview:sender]; } /** method to encode the interface settings and pass them as an array to the filter it needs to be sublcassed by each filter controller */ - (NSArray *)encodeParameters { return nil; } /** shows the filter panel */ - (IBAction)showFilter:(id)sender { previewController = [[NSApp delegate] previewController]; [previewController setFilterController: self]; [previewController cleanPreview:self]; [previewController showPreview]; } /** method to hide the filter panel. This needs to be overridden. This method gets invoked if necessary at the end of filterOk. This method gets invoked on filterCancel */ - (void)closeFilterPanel { NSLog(@"closeFilterPanel: This method should be overridden."); } /** action invoked to run the filter */ - (IBAction)filterOK:(id)sender { [[[NSDocumentController sharedDocumentController] currentDocument] runFilter:filter with:[self encodeParameters]]; if ([[NSApp delegate] prefClosePanels]) { [self closeFilterPanel]; [previewController hidePreview]; } } /** action invoked by cancelling the filter action */ - (IBAction)filterCancel:(id)sender { [self closeFilterPanel]; [previewController hidePreview]; } - (PRImage *)filteredImage { PRImage *img; img = [filter filterImage:[[[NSDocumentController sharedDocumentController] currentDocument] activeImage] with:[self encodeParameters] progressPanel:previewController]; return img; } @end PRICE-1.3.0/PRFourier.h010064400017500000012000000014021110735716600137030ustar00multixusers// // PRFourier.h // PRICE // // Created by Riccardo Mottola on Fri Jan 24 2003. // Copyright (c) 2003-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilter.h" @interface PRFourier : PRFilter { } - (PRImage *)transformImage:(PRImage *)srcImage; @end PRICE-1.3.0/PRFourier.m010064400017500000012000000202641243640752000137130ustar00multixusers// // PRFourier.m // PRICE // // Created by Riccardo Mottola on Fri Jan 24 2003. // Copyright (c) 2003-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRFourier.h" #import "PRGrayscaleFilter.h" #include "FFT.h" extern double *cosinus; extern double *sinus; extern unsigned int *bitRevIndex; @implementation PRFourier - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { /* interpret the parameters */ return [self transformImage:image]; } - (NSString *)actionName { return @"FFT"; } - (PRImage *)transformImage:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; unsigned int w, h; unsigned int x, y; /* image scanning variables */ unsigned int halfW, halfH; /* the middle */ unsigned int i; /* convolve matrix scanning */ unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; int destSamplesPerPixel; NSInteger srcBytesPerRow; NSInteger srcBytesPerPixel; int num; unsigned int bitNum; double *Aa; double *Ab; double *ya; double *yb; double **Ma; /* non quantized output */ double **Mb; double min, max, scale; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImage width]; h = [srcImage height]; if (w > h) bitNum = binaryLog(w); else bitNum = binaryLog(h); num = binpow(bitNum); NSAssert(num > 0, @"PRFourier. Internal error. num <= 0"); /* find the center, maybe a better way is needed */ halfW = (unsigned int) rint(w / 2); halfH = (unsigned int) rint(h / 2); sinus = (double*)calloc(num, sizeof(double)); cosinus = (double*)calloc(num, sizeof(double)); bitRevIndex = (unsigned int*)calloc(num, sizeof(unsigned int)); initTrigonometrics(num, bitNum); Aa = (double*)calloc(num, sizeof(double)); Ab = (double*)calloc(num, sizeof(double)); ya = (double*)calloc(num, sizeof(double)); yb = (double*)calloc(num, sizeof(double)); if ([srcImage hasColor]) { PRGrayscaleFilter *grayFilter; printf("Color image\n"); grayFilter = [[PRGrayscaleFilter alloc] init]; srcImage = [grayFilter filterImage:srcImage :METHOD_AVERAGE]; [grayFilter release]; srcImageRep = [srcImage bitmapRep]; } srcBytesPerRow = [srcImageRep bytesPerRow]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; destSamplesPerPixel = 1; /* allocate float destination matrix */ Ma = (double**)calloc(num, sizeof(double*)); for (i = 0; i < num; i++) { Ma[i] = (double*)calloc(num, sizeof(double)); if (!Ma[i]) { printf("out of memory allocating float matrix?\n"); return srcImage; } memset(Ma[i], '\000', num); } Mb = (double**)calloc(num, sizeof(double*)); for (i = 0; i < num; i++) { Mb[i] = (double*)calloc(num, sizeof(double)); if (!Mb[i]) { printf("out of memory allocating float matrix?\n"); return srcImage; } memset(Mb[i], '\000', num); } /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedWhiteColorSpace bytesPerRow:w*destSamplesPerPixel bitsPerPixel:0] ; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; /* copy the image to the float matrix */ for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { p1 = srcData + (y * srcBytesPerRow + x*srcBytesPerPixel); Ma[y][x] = (double) *p1 / UCHAR_MAX; } } /* replicate borders */ if (w < num) { for (y = 0; y < h; y++) { for (x = w; x < num; x++) { p1 = srcData + (y * srcBytesPerRow + (srcBytesPerRow - (x*srcBytesPerPixel-srcBytesPerRow+1))); Ma[y][x] = (double) *p1 / UCHAR_MAX; } } } if (h < num) { for (y = h; y < num; y++) { for (x = 0; x < w; x++) { p1 = srcData + ((h - (y-h+1)) * srcBytesPerRow + x*srcBytesPerPixel); Ma[y][x] = (double) *p1 / UCHAR_MAX; } } } /* execute the actual filtering */ /* horizontal pass */ for (y = 0; y < num; y++) { for (i = 0; i < num; i++) { Aa[i] = Ma[y][i]; Ab[i] = Mb[y][i]; } fft(num, bitNum, Aa, Ab, ya, yb); for (i = 0; i < num; i++) { Ma[y][i] = ya[i]; Mb[y][i] = yb[i]; } } /* vertical pass */ for (x = 0; x < num; x++) { for (i = 0; i < num; i++) { Aa[i] = Ma[i][x]; Ab[i] = Mb[i][x]; } fft(num, bitNum, Aa, Ab, ya, yb); for (i = 0; i < num; i++) { Ma[i][x] = ya[i]; Mb[i][x] = yb[i]; } } /* log of rised square modulus */ for (y = 0; y < num; y++) { for (x = 0; x < num; x++) { double temp; temp = Ma[y][x]*Ma[y][x] + Mb[y][x]*Mb[y][x] + 1; if (temp <= 1) Ma[y][x] = 0; else Ma[y][x] = log(temp); } } /* now we find the range */ min = DBL_MAX; max = DBL_MIN; y = 0; for (x = 1; x < w; x++) { if (Ma[y][x] > max) max = Ma[y][x]; if (Ma[y][x] < min) min = Ma[y][x]; } for (y = 1; y < h; y++) { for (x = 0; x < w; x++) { if (Ma[y][x] > max) max = Ma[y][x]; if (Ma[y][x] < min) min = Ma[y][x]; } } scale = fabs(max - min)/(double)UCHAR_MAX; printf ("min = %f, max = %f, scale = %f\n", min, max, scale); /* now we copy the result back, after scaling */ /* we recenter the FFT */ /* top left */ for (y = 0; y < halfH; y++) { p2 = destData + (y * w); for (x = 0; x < halfW; x++) { p2[x] = (unsigned char) rint((Ma[num-1-halfH+y][num-1-halfW+x]-min)/scale); } } /* top right */ for (y = 0; y < halfH; y++) { p2 = destData + (y * w); for (x = halfW; x < w; x++) { p2[x] = (unsigned char) rint((Ma[num-1-halfH+y][x-halfW]-min)/scale); } } /* bottom left */ for (y = halfH; y < h; y++) { p2 = destData + (y * w); for (x = 0; x < halfW; x++) { p2[x] = (unsigned char) rint((Ma[y-halfH][num-1-halfW+x]-min)/scale); } } /* bottom right */ for (y = halfH; y < h; y++) { p2 = destData + (y * w); for (x = halfW; x < w; x++) { p2[x] = (unsigned char) rint((Ma[y-halfH][x-halfW]-min)/scale); } } [destImage setBitmapRep:destImageRep]; [destImageRep release]; /* now we free our float matrix */ for (i = 0; i < num; i++) free(Ma[i]); free(Ma); for (i = 0; i < num; i++) free(Mb[i]); free(Mb); [destImage autorelease]; return destImage; } - (BOOL)displayProgress { return NO; } @end PRICE-1.3.0/PRGrayscaleFilter.h010064400017500000012000000015231110712653100153420ustar00multixusers// // PRGrayscaleFilter.h // PRICE // // Created by Riccardo Mottola on Mon Dec 23 2002. // Copyright (c) 2002-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilter.h" #define METHOD_AVERAGE 1 #define METHOD_LUMINANCE 2 @interface PRGrayscaleFilter : PRFilter { } - (PRImage *)filterImage:(PRImage *)srcImage :(int)method; @end PRICE-1.3.0/PRGrayscaleFilter.m010064400017500000012000000143541243637564300153750ustar00multixusers// // PRGrayscaleFilter.m // PRICE // // Created by Riccardo Mottola on Mon Dec 23 2002. // Copyright (c) 2002-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRGrayscaleFilter.h" #include #if defined (__SVR4) && defined (__sun) #define rintf(x) rint(x) #endif @implementation PRGrayscaleFilter - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { int method; /* interpret the parameters */ method = [[parameters objectAtIndex:0] intValue]; return [self filterImage:image :method]; } - (NSString *)actionName { return @"Make Grayscale"; } - (PRImage *)filterImage:(PRImage *)srcImage :(int)method { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; BOOL hasAlpha; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; hasAlpha = [srcImage hasAlpha]; /* if the image is already greyscale... */ if (![srcImage hasColor]) return srcImage; destSamplesPerPixel = 1; if (hasAlpha) { destSamplesPerPixel = 2; hasAlpha = YES; } /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:[srcImageRep hasAlpha] isPlanar:NO colorSpaceName:NSCalibratedWhiteColorSpace bytesPerRow:0 bitsPerPixel:0]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; if ([srcImageRep bitsPerSample] == 8) { unsigned char *srcData; unsigned char *destData; unsigned char *p1; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; if (method == METHOD_AVERAGE) { /* execute the actual filtering (R+G+B)/3 */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; destData[y*destBytesPerRow + x*destBytesPerPixel] = (unsigned char)rint((p1[0] + p1[1] + p1[2]) / 3); if (hasAlpha) destData[y*destBytesPerRow + x*destBytesPerPixel + 1] = p1[3]; } } else if (method == METHOD_LUMINANCE) { /* execute the actual filtering * JPEG-YCbCr (601) from "digital 8-bit R'G'B' " * Y' = + 0.299 * R'd + 0.587 * G'd + 0.114 * B'd */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; destData[y*destBytesPerRow + x*destBytesPerPixel] = (unsigned char)rintf(0.2990f*p1[0] + 0.5870f*p1[1] + 0.1140f*p1[2]); if (hasAlpha) destData[y*destBytesPerRow + x*destBytesPerPixel + 1] = p1[3]; } } } else if ([srcImageRep bitsPerSample] == 16) { unsigned short *srcData; unsigned short *destData; unsigned short *p1; unsigned short *p2; srcData = (unsigned short*)[srcImageRep bitmapData]; destData = (unsigned short*)[destImageRep bitmapData]; if (method == METHOD_AVERAGE) { /* execute the actual filtering (R+G+B)/3 */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = (unsigned short*)((unsigned char*)srcData + srcBytesPerRow * y + srcBytesPerPixel * x); p2 = (unsigned short*)((unsigned char*)destData + destBytesPerRow * y + destBytesPerPixel * x); p2[0] = (unsigned short)rint((p1[0] + p1[1] + p1[2]) / 3); if (hasAlpha) p2[1] = p1[3]; } } else if (method == METHOD_LUMINANCE) { /* execute the actual filtering * JPEG-YCbCr (601) from "digital 8-bit R'G'B' " * Y' = + 0.299 * R'd + 0.587 * G'd + 0.114 * B'd */ for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = (unsigned short*)((unsigned char*)srcData + srcBytesPerRow * y + srcBytesPerPixel * x); p2 = (unsigned short*)((unsigned char*)destData + destBytesPerRow * y + destBytesPerPixel * x); p2[0] = (unsigned short)rintf(0.2990f*p1[0] + 0.5870f*p1[1] + 0.1140f*p1[2]); if (hasAlpha) p2[1] = p1[3]; } } } else { NSLog(@"Unhandled bits per sample: %ld", (long int)[srcImageRep bitsPerSample]); } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (BOOL)displayProgress { return NO; } @end PRICE-1.3.0/PRHisto.h010064400017500000012000000012641105335723300133570ustar00multixusers// // PRHisto.h // PRICE // // Created by Riccardo Mottola on Thu Dec 18 2003. // Copyright (c) 2003 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRHistogram.h" @interface PRHisto : PRHistogram { } @end PRICE-1.3.0/PRHisto.m010064400017500000012000000123671243505267700134030ustar00multixusers// // PRHisto.m // PRICE // // Created by Riccardo Mottola on Thu Dec 18 2003. // Copyright (c) 2003-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRHisto.h" @implementation PRHisto - (void)displayHistogram :(NSRect)viewRect { NSRect bar; NSBezierPath *bez; NSBezierPath *redBez, *greenBez, *blueBez; NSColor *fillRed, *fillGreen, *fillBlue; int i; float barWidth; float barHeightScale; NSLog(@"Standard Histogram drawing"); NSLog(@"maxHisto: %f", maxHisto); barWidth = viewRect.size.width / UCHAR_MAX; barHeightScale = viewRect.size.height / maxHisto; NSLog(@"frame height: %f", viewRect.size.height); NSLog(@"scale: %f", barHeightScale); bez = [NSBezierPath bezierPath]; redBez = [NSBezierPath bezierPath]; greenBez = [NSBezierPath bezierPath]; blueBez = [NSBezierPath bezierPath]; if (hasColor) { fillRed = [NSColor redColor]; fillGreen = [NSColor greenColor]; fillBlue = [NSColor blueColor]; if (1) { for(i = 0; i < UCHAR_MAX; i++) { float redHeight; float greenHeight; float blueHeight; redHeight = histogramR[i]*barHeightScale; greenHeight = histogramG[i]*barHeightScale; blueHeight = histogramB[i]*barHeightScale; bar = NSMakeRect(i*barWidth, 0, barWidth, greenHeight); [greenBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, greenHeight, barWidth, redHeight); [redBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, greenHeight + redHeight, barWidth, blueHeight); [blueBez appendBezierPathWithRect:bar]; } [fillRed set]; [redBez fill]; [fillGreen set]; [greenBez fill]; [fillBlue set]; [blueBez fill]; } else { for(i = 0; i < UCHAR_MAX; i++) { if (histogramR[i] > histogramG[i]) { if (histogramG[i] > histogramB[i]) { bar = NSMakeRect(i*barWidth, 0, barWidth, histogramG[i]*barHeightScale); [greenBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, 0, barWidth, histogramB[i]*barHeightScale); [blueBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, 0, barWidth, histogramR[i]*barHeightScale); [redBez appendBezierPathWithRect:bar]; } else { bar = NSMakeRect(i*barWidth, 0, barWidth, histogramB[i]*barHeightScale); [blueBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, 0, barWidth, histogramG[i]*barHeightScale); [greenBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, 0, barWidth, histogramR[i]*barHeightScale); [redBez appendBezierPathWithRect:bar]; } } else { if (histogramG[i] > histogramB[i]) { bar = NSMakeRect(i*barWidth, 0, barWidth, histogramG[i]*barHeightScale); [greenBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, 0, barWidth, histogramB[i]*barHeightScale); [blueBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, 0, barWidth, histogramR[i]*barHeightScale); [redBez appendBezierPathWithRect:bar]; } else { bar = NSMakeRect(i*barWidth, 0, barWidth, histogramB[i]*barHeightScale); [blueBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, 0, barWidth, histogramG[i]*barHeightScale); [greenBez appendBezierPathWithRect:bar]; bar = NSMakeRect(i*barWidth, 0, barWidth, histogramR[i]*barHeightScale); [redBez appendBezierPathWithRect:bar]; } } } [fillRed set]; [redBez fill]; [fillGreen set]; [greenBez fill]; [fillBlue set]; [blueBez fill]; } } else /* greyscale */ { for(i = 0; i < UCHAR_MAX; i++) { bar = NSMakeRect(i*barWidth, 0, barWidth, histogram[i]*barHeightScale); [bez appendBezierPathWithRect:bar]; } [bez fill]; } } @end PRICE-1.3.0/PRHistogram.h010064400017500000012000000031451243505267700142370ustar00multixusers// // PRHistogram.h // PRICE // // Created by Riccardo Mottola on Thu Dec 11 2003. // Copyright (c) 2003-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #include #import @class PRCHistogram; @interface PRHistogram : NSView { float histogram[UCHAR_MAX+1]; /* normalized histogram */ float cumulativeHistogram[UCHAR_MAX+1]; /* cumulative histogram */ float histogramR[UCHAR_MAX+1]; /* normalized histogram */ float histogramG[UCHAR_MAX+1]; /* normalized histogram */ float histogramB[UCHAR_MAX+1]; /* normalized histogram */ float cumulativeHistogramR[UCHAR_MAX+1]; /* cumulative histogram */ float cumulativeHistogramG[UCHAR_MAX+1]; /* cumulative histogram */ float cumulativeHistogramB[UCHAR_MAX+1]; /* cumulative histogram */ float maxHisto; float maxCumulativeHisto; IBOutlet PRCHistogram *theController; PRImage *theImage; @private BOOL calculationsDone; @protected BOOL hasColor; } - (void)setImage :(PRImage *)image; - (void)calculateHistogram; - (void)displayHistogram :(NSRect)viewRect; @end PRICE-1.3.0/PRHistogram.m010064400017500000012000000117601243637564300142500ustar00multixusers// // PRHistogram.m // PRICE // // Created by Riccardo Mottola on Thu Dec 11 2003. // Copyright (c) 2003-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRHistogram.h" #import "PRCHistogram.h" @implementation PRHistogram - (id)initWithFrame:(NSRect)frame { self = [super initWithFrame:frame]; if (self) { calculationsDone = NO; } return self; } - (void)setImage :(PRImage *)image { theImage = image; } - (void)drawRect :(NSRect)rect { if (calculationsDone) /* only redraw if the data is valid */ [self displayHistogram :rect]; } - (void)calculateHistogram { NSBitmapImageRep *theImageRep; unsigned char *theData; NSInteger w, h; NSInteger x, y; NSInteger i; register NSInteger srcBytesPerPixel; register NSInteger srcBytesPerRow; NSInteger pixNum; unsigned long int histogramDenorm[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned long int histogramDenormR[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned long int histogramDenormG[UCHAR_MAX+1]; /* not normalized pixel count for each level */ unsigned long int histogramDenormB[UCHAR_MAX+1]; /* not normalized pixel count for each level */ /* get source image representation and associated information */ theImageRep = [theImage bitmapRep]; w = [theImageRep pixelsWide]; h = [theImageRep pixelsHigh]; pixNum = h * w; srcBytesPerRow = [theImageRep bytesPerRow]; srcBytesPerPixel = [theImageRep bitsPerPixel] / 8; /* check bith depth and color/greyscale image */ hasColor = [theImage hasColor]; NSLog(@"Colorimage? %d", hasColor); theData = [theImageRep bitmapData]; if (hasColor) { /* calculate the histogram */ for (i = 0; i <= UCHAR_MAX; i++) histogramDenormR[i] = histogramDenormG[i] = histogramDenormB[i] = 0; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { histogramDenormR[theData[y*srcBytesPerRow + x*srcBytesPerPixel]]++; histogramDenormG[theData[y*srcBytesPerRow + x*srcBytesPerPixel + 1]]++; histogramDenormB[theData[y*srcBytesPerRow + x*srcBytesPerPixel + 2]]++; } /* normalize histogram */ /* calculate the maximum luminance as maxHisto */ maxHisto = 0; for (i = 0; i <= UCHAR_MAX; i++) { histogramR[i] = (float)histogramDenormR[i] / (float)pixNum; histogramG[i] = (float)histogramDenormG[i] / (float)pixNum; histogramB[i] = (float)histogramDenormB[i] / (float)pixNum; if (histogramR[i] + histogramG[i] + histogramB[i] > maxHisto) maxHisto = histogramR[i] + histogramG[i] + histogramB[i]; } /* cumulative histogram */ maxCumulativeHisto = 0; cumulativeHistogramR[0] = histogramR[0]; cumulativeHistogramG[0] = histogramG[0]; cumulativeHistogramB[0] = histogramB[0]; for (i = 1; i <= UCHAR_MAX; i++) { cumulativeHistogramR[i] = cumulativeHistogramR[i-1] + histogramR[i]; cumulativeHistogramG[i] = cumulativeHistogramG[i-1] + histogramG[i]; cumulativeHistogramB[i] = cumulativeHistogramB[i-1] + histogramB[i]; if (cumulativeHistogramR[i] + cumulativeHistogramG[i] + cumulativeHistogramB[i] > maxCumulativeHisto) maxCumulativeHisto = cumulativeHistogramR[i] + cumulativeHistogramG[i] + cumulativeHistogramB[i]; } } else { /* calculate the histogram */ for (i = 0; i <= UCHAR_MAX; i++) histogramDenorm[i] = 0; for (y = 0; y < h; y++) for (x = 0; x < w; x++) histogramDenorm[theData[y*srcBytesPerRow + x*srcBytesPerPixel]]++; /* normalize histogram */ maxHisto = 0; for (i = 0; i <= UCHAR_MAX; i++) { histogram[i] = (float)histogramDenorm[i] / (float)pixNum; if (histogram[i] > maxHisto) maxHisto = histogram[i]; } /* cumulative histogram */ maxCumulativeHisto = 0; cumulativeHistogram[0] = histogram[0]; for (i = 1; i <= UCHAR_MAX; i++) { cumulativeHistogram[i] = cumulativeHistogram[i-1] + histogram[i]; if (cumulativeHistogram[i] > maxCumulativeHisto) maxCumulativeHisto = cumulativeHistogram[i]; } } calculationsDone = YES; } - (void)displayHistogram :(NSRect)viewRect { NSLog(@"Parent Histogram drawing. Ovverride me!"); } @end PRICE-1.3.0/PRICEInfo.plist010064400017500000012000000027351237545761100144260ustar00multixusers{ ApplicationDescription = "Precision Raster Image Convolution Engine"; ApplicationIcon = "price-icon-os.tiff"; ApplicationName = PRICE; ApplicationRelease = "1.3.0"; Authors = ( "Riccardo Mottola" ); Copyright = "Copyright (C) 2002-2014"; CopyrightDescription = "Released under the GNU General Public License v2+."; FullVersionID = "1.3.0"; NOTE = "Automatically generated!"; NSExecutable = PRICE; NSIcon = "price-icon-os.tiff"; NSMainNibFile = "MainMenu.gorm"; NSPrincipalClass = NSApplication; NSRole = Application; NSTypes = ( { NSDocumentClass = MyDocument; NSHumanReadableName = "TIFF Document"; NSName = TIFF; NSRole = Editor; NSUnixExtensions = ( tif, tiff ); }, { NSDocumentClass = MyDocument; NSHumanReadableName = "JPEG Document"; NSName = JPEG; NSRole = Editor; NSUnixExtensions = ( jpg, jpeg, JPG, JPEG ); }, { NSDocumentClass = MyDocument; NSHumanReadableName = "GIF Document"; NSName = GIF; NSRole = Viewer; NSUnixExtensions = ( gif ); }, { NSDocumentClass = MyDocument; NSHumanReadableName = "PNG Document"; NSName = PNG; NSRole = Viewer; NSUnixExtensions = ( png ); }, { NSDocumentClass = MyDocument; NSHumanReadableName = "XPM Document"; NSName = XPM; NSRole = Viewer; NSUnixExtensions = ( xpm ); } ); URL = "http://price.sf.net"; }PRICE-1.3.0/PRImage.h010064400017500000012000000027231243772116200133170ustar00multixusers// // PRImage.h // PRICE // // Created by Riccardo Mottola on Wed Oct 12 2005. // Copyright (c) 2005-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. // this class implements a tailored variation of NSImage for PRICE // the assumption that each time only one representation (of bitmap type) is available is done // thus it can be made directly accessible as well as some of its properties can be cached #import #if !defined (GNUSTEP) && (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4) typedef int NSInteger; #endif #if !defined (GNUSTEP) && (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_3) extern NSString *NSImageEXIFData; #endif @interface PRImage : NSImage { @private NSBitmapImageRep *bitmapRep; } - (NSInteger)height; - (NSInteger)width; - (BOOL)hasColor; - (BOOL)hasAlpha; - (NSInteger)bitsPerPixel; - (NSInteger)bitsPerSample; - (NSInteger)samplesPerPixel; - (NSSize)pixelSize; - (NSBitmapImageRep *)bitmapRep; - (void)setBitmapRep:(NSBitmapImageRep *)rep; @end PRICE-1.3.0/PRImage.m010064400017500000012000000062451243772116200133270ustar00multixusers// // PRImage.m // PRICE // // Created by Riccardo Mottola on Wed Oct 12 2005. // Copyright (c) 2005-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRImage.h" #if !defined (GNUSTEP) && (MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_3) NSString *NSImageEXIFData = @"NSImageEXIFData"; #endif /* PRImage subclasses NSImage to implement some key features - the first loaded bitmap representation is retained and made accessible, so that it doesn't get lost when it is replaced with cached representations - image pixel size is retrieved from this representation - use setBitmapRep to set the master NSBitmapImageRep */ @implementation PRImage - (id)initWithData:(NSData*)data { self = [super initWithData:data]; bitmapRep = [[self representations] objectAtIndex:0]; if (![bitmapRep isKindOfClass:[NSBitmapImageRep class]]) { NSLog(@"we got %@", [bitmapRep class]); } NSLog(@" init bitrep is: %@", bitmapRep); [bitmapRep retain]; [self setSize: [self pixelSize]]; return self; } - (id)initWithSize:(NSSize)aSize { self = [super initWithSize:aSize]; return self; } - (id)copyWithZone:(NSZone *)zone { PRImage *objCopy; objCopy = [super copyWithZone:zone]; while( [[objCopy representations] count] > 0 ) { [objCopy removeRepresentation:[[objCopy representations] objectAtIndex:0]]; } objCopy->bitmapRep = nil; [objCopy setBitmapRep:[[bitmapRep copy] autorelease]]; return objCopy; } - (void)dealloc { [bitmapRep release]; [super dealloc]; } - (NSInteger)height { return [bitmapRep pixelsHigh]; } - (NSInteger)width { return [bitmapRep pixelsWide]; } - (BOOL)hasColor { BOOL r = NO; if ([bitmapRep hasAlpha]) { if ([bitmapRep samplesPerPixel] > 2) r = YES; } else { if ([bitmapRep samplesPerPixel] > 1) r = YES; } NSLog(@"hasColor ? %d", r); return r; } - (BOOL)hasAlpha { return [bitmapRep hasAlpha]; } /** BitsPerPixel may be mmore than bitsPerSample*samplesPerPixel: the pixel data could be padded or aligned on byte boundaries */ - (NSInteger)bitsPerPixel { return [bitmapRep bitsPerPixel]; } - (NSInteger)bitsPerSample { return [bitmapRep bitsPerSample]; } - (NSInteger)samplesPerPixel { return [bitmapRep samplesPerPixel]; } - (NSSize)pixelSize { return NSMakeSize((float)[bitmapRep pixelsWide],(float)[bitmapRep pixelsHigh]); } - (NSBitmapImageRep *)bitmapRep { NSLog(@"ret bitrep is: %@ bps: %d, spp %d", bitmapRep, [bitmapRep bitsPerSample], [bitmapRep samplesPerPixel]); return bitmapRep; } - (void)setBitmapRep:(NSBitmapImageRep *)rep { if (bitmapRep != rep) { [rep retain]; [bitmapRep release]; bitmapRep = rep; [self addRepresentation:bitmapRep]; } } @end PRICE-1.3.0/PRImageView.h010064400017500000012000000013731237373501200141500ustar00multixusers// // PRImageView.h // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // Copyright (c) 2002-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import @interface PRImageView : NSImageView { float scaleFactor; } - (void)scaleFrameBy:(float)scale; @end PRICE-1.3.0/PRImageView.m010064400017500000012000000055421245255550500141640ustar00multixusers// // PRImageView.m // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // Copyright (c) 2002-2015 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRImageView.h" #import "PRImage.h" // defines NSInteger @implementation PRImageView - (void)awakeFromNib { NSMutableArray *dragTypes; /* init copy&paste */ dragTypes = [NSMutableArray arrayWithObjects:NSColorPboardType, NSFilenamesPboardType, nil]; [dragTypes addObjectsFromArray:[NSImage imagePasteboardTypes]]; [self registerForDraggedTypes:dragTypes]; } - (void)drawRect:(NSRect)rect { if (![[NSGraphicsContext currentContext] isDrawingToScreen]) { NSSize imageSize; NSRect finalRect; float scaleX, scaleY, scale; imageSize = [[self image] size]; scaleX = rect.size.width / imageSize.width; scaleY = rect.size.height / imageSize.height; if (scaleX < scaleY) scale = scaleX; else scale = scaleY; finalRect = NSMakeRect(rect.origin.x, rect.origin.y, imageSize.width*scale, imageSize.height*scale); [[self image] drawInRect:finalRect fromRect:NSMakeRect(0, 0, imageSize.width, imageSize.height) operation:(NSCompositingOperation)NSCompositeCopy fraction:(float)1.0]; } else { [super drawRect:rect]; } } - (void)scaleFrameBy:(float)scale { NSSize imageSize; NSAffineTransform *at; if (scaleFactor == scale) return; scaleFactor = scale; imageSize = [[self image] size]; at = [NSAffineTransform transform]; [at scaleBy:scale]; [self setFrameSize:[at transformSize:imageSize]]; [self setNeedsDisplay:YES]; } /* We override setImage so we can invalidate and recalculate scaling. This is necesssary since scaleFrameBy is optimized not to recalculate if the same factor is given. */ - (void)setImage:(NSImage *)image { float oldScaleFactor; [super setImage:image]; oldScaleFactor = scaleFactor; scaleFactor = 0; [self scaleFrameBy:oldScaleFactor]; } - (BOOL) knowsPageRange: (NSRangePointer) range { range->location = 1; range->length = 1; return YES; } - (NSRect) rectForPage: (NSInteger) pageNumber { NSPrintInfo *pi = [[[NSDocumentController sharedDocumentController] currentDocument] printInfo]; return [pi imageablePageBounds]; } -(void) dealloc { [super dealloc]; } @end PRICE-1.3.0/PRInvert.h010064400017500000012000000014001110735157500135330ustar00multixusers// // PRInvert.h // PRICE // // Created by Riccardo Mottola on Fri Dec 07 2007. // Copyright (c) 2007-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilter.h" @interface PRInvert : PRFilter { } - (PRImage *)filterImage:(PRImage *)srcImage; @end PRICE-1.3.0/PRInvert.m010064400017500000012000000125201243761072600135500ustar00multixusers// // PRInvert.m // PRICE // // Created by Riccardo Mottola on Fri Dec 07 2007. // Copyright (c) 2007-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #include #import "PRInvert.h" @implementation PRInvert - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { /* interpret the parameters */ return [self filterImage:image]; } - (NSString *)actionName { return @"Invert"; } - (PRImage *)filterImage:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; BOOL hasAlpha; NSInteger srcBytesPerRow; NSInteger destBytesPerRow; NSInteger bitsPerPixel; NSInteger srcBytesPerPixel; NSInteger destBytesPerPixel; register NSInteger maxPerChannel; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcBytesPerRow = [srcImageRep bytesPerRow]; hasAlpha = [srcImageRep hasAlpha]; bitsPerPixel = [srcImageRep bitsPerPixel]; srcBytesPerPixel = bitsPerPixel / 8; maxPerChannel = pow(2, [srcImageRep bitsPerSample])-1; /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:[srcImage size]]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:[srcImageRep samplesPerPixel] hasAlpha:hasAlpha isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; /* execute the actual filtering */ /* take in account if image has alpha and if it is has one or 3 samples */ /* alpha shall be preserved and not inverted */ if ([srcImageRep bitsPerSample] == 8) { unsigned char *srcData; unsigned char *destData; unsigned char *p1; unsigned char *p2; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; if (![srcImage hasColor]) for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; p2 = destData + destBytesPerRow * y + destBytesPerPixel * x; p2[0] = maxPerChannel - p1[0]; if (hasAlpha) p2[1] = p1[1]; } else for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; p2 = destData + destBytesPerRow * y + destBytesPerPixel * x; p2[0] = maxPerChannel - p1[0]; p2[1] = maxPerChannel - p1[1]; p2[2] = maxPerChannel - p1[2]; if(hasAlpha) p2[3] = p1[3]; } } else if ([srcImageRep bitsPerSample] == 16) { unsigned short *srcData; unsigned short *destData; unsigned short *p1; unsigned short *p2; srcData = (unsigned short*)[srcImageRep bitmapData]; destData = (unsigned short*)[destImageRep bitmapData]; if (![srcImage hasColor]) for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = (unsigned short*)((unsigned char*)srcData + srcBytesPerRow * y + srcBytesPerPixel * x); p2 = (unsigned short*)((unsigned char*)destData + destBytesPerRow * y + destBytesPerPixel * x); p2[0] = maxPerChannel - p1[0]; if (hasAlpha) p2[1] = p1[1]; } else for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = (unsigned short*)((unsigned char*)srcData + srcBytesPerRow * y + srcBytesPerPixel * x); p2 = (unsigned short*)((unsigned char*)destData + destBytesPerRow * y + destBytesPerPixel * x); p2[0] = maxPerChannel - p1[0]; p2[1] = maxPerChannel - p1[1]; p2[2] = maxPerChannel - p1[2]; if(hasAlpha) p2[3] = p1[3]; } } else { NSLog(@"Unhandled bits per sample: %ld", (long int)[srcImageRep bitsPerSample]); } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (BOOL)displayProgress { return NO; } @end PRICE-1.3.0/PRMedian.h010064400017500000012000000016521105335723300134670ustar00multixusers// // PRMedian.h // PRICE // // Created by Riccardo Mottola on Thu Mar 25 2004. // Copyright (c) 2004 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRProgressAction.h" #import "PRImage.h" enum medianForms { HORIZONTAL_F, VERTICAL_F, CROSS_F, BOX_F }; @interface PRMedian : PRProgressAction { } - (PRImage *)medianImage :(PRImage *)srcImage :(enum medianForms)form :(int)size :(BOOL)separable :(PRCProgress *)prPanel; @end PRICE-1.3.0/PRMedian.m010064400017500000012000000363351243664150600135070ustar00multixusers// // PRMedian.m // PRICE // // Created by Riccardo Mottola on Thu Mar 25 2004. // Copyright (c) 2004-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRMedian.h" #import "PRGrayscaleFilter.h" @implementation PRMedian - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { enum medianForms form; int size; BOOL separable; /* interpret the parameters */ form = [[parameters objectAtIndex:0] intValue]; size = [[parameters objectAtIndex:1] intValue]; separable = [[parameters objectAtIndex:2] boolValue]; return [self medianImage:image :form :size :separable :progressPanel]; } - (NSString *)actionName { return @"Median"; } - (PRImage *)medianImage :(PRImage *)srcImage :(enum medianForms)form :(int)size :(BOOL)separable :(PRCProgress *)prPanel { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; NSInteger i, j; unsigned char *srcData; unsigned char *destData; unsigned char *filterMask; /* the median window */ int realSize; /* real width of the median window */ int c; /* current channel */ NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; progressSteps = 0; totalProgressSteps = 2; progPanel = prPanel; realSize = size*2 + 1; /* get source image representation and associated information */ if (progPanel != nil) { [self setActivity:@"Get image size"]; [self advanceProgress]; } srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = srcSamplesPerPixel; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:[srcImage hasAlpha] isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:w*destSamplesPerPixel bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; if (progPanel != nil) { [self setActivity:@"Filter"]; [self advanceProgress]; } if (form == HORIZONTAL_F) { filterMask = (unsigned char *) malloc(sizeof(unsigned char) * (realSize)); if (filterMask == NULL) NSLog(@"Failed filterMask allocation in PRMedian"); for (y = 0; y < h; y++) { for (x = 0 + size + 1; x < w - (size + 1); x++) { for (c = 0; c < destSamplesPerPixel; c++) { for (i = 0; i < realSize; i++) filterMask[i] = srcData[srcBytesPerRow*y + (x - size + i)*srcBytesPerPixel + c]; /* primitve sorting */ for (i = 0; i < realSize-1; i++) { for (j = 0; j < realSize-1-i; j++) { if (filterMask[j] > filterMask[j+1]) { unsigned char temp; temp = filterMask[j+1]; filterMask[j+1] = filterMask[j]; filterMask[j] = temp; } } } /* insert result in destination */ destData[destBytesPerRow*y + x*destBytesPerPixel + c] = filterMask[size]; } } } free(filterMask); } else if (form == VERTICAL_F) { filterMask = (unsigned char *) malloc(sizeof(unsigned char) * (realSize)); for (x = 0; x < w; x++) { for (y = 0 + size + 1; y < h - (size + 1); y++) { for (c = 0; c < destSamplesPerPixel; c++) { for (i = 0; i < realSize; i++) filterMask[i] = srcData[(y - size + i) * srcBytesPerRow + x*srcBytesPerPixel + c]; /* primitve sorting */ for (i = 0; i < realSize-1; i++) { for (j = 0; j < realSize-1-i; j++) { if (filterMask[j] > filterMask[j+1]) { unsigned char temp; temp = filterMask[j+1]; filterMask[j+1] = filterMask[j]; filterMask[j] = temp; } } } /* insert result in destination */ destData[destBytesPerRow*y + x*destBytesPerPixel + c] = filterMask[size]; } } } free(filterMask); } else if (form == CROSS_F) { if (separable) { unsigned char tempResult; /* to store the result between the separable passes */ filterMask = (unsigned char *) malloc(sizeof(unsigned char) * (realSize)); for (x = 0 + size + 1; x < w - (size + 1); x++) { for (y = 0 + size + 1; y < h - (size + 1); y++) { for (c = 0; c < destSamplesPerPixel; c++) { for (i = 0; i < realSize; i++) filterMask[i] = srcData[y*srcBytesPerRow + (x - size + i)*srcBytesPerPixel + c]; /* primitve sorting */ for (i = 0; i < realSize-1; i++) { for (j = 0; j < realSize-1-i; j++) { if (filterMask[j] > filterMask[j+1]) { unsigned char temp; temp = filterMask[j+1]; filterMask[j+1] = filterMask[j]; filterMask[j] = temp; } } } tempResult = filterMask[size]; for (i = 0; i < realSize; i++) filterMask[i] = srcData[(y - size + i) * srcBytesPerRow + x*srcBytesPerPixel + c]; filterMask[size] = tempResult; /* primitve sorting */ for (i = 0; i < realSize-1; i++) { for (j = 0; j < realSize-1-i; j++) { if (filterMask[j] > filterMask[j+1]) { unsigned char temp; temp = filterMask[j+1]; filterMask[j+1] = filterMask[j]; filterMask[j] = temp; } } } /* insert result in destination */ destData[destBytesPerRow*y + x*destBytesPerPixel + c] = filterMask[size]; } } } free(filterMask); } else /* not separable */ { int totalSize; /* the total number of samples in the filter */ int k; totalSize = 4 * size + 1; filterMask = (unsigned char *) malloc(sizeof(unsigned char) * (totalSize)); for (y = 0 + size + 1; y < h - (size + 1); y++) { for (x = 0 + size + 1; x < w - (size + 1); x++) { for (c = 0; c < destSamplesPerPixel; c++) { k = 0; for (i = 0; i < realSize; i++) filterMask[k++] = srcData[y * srcBytesPerRow + (x - size + i)*srcBytesPerPixel + c]; for (i = 1; i <= size; i++) filterMask[k++] = srcData[(y - i) * srcBytesPerRow + x*srcBytesPerPixel + c]; for (i = 1; i <= size; i++) filterMask[k++] = srcData[(y + i) * srcBytesPerRow + x*srcBytesPerPixel + c]; /* primitve sorting */ for (i = 0; i < totalSize-1; i++) { for (j = 0; j < totalSize-1-i; j++) { if (filterMask[j] > filterMask[j+1]) { unsigned char temp; temp = filterMask[j+1]; filterMask[j+1] = filterMask[j]; filterMask[j] = temp; } } } /* insert result in destination */ destData[destBytesPerRow*y + x*destBytesPerPixel + c] = filterMask[2*size]; } } } free(filterMask); } } else if (form == BOX_F) { if (separable) { int k; unsigned char *tempResult; filterMask = (unsigned char *) malloc(sizeof(unsigned char) * (realSize)); tempResult = (unsigned char *) malloc(sizeof(unsigned char) * (realSize)); for (y = 0 + size + 1; y < h - (size + 1); y++) { for (x = 0 + size + 1; x < w - (size + 1); x++) { for (c = 0; c < destSamplesPerPixel; c++) { for (i = 0; i < realSize; i++) { for (j = 0; j < realSize; j++) filterMask[j] = srcData[(y - size + i) * srcBytesPerRow + (x - size + j)*srcBytesPerPixel + c]; /* primitve sorting */ for (j = 0; j < realSize-1; j++) { for (k = 0; k < realSize-1-j; k++) { if (filterMask[k] > filterMask[k+1]) { unsigned char temp; temp = filterMask[k+1]; filterMask[k+1] = filterMask[k]; filterMask[k] = temp; } } } /* insert result in destination */ tempResult[i] = filterMask[size]; } /* primitve sorting */ for (i = 0; i < realSize-1; i++) { for (j = 0; j < realSize-1-i; j++) { if (tempResult[j] > tempResult[j+1]) { unsigned char temp; temp = tempResult[j+1]; tempResult[j+1] = tempResult[j]; tempResult[j] = temp; } } } /* insert result in destination */ destData[destBytesPerRow*y + x*destBytesPerPixel + c] = tempResult[size]; } } } free(filterMask); free(tempResult); } else /* not separable */ { int totalSize; /* the total number of samples in the filter */ int k; totalSize = realSize*realSize; filterMask = (unsigned char *) malloc(sizeof(unsigned char) * (totalSize)); for (y = 0 + size + 1; y < h - (size + 1); y++) { for (x = 0 + size + 1; x < w - (size + 1); x++) { for (c = 0; c < destSamplesPerPixel; c++) { k = 0; for (i = 0; i < realSize; i++) for (j = 0; j < realSize; j++) filterMask[k++] = srcData[(y - size + i) * srcBytesPerRow + (x - size + j)*srcBytesPerPixel + c]; /* primitve sorting */ for (i = 0; i < totalSize-1; i++) { for (j = 0; j < totalSize-1-i; j++) { if (filterMask[j] > filterMask[j+1]) { unsigned char temp; temp = filterMask[j+1]; filterMask[j+1] = filterMask[j]; filterMask[j] = temp; } } } /* insert result in destination */ destData[destBytesPerRow*y + x*destBytesPerPixel + c] = filterMask[size*(realSize) + size]; /* center */ } } } free(filterMask); } } else NSLog(@"Unrecognized median filter type."); if (progPanel != nil) { [self setActivity:@"Done"]; [self showProgress]; } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.3.0/PRPreviewController.h010064400017500000012000000025521237374162700157710ustar00multixusers// // PRPreviewController.h // PRICE // // Created by Riccardo Mottola on 2/19/10. // Copyright 2010-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRImageView.h" #import "PRFilterController.h" #import "PRCProgress.h" @interface PRPreviewController : NSObject { IBOutlet NSPanel *previewWindow; IBOutlet NSButton *buttContinuous; IBOutlet PRImageView *view; IBOutlet NSPopUpButton *scalePopUp; PRFilterController *filterController; IBOutlet NSProgressIndicator *progressBar; IBOutlet NSTextField *activityDescription; } - (void)setFilterController: (PRFilterController *)filterController; - (void)showPreview; - (void)hidePreview; - (BOOL)continuous; - (void)setContinuous :(BOOL)flag; - (IBAction)cleanPreview:(id)sender; - (IBAction)updatePreview:(id)sender; - (IBAction)scaleFromMenu:(id)sender; @end PRICE-1.3.0/PRPreviewController.m010064400017500000012000000113221237502501500157550ustar00multixusers// // PRPreviewController.m // PRICE // // Created by Riccardo Mottola on 2/19/10. // Copyright 2010-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRPreviewController.h" @implementation PRPreviewController - (id)init { if ((self = [super init])) { [NSBundle loadNibNamed:@"Preview" owner:self]; /* add an observer for the window resize */ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_windowDidResize:) name:NSWindowDidResizeNotification object:previewWindow]; } return self; } - (void)dealloc { /* remove observer for the window resize */ [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidResizeNotification object:previewWindow]; [super dealloc]; } - (void)setFilterController: (PRFilterController *)controller { filterController = controller; } - (void)showPreview { [previewWindow orderFront: self]; } - (void)hidePreview { [previewWindow orderOut: self]; } /** returns wether continuous update of the preview is desired or not */ - (BOOL)continuous { if ([buttContinuous state] == NSOnState) return YES; return NO; } - (void)setContinuous :(BOOL)flag { if (flag == YES) [buttContinuous setState: NSOnState]; else [buttContinuous setState: NSOffState]; } - (IBAction)cleanPreview:(id)sender { [view setImage:nil]; } - (IBAction)updatePreview:(id)sender { PRImage *img; img = [filterController filteredImage]; [view setImage:img]; [self scaleFromMenu:scalePopUp]; } - (void)scaleFromMenu:(id)sender { int tag; NSSize currViewSize; NSSize imgSize; float hscale, vscale; tag = [[sender selectedItem] tag]; currViewSize = [[[view enclosingScrollView] contentView] visibleRect].size; imgSize = [(PRImage *)[view image] size]; switch (tag) { case -3: vscale = currViewSize.height / imgSize.height; hscale = currViewSize.width / imgSize.width; if (hscale > vscale) [view scaleFrameBy:vscale]; else [view scaleFrameBy:hscale]; break; case -2: hscale = currViewSize.width / imgSize.width; NSLog(@"%f %f", currViewSize.width, imgSize.width); [view scaleFrameBy:hscale]; break; case -1: vscale = currViewSize.height / imgSize.height; NSLog(@"%f %f", currViewSize.height, imgSize.height); [view scaleFrameBy:vscale]; break; case 12: [view scaleFrameBy:0.125]; break; case 25: [view scaleFrameBy:0.25]; break; case 50: [view scaleFrameBy:0.5]; break; case 75: [view scaleFrameBy:0.75]; break; case 100: [view scaleFrameBy:1.0]; break; case 150: [view scaleFrameBy:1.55]; break; case 200: [view scaleFrameBy:2.0]; break; default: NSLog(@"unexpected case in scale menu selection"); break; } } /** method called as a notification from the window resize or if scale preferences changed */ - (void)_windowDidResize :(NSNotification *)notif { int tag; NSSize currViewSize; NSSize imgSize; float hscale, vscale; tag = [[scalePopUp selectedItem] tag]; currViewSize = [[[view enclosingScrollView] contentView] visibleRect].size; imgSize = [(PRImage *)[view image] pixelSize]; switch (tag) { case -3: vscale = currViewSize.height / imgSize.height; hscale = currViewSize.width / imgSize.width; if (hscale > vscale) [view scaleFrameBy:vscale]; else [view scaleFrameBy:hscale]; break; case -2: hscale = currViewSize.width / imgSize.width; NSLog(@"%f %f", currViewSize.width, imgSize.width); [view scaleFrameBy:hscale]; break; case -1: vscale = currViewSize.height / imgSize.height; NSLog(@"%f %f", currViewSize.height, imgSize.height); [view scaleFrameBy:vscale]; break; default: break; } } /* ---- FilterProgress protocol methods */ - (void)setTitle:(NSString *)title { } - (void)setProgress:(double)progress { [progressBar setDoubleValue:progress]; [previewWindow displayIfNeeded]; [previewWindow flushWindowIfNeeded]; } - (void)setActivity:(NSString *)title { [activityDescription setStringValue:title]; [previewWindow displayIfNeeded]; } @end PRICE-1.3.0/PRProgressAction.h010064400017500000012000000020711110712653100152230ustar00multixusers// // PRProgressAction.h // PRICE // // Created by Riccardo Mottola on Tue Jun 22 2004. // Copyright (c) 2004-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRCProgress.h" #import "PRFilter.h" @interface PRProgressAction : PRFilter { @protected PRCProgress* progPanel; @protected int progressSteps; /* completed steps up to that point */ @protected int totalProgressSteps; /* total number of steps to complete the filter */ } - (void) setActivity :(NSString *)description; - (void) advanceProgress; - (void) showProgress; @end PRICE-1.3.0/PRProgressAction.m010064400017500000012000000017621105335723300152430ustar00multixusers// // PRProgressAction.m // PRICE // // Created by Riccardo Mottola on Tue Jun 22 2004. // Copyright (c) 2004 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRProgressAction.h" @implementation PRProgressAction - (void) setActivity :(NSString *)description; { [progPanel setActivity:description]; } - (void) advanceProgress { [progPanel setProgress:(double)progressSteps++/(double)totalProgressSteps]; } - (void) showProgress { [progPanel setProgress:(double)progressSteps/(double)totalProgressSteps]; } @end PRICE-1.3.0/PRScale.h010064400017500000012000000016151146636206200133240ustar00multixusers// // PRScale.h // PRICE // // Created by Riccardo Mottola on Wed Jan 19 2005. // Copyright (c) 2005-2010 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRProgressAction.h" #import "PRImage.h" #define NEAREST_NEIGHBOUR 1 #define BILINEAR 2 @interface PRScale : PRProgressAction { } - (PRImage *)scaleImage :(PRImage *)srcImage :(int)sizeX :(int)sizeY :(int)method :(PRCProgress *)prPanel; @end PRICE-1.3.0/PRScale.m010064400017500000012000000154371243637564300133470ustar00multixusers// // PRScale.m // PRICE // // Created by Riccardo Mottola on Wed Jan 19 2005. // Copyright (c) 2005-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #include #import "PRScale.h" @implementation PRScale - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { int pixelsX; int pixelsY; int method; /* interpret the parameters */ pixelsX = [[parameters objectAtIndex:0] intValue]; pixelsY = [[parameters objectAtIndex:1] intValue]; method = [[parameters objectAtIndex:2] intValue]; return [self scaleImage:image :pixelsX :pixelsY :method :progressPanel]; } - (NSString *)actionName { return @"Scale"; } - (PRImage *)scaleImage :(PRImage *)srcImage :(int)sizeX :(int)sizeY :(int)method :(PRCProgress *)prPanel { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger origW, origH; NSInteger x, y; NSInteger i; unsigned char *srcData; unsigned char *destData; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; float xRatio, yRatio; progressSteps = 0; totalProgressSteps = 2; progPanel = prPanel; /* get source image representation and associated information */ if (progPanel != nil) { [self setActivity:@"Get image size"]; [self advanceProgress]; } srcImageRep = [srcImage bitmapRep]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; origW = [srcImageRep pixelsWide]; origH = [srcImageRep pixelsHigh]; xRatio = (float)origW / (float)sizeX; yRatio = (float)origH / (float)sizeY; destImage = [[PRImage alloc] initWithSize:NSMakeSize(sizeX, sizeY)]; destSamplesPerPixel = [srcImageRep samplesPerPixel]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:sizeX pixelsHigh:sizeY bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:[srcImageRep hasAlpha] isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:destSamplesPerPixel*sizeX bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; if (progPanel != nil) { [self setActivity:@"Scale"]; [self advanceProgress]; } if (method == NEAREST_NEIGHBOUR) { for (y = 0; y < sizeY; y++) for (x = 0; x < sizeX; x++) for (i = 0; i < srcSamplesPerPixel; i++) destData[destBytesPerRow * y + destBytesPerPixel * (sizeX + x) + i] = srcData[srcBytesPerRow * (int)(y * yRatio) + srcBytesPerPixel * (int)(x * xRatio) + i]; } else if (method == BILINEAR) { /* w,h : original width and height v1, v2, v3, 4: four original corner values v' : new computed value v' = v1(1-w)(1-h) + v2(w)(1-h) + v3(h)(1-w) + v3(w)(h) */ int v1, v2, v3, v4; register int x0, y0; for (y = 0; y < sizeY-1; y++) for (x = 0; x < sizeX-1; x++) { register float xDiff, yDiff; float xFloat, yFloat; xFloat = (float)x * xRatio; yFloat = (float)y * yRatio; x0 = (int)(xFloat); y0 = (int)(yFloat); xDiff = (xFloat - x0); yDiff = (yFloat - y0); for (i = 0; i < srcSamplesPerPixel; i++) { v1 = srcData[srcBytesPerRow * y0 + srcBytesPerPixel * x0 + i]; v2 = srcData[srcBytesPerRow * y0 + srcBytesPerPixel * (x0+1) + i]; v3 = srcData[srcBytesPerRow * (y0+1) + srcBytesPerPixel * x0 + i]; v4 = srcData[srcBytesPerRow * (y0+1) + srcBytesPerPixel * (x0+1) + i]; destData[destBytesPerPixel * (y * sizeX + x) + i] = \ (int)(v1*(1-xDiff)*(1-yDiff) + \ v2*xDiff*(1-yDiff) + \ v3*yDiff*(1-xDiff) + \ v4*xDiff*yDiff); } } /* we left out one pixel at the right and bottom border */ y = sizeY-1; for (x = 0; x < sizeX-1; x++) { register float xDiff, yDiff; float xFloat, yFloat; xFloat = (float)x * xRatio; yFloat = (float)y * yRatio; x0 = (int)(xFloat); y0 = (int)(yFloat); xDiff = (xFloat - x0); yDiff = (yFloat - y0); for (i = 0; i < srcSamplesPerPixel; i++) { v1 = srcData[srcBytesPerRow * y0 + srcBytesPerPixel * x0 + i]; v2 = srcData[srcBytesPerRow * y0 + srcBytesPerPixel * (x0+1) + i]; destData[destSamplesPerPixel * (y * sizeX + x) + i] = \ (int)(v1*(1-xDiff)*(1-yDiff) + \ v2*xDiff*(1-yDiff)); } } x = sizeX-1; for (y = 0; y < sizeY-1; y++) { register float xDiff, yDiff; float xFloat, yFloat; xFloat = (float)x * xRatio; yFloat = (float)y * yRatio; x0 = (int)(xFloat); y0 = (int)(yFloat); xDiff = (xFloat - x0); yDiff = (yFloat - y0); for (i = 0; i < srcSamplesPerPixel; i++) { v1 = srcData[srcBytesPerRow * y0 + srcBytesPerPixel * x0 + i]; v3 = srcData[srcBytesPerRow * (y0+1) + srcBytesPerPixel * x0 + i]; destData[destBytesPerPixel * (y * sizeX + x) + i] = \ (int)(v1*(1-xDiff)*(1-yDiff) + \ v3*yDiff*(1-xDiff)); } } /* the bottom right corner */ { register float xDiff, yDiff; float xFloat, yFloat; xFloat = (float)x * xRatio; yFloat = (float)y * yRatio; x0 = (int)(xFloat); y0 = (int)(yFloat); xDiff = (xFloat - x0); yDiff = (yFloat - y0); for (i = 0; i < srcBytesPerPixel; i++) { v1 = srcData[srcBytesPerRow * y0 + srcBytesPerPixel * x0 + i]; destData[destBytesPerPixel * (y * sizeX + x) + i] = \ (int)(v1*(1-xDiff)*(1-yDiff)); } } } else NSLog(@"Unknown scaling method"); if (progPanel != nil) { [self setActivity:@"Done"]; [self showProgress]; } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.3.0/PRTraceEdges.h010064400017500000012000000015261111065174700143010ustar00multixusers// // PRTraceEdges.h // PRICE // // Created by Riccardo Mottola on Wed Jan 14 2004. // Copyright (c) 2004-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRFilter.h" @interface PRTraceEdges : PRFilter { } - (PRImage *)edgeImage :(PRImage *)srcImage :(int)filterType :(BOOL)useThreshold :(float)thresholdLevel :(BOOL)useZeroCross; @end PRICE-1.3.0/PRTraceEdges.m010064400017500000012000000227761243637564400143330ustar00multixusers// // PRTraceEdges.m // PRICE // // Created by Riccardo Mottola on Wed Jan 14 2004. // Copyright (c) 2004-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRTraceEdges.h" #import "PRGrayscaleFilter.h" #include #include @implementation PRTraceEdges - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { int filterType; BOOL useThreshold; float thresLevel; BOOL useZeroCross; /* interpret the parameters */ filterType = [[parameters objectAtIndex:0] intValue]; useThreshold = [[parameters objectAtIndex:1] boolValue]; thresLevel = [[parameters objectAtIndex:2] floatValue]; useZeroCross = [[parameters objectAtIndex:3] boolValue]; return [self edgeImage:image :filterType :useThreshold :thresLevel :useZeroCross]; } - (NSString *)actionName { return @"Trace Edges"; } - (PRImage *)edgeImage :(PRImage *)srcImage :(int)filterType :(BOOL)useThreshold :(float)thresholdLevel :(BOOL)useZeroCross { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; NSInteger i, j; unsigned char *srcData; unsigned char *destData; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; float *M, *N; unsigned char *p1; int convMatrix[5][5]; float convSum; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; /* check bith depth and color/greyscale image */ if ([srcImage hasColor]) { PRGrayscaleFilter *grayFilter; grayFilter = [[PRGrayscaleFilter alloc] init]; /* Luminance conversion leaves us more signal than average */ srcImage = [grayFilter filterImage:srcImage :METHOD_LUMINANCE]; [grayFilter release]; srcImageRep = [srcImage bitmapRep]; NSLog (@"done greyscale converting"); } srcBytesPerRow = [srcImageRep bytesPerRow]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; destSamplesPerPixel = 1; srcData = [srcImageRep bitmapData]; /* allocate float data */ M = (float *)calloc(h*w, sizeof(float)); N = (float *)calloc(h*w, sizeof(float)); /* copy the image to the float matrix */ for (y = 0; y < h; y++) { p1 = srcData + y * srcBytesPerRow; for (x = 0; x < w; x++) { M[y*w + x] = (double)p1[x*srcBytesPerPixel] / UCHAR_MAX; } } /* set the filter matrix */ for (i = 0; i < 5; i++) for (j = 0; j < 5; j++) convMatrix[i][j] = 0; /* see PRCTraceEdge.h for the filter correspondences */ switch (filterType) { case 1: NSLog(@"Pixel difference"); convMatrix[1][1] = 0; convMatrix[1][2] = -1; convMatrix[1][3] = 0; convMatrix[2][1] = 0; convMatrix[2][2] = 2; convMatrix[2][3] = -1; break; case 2: NSLog(@"Separated pixel difference"); convMatrix[1][1] = 0; convMatrix[1][2] = -1; convMatrix[1][3] = 0; convMatrix[2][1] = 1; convMatrix[2][2] = 0; convMatrix[2][3] = -1; convMatrix[3][1] = 0; convMatrix[3][2] = 1; convMatrix[3][3] = 0; break; case 3: NSLog(@"Roberts"); convMatrix[1][1] = -1; convMatrix[1][2] = 0; convMatrix[1][3] = -1; convMatrix[2][1] = 0; convMatrix[2][2] = 2; convMatrix[2][3] = 0; break; case 4: NSLog(@"Prewitt"); convMatrix[1][1] = 0; convMatrix[1][2] = -1; convMatrix[1][3] = -2; convMatrix[2][1] = 1; convMatrix[2][2] = 0; convMatrix[2][3] = -1; convMatrix[3][1] = 2; convMatrix[3][2] = 1; convMatrix[3][3] = 0; break; case 5: NSLog(@"Sobel"); convMatrix[1][1] = 0; convMatrix[1][2] = -2; convMatrix[1][3] = -2; convMatrix[2][1] = 2; convMatrix[2][2] = 0; convMatrix[2][3] = -2; convMatrix[3][1] = 2; convMatrix[3][2] = 2; convMatrix[3][3] = 0; break; case 6: NSLog(@"Abdou x"); convMatrix[0][0] = 1; convMatrix[0][1] = 1; convMatrix[0][2] = 0; convMatrix[0][3] = -1; convMatrix[0][4] = -1; convMatrix[1][0] = 1; convMatrix[1][1] = 2; convMatrix[1][2] = 0; convMatrix[1][3] = -2; convMatrix[1][4] = -1; convMatrix[2][0] = 1; convMatrix[2][1] = 2; convMatrix[2][2] = 0; convMatrix[2][3] = -2; convMatrix[2][4] = -1; convMatrix[3][0] = 1; convMatrix[3][1] = 2; convMatrix[3][2] = 0; convMatrix[3][3] = -2; convMatrix[3][4] = -1; convMatrix[4][0] = 1; convMatrix[4][1] = 1; convMatrix[4][2] = 0; convMatrix[4][3] = -1; convMatrix[4][4] = -1; break; case 7: NSLog(@"Laplacian 1"); convMatrix[1][1] = 0; convMatrix[1][2] = -1; convMatrix[1][3] = 0; convMatrix[2][1] = -1; convMatrix[2][2] = 4; convMatrix[2][3] = -1; convMatrix[3][1] = 0; convMatrix[3][2] = -1; convMatrix[3][3] = 0; break; case 8: NSLog(@"Laplacian 2"); convMatrix[1][1] = -1; convMatrix[1][2] = 2; convMatrix[1][3] = -1; convMatrix[2][1] = 2; convMatrix[2][2] = -4; convMatrix[2][3] = 2; convMatrix[3][1] = -1; convMatrix[3][2] = 2; convMatrix[3][3] = -1; break; case 9: NSLog(@"Laplacian Prewitt"); convMatrix[1][1] = -1; convMatrix[1][2] = -1; convMatrix[1][3] = -1; convMatrix[2][1] = -1; convMatrix[2][2] = 8; convMatrix[2][3] = -1; convMatrix[3][1] = -1; convMatrix[3][2] = -1; convMatrix[3][3] = -1; break; default: NSLog(@"Unknown filter type for Trace Edges."); } /* the core */ for (y = 0 + 2; y < h - 3; y++) for (x = 0 + 2; x < w - 3; x++) { convSum = 0; for (i = -2; i <= 2; i++) for (j = -2; j <= 2; j++) convSum += convMatrix[i+2][j+2] * M[(y+i) * w + (x+j)]; N[y*w + x] = convSum; } /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedWhiteColorSpace bytesPerRow:0 bitsPerPixel:0]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; /* copy the image back from the float matrix */ if (useThreshold) { if (useZeroCross) { /* zero crossing */ for (y = 0; y < h; y++) { p1 = destData + (y * destBytesPerRow); for (x = 0; x < w; x++) { float temp; temp = fabs(N[y*w + x]); if (temp < thresholdLevel) p1[x*destBytesPerPixel] = UCHAR_MAX; else p1[x*destBytesPerPixel] = 0; } } } else { /* no zero crossing */ for (y = 0; y < h; y++) { p1 = destData + (y * destBytesPerRow); for (x = 0; x < w; x++) { if (N[y*w + x] > thresholdLevel) p1[x*destBytesPerPixel] = 0; else p1[x*destBytesPerPixel] = UCHAR_MAX; } } } } else { /* thresholding to prevent clipping */ for (y = 0; y < h; y++) { p1 = destData + (y * destBytesPerRow); for (x = 0; x < w; x++) { float temp; temp = fabs(N[y*w + x]); if (temp < 0) p1[x*destBytesPerPixel] = 0; else if (temp < 1) p1[x*destBytesPerPixel] = (unsigned char) rint(temp * UCHAR_MAX); else p1[x*destBytesPerPixel] = UCHAR_MAX; } } } /* let's free the float data */ free(M); free(N); [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.3.0/PRTransforms.h010064400017500000012000000023211110766104400144200ustar00multixusers// // PRTransforms.h // PRICE // // Created by Riccardo Mottola on Mon Dec 23 2002. // Copyright (c) 2002-2008 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #define TRANSPOSE 1 #define ROTATE90 2 #define ROTATE180 3 #define ROTATE270 4 #define FLIP_VERT 5 #define FLIP_HORIZ 6 #import #import "PRImage.h" #import "PRFilter.h" @interface PRTransforms : PRFilter { NSString *actionName; } - (void)setActionName:(NSString *)name; - (PRImage *)transposeImage:(PRImage *)srcImage; - (PRImage *)rotateImage90:(PRImage *)srcImage; - (PRImage *)rotateImage180:(PRImage *)srcImage; - (PRImage *)rotateImage270:(PRImage *)srcImage; - (PRImage *)flipImageVert:(PRImage *)srcImage; - (PRImage *)flipImageHoriz:(PRImage *)srcImage; @end PRICE-1.3.0/PRTransforms.m010064400017500000012000000362411243447631500144460ustar00multixusers// // PRTransforms.m // PRICE // // Created by Riccardo Mottola on Mon Dec 23 2002. // Copyright (c) 2002-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRTransforms.h" #import "PRCProgress.h" @implementation PRTransforms - (PRImage *)filterImage:(PRImage *)image with:(NSArray *)parameters progressPanel:(PRCProgress *)progressPanel { PRImage *retImage; switch ([[parameters objectAtIndex:0] intValue]) { case TRANSPOSE: retImage = [self transposeImage:image]; break; case ROTATE90: retImage = [self rotateImage90:image]; break; case ROTATE180: retImage = [self rotateImage180:image]; break; case ROTATE270: retImage = [self rotateImage270:image]; break; case FLIP_VERT: retImage = [self flipImageVert:image]; break; case FLIP_HORIZ: retImage = [self flipImageHoriz:image]; break; default: retImage = nil; } return retImage; } - (void)setActionName:(NSString *)name { actionName = name; } - (NSString *)actionName { return actionName; } - (PRImage *)transposeImage:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; int s; /* sample */ unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = srcSamplesPerPixel; srcBytesPerRow = [srcImageRep bytesPerRow]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; /* execute the actual transposition */ /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(h, w)]; /* we swap h and w */ destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:h pixelsHigh:w bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:[srcImageRep hasAlpha] isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; p2 = destData + destBytesPerPixel * y + destBytesPerRow * x; for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (PRImage *)rotateImage90:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; int s; /* sample */ unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = srcSamplesPerPixel; srcBytesPerRow = [srcImageRep bytesPerRow]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; /* execute the actual rotation */ /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(h, w)]; /* we swap h and w */ destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:h pixelsHigh:w bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:[srcImageRep hasAlpha] isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; p2 = destData + destBytesPerRow * (w-x-1) + destBytesPerPixel * y; for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (PRImage *)rotateImage180:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; int s; /* sample */ unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = srcSamplesPerPixel; srcBytesPerRow = [srcImageRep bytesPerRow]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; /* execute the actual rotation */ /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:[srcImageRep hasAlpha] isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; p2 = destData + destBytesPerRow * (h-y-1) + destBytesPerPixel * (w-x-1); for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (PRImage *)rotateImage270:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; int s; unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = srcSamplesPerPixel; srcBytesPerRow = [srcImageRep bytesPerRow]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; /* execute the actual rotation */ /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(h, w)]; /* we swap h and w */ destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:h pixelsHigh:w bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:[srcImageRep hasAlpha] isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; p2 = destData + destBytesPerRow * x + destBytesPerPixel * (h-y-1); for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (PRImage *)flipImageVert:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; int s; unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = srcSamplesPerPixel; srcBytesPerRow = [srcImageRep bytesPerRow]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; /* execute the actual rotation */ /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:[srcImageRep hasAlpha] isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; p2 = destData + destBytesPerRow * (h-y-1) + destBytesPerPixel * x; for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (PRImage *)flipImageHoriz:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; NSInteger w, h; NSInteger x, y; int s; unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; NSInteger srcSamplesPerPixel; NSInteger destSamplesPerPixel; register NSInteger srcBytesPerPixel; register NSInteger destBytesPerPixel; register NSInteger srcBytesPerRow; register NSInteger destBytesPerRow; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = srcSamplesPerPixel; srcBytesPerRow = [srcImageRep bytesPerRow]; srcBytesPerPixel = [srcImageRep bitsPerPixel] / 8; /* execute the actual rotation */ /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:[srcImageRep bitsPerSample] samplesPerPixel:destSamplesPerPixel hasAlpha:[srcImageRep hasAlpha] isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; destBytesPerPixel = [destImageRep bitsPerPixel] / 8; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcBytesPerPixel * x; p2 = destData + destBytesPerRow * y + destBytesPerPixel * (w-x-1); for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage setBitmapRep:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (BOOL)displayProgress { return NO; } @end PRICE-1.3.0/PRWindowController.h010064400017500000012000000033451205173775200156150ustar00multixusers// // PRWindowController.h // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // Copyright (c) 2002-2012 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import #import "PRImageView.h" #import "PRImage.h" @interface PRWindowController : NSWindowController { IBOutlet PRImageView *view; IBOutlet NSTextField *imageInfoLine; IBOutlet NSPanel *scalePanel; IBOutlet NSTextField *scalePanelScaleField; IBOutlet NSPopUpButton *scalePopUp; IBOutlet NSView *saveOptionsView; IBOutlet NSPopUpButton *fileTypePopUp; IBOutlet NSTextField *jpegCompressionField; IBOutlet NSSlider *jpegCompressionSlider; float scale; /* image scaling factor */ float compressionLevel; } - (void)scaleFromMenu:(id)sender; - (void)scalePanelOk:(id)sender; - (void)scalePanelCancel:(id)sender; - (void)scaleImageTo:(float)internal_scale; - (void)scaleImage; - (void)setImageToDraw:(PRImage *)image; - (void)setImageInfo:(PRImage *)image; - (PRImageView *)view; - (void)setWritableFileTypes:(NSArray *)types; - (BOOL)prepareSavePanel:(NSSavePanel *)panel; - (void)changeSaveType:(id)sender; - (void)setCompressionType:(NSString *)type; - (IBAction)setCompressionLevel:(id)sender; - (float)compressionLevel; @end PRICE-1.3.0/PRWindowController.m010064400017500000012000000253531243442102300156070ustar00multixusers// // PRWindowController.m // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // Copyright (c) 2002-2014 Carduus. All rights reserved. // // This application is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. #import "PRWindowController.h" #import "MyDocument.h" @implementation PRWindowController - (void)dealloc { /* remove observer for the window resize */ [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowDidResizeNotification object:[self window]]; [super dealloc]; } - (void)scaleFromMenu:(id)sender { int tag; NSSize currViewSize; NSSize imgSize; float hscale, vscale; tag = [[scalePopUp selectedItem] tag]; currViewSize = [[[view enclosingScrollView] contentView] visibleRect].size; imgSize = [[[self document] activeImage] size]; switch (tag) { case -4: [scalePanel makeKeyAndOrderFront:nil]; break; case -3: vscale = currViewSize.height / imgSize.height; hscale = currViewSize.width / imgSize.width; if (hscale > vscale) [self scaleImageTo:vscale]; else [self scaleImageTo:hscale]; break; case -2: hscale = currViewSize.width / imgSize.width; NSLog(@"%f %f", currViewSize.width, imgSize.width); [self scaleImageTo:hscale]; break; case -1: vscale = currViewSize.height / imgSize.height; NSLog(@"%f %f", currViewSize.height, imgSize.height); [self scaleImageTo:vscale]; break; case 12: [self scaleImageTo:0.125]; break; case 25: [self scaleImageTo:0.25]; break; case 50: [self scaleImageTo:0.5]; break; case 75: [self scaleImageTo:0.75]; break; case 100: [self scaleImageTo:1.0]; break; case 150: [self scaleImageTo:1.55]; break; case 200: [self scaleImageTo:2.0]; break; case 400: [self scaleImageTo:4.0]; break; default: NSLog(@"unexpected case in scale menu selection"); break; } } - (void)scalePanelOk:(id)sender { float percent; percent = [scalePanelScaleField floatValue]; [scalePanel performClose:nil]; [self scaleImageTo:percent/100.0]; } - (void)scalePanelCancel:(id)sender { [scalePanel performClose:nil]; } /* stores the given value as a scale factor */ - (void)scaleImageTo:(float)internal_scale { if (internal_scale > 0) scale = internal_scale; [self scaleImage]; } /* scales the image by the current scale factor */ - (void)scaleImage { [view scaleFrameBy:scale]; } /** method called as a notification from the window resize or if scale preferences changed */ - (void)_windowDidResize :(NSNotification *)notif { int tag; NSSize currViewSize; NSSize imgSize; float hscale, vscale; tag = [[scalePopUp selectedItem] tag]; currViewSize = [[[view enclosingScrollView] contentView] visibleRect].size; imgSize = [[[self document] activeImage] pixelSize]; switch (tag) { case -3: vscale = currViewSize.height / imgSize.height; hscale = currViewSize.width / imgSize.width; if (hscale > vscale) [self scaleImageTo:vscale]; else [self scaleImageTo:hscale]; break; case -2: hscale = currViewSize.width / imgSize.width; NSLog(@"%f %f", currViewSize.width, imgSize.width); [self scaleImageTo:hscale]; break; case -1: vscale = currViewSize.height / imgSize.height; NSLog(@"%f %f", currViewSize.height, imgSize.height); [self scaleImageTo:vscale]; break; default: break; } } - (void)windowDidLoad /* some initialization stuff */ { NSWindow *currWin; NSRect currentWinContentRect; NSSize currentWindowSize; NSSize currViewSize; NSSize currImageSize; NSSize windowToViewBorder; NSSize newWinSize; NSSize minWinSize; NSSize screenFrameSize; PRImage *currImage; BOOL shouldResize; shouldResize = NO; /* views coming froma NIB window need a retain, we need this for the save panel */ [saveOptionsView retain]; [fileTypePopUp setTarget: [self document]]; [fileTypePopUp setAction: @selector(changeSaveType:)]; /* display the data by MyDocument's activeImage method */ currImage = [[self document] activeImage]; [self setImageToDraw:currImage]; [self scaleImageTo:1.0]; /* resize the window accordingly to the image's size */ screenFrameSize = [[NSScreen mainScreen] visibleFrame].size; NSLog(@"current screen size: %f x %f", screenFrameSize.width, screenFrameSize.height); /* get the current window size and limits */ currWin = [self window]; currentWinContentRect = [NSWindow contentRectForFrameRect:[currWin frame] styleMask:[currWin styleMask]]; currentWindowSize = currentWinContentRect.size; minWinSize = [currWin minSize]; NSLog(@"current window size: %f x %f", currentWindowSize.width, currentWindowSize.height); newWinSize = currentWindowSize; /* get size of the visible part of the view */ currViewSize = [[view enclosingScrollView] contentSize]; /* calculate the difference that makes up the border */ windowToViewBorder.width = currentWindowSize.width - currViewSize.width; windowToViewBorder.height = currentWindowSize.height - currViewSize.height; /* get the image size */ currImageSize = [currImage size]; /* resize if image is smaller */ if (currImageSize.width < currViewSize.width) { float newViewWidth; shouldResize = YES; if (currImageSize.width > minWinSize.width) newViewWidth = currImageSize.width; else newViewWidth = minWinSize.width; newWinSize.width = newViewWidth + windowToViewBorder.width; } if (currImageSize.height < currViewSize.height) { float newViewHeight; shouldResize = YES; if (currImageSize.height > minWinSize.height) newViewHeight = currImageSize.height; else newViewHeight = minWinSize.height; newWinSize.height = newViewHeight + windowToViewBorder.height; } /* resize if image is larger */ if ([[NSApp delegate] prefEnlargeWindows]) { if (currImageSize.width > currViewSize.width) { float newViewWidth; shouldResize = YES; if (currImageSize.width < screenFrameSize.width) newViewWidth = currImageSize.width; else newViewWidth = screenFrameSize.width - currentWinContentRect.origin.x - windowToViewBorder.width; newWinSize.width = newViewWidth + windowToViewBorder.width; } if (currImageSize.height > currViewSize.height) { float newViewHeight; shouldResize = YES; if (currImageSize.height < screenFrameSize.height) newViewHeight = currImageSize.height; else newViewHeight = screenFrameSize.height - windowToViewBorder.height; newWinSize.height = newViewHeight + windowToViewBorder.height; } } if (shouldResize) { [currWin setContentSize:newWinSize]; } /* add an observer for the window resize */ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_windowDidResize:) name:NSWindowDidResizeNotification object:currWin]; } /* view accessor */ - (PRImageView *)view { return view; } - (void)setImageToDraw:(PRImage *)image { [view setImage:image]; [self setImageInfo:image]; } - (void)setImageInfo:(PRImage *)image { [imageInfoLine setStringValue: [NSString stringWithFormat: @"%ld x %ld, %ldx%ld bpp", (long int)[image width], (long int)[image height], (long int)[image bitsPerSample], (long int)[image samplesPerPixel] ]]; } /** Sets the FileType popup content*/ - (void)setWritableFileTypes:(NSArray *)types { NSString *type, *title; unsigned i; unsigned count = [types count]; [fileTypePopUp removeAllItems]; for (i = 0; i < count; i++) { type = [types objectAtIndex: i]; title = [[NSDocumentController sharedDocumentController] displayNameForType: type]; [fileTypePopUp addItemWithTitle: title]; [[fileTypePopUp itemAtIndex: i] setRepresentedObject: type]; } } /* ===== delegates =====*/ - (BOOL) prepareSavePanel:(NSSavePanel *) panel { [panel setAccessoryView:saveOptionsView]; return YES; } - (void)changeSaveType:(id)sender { NSLog(@"changeSaveType type:%@", [[sender selectedItem] representedObject]); [self setCompressionType:[[sender selectedItem] representedObject]]; } /* save panel delegates */ /** change the file type */ - (void)setCompressionType:(NSString *)type { NSString *title; title = [[NSDocumentController sharedDocumentController] displayNameForType: type]; if ([fileTypePopUp itemWithTitle:title] == nil) { NSLog(@"%@ type not found, defaulting to TIFF", type); type = @"TIFF"; title = [[NSDocumentController sharedDocumentController] displayNameForType: type]; } [fileTypePopUp selectItemWithTitle: title]; if ([type isEqualToString:@"TIFF"]) { NSLog(@"set type to Tiff"); [jpegCompressionSlider setEnabled:NO]; [jpegCompressionField setEnabled:NO]; } else if ([type isEqualToString:@"JPEG"]) { NSLog(@"set type to Jpeg"); [jpegCompressionSlider setEnabled:YES]; [jpegCompressionField setEnabled:YES]; /* simulate click to make interface consistent */ [jpegCompressionSlider performClick:nil]; } } /** keep the slider and the text view of the compression level in sync */ - (IBAction)setCompressionLevel:(id)sender { if (sender == jpegCompressionField) [jpegCompressionSlider takeFloatValueFrom:sender]; else [jpegCompressionField takeFloatValueFrom:sender]; compressionLevel = [sender floatValue] / 100; } - (float)compressionLevel { return compressionLevel; } @end PRICE-1.3.0/English.lproj004075500017500000012000000000001245331715400143205ustar00multixusersPRICE-1.3.0/English.lproj/BriCon.nib004075500017500000012000000000001245331715400162435ustar00multixusersPRICE-1.3.0/English.lproj/BriCon.nib/classes.nib010064400017500000012000000015751134143343100204460ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {briconReset = id; changeBri = id; changeCon = id; showBriCon = id; }; CLASS = PRCBriCon; LANGUAGE = ObjC; OUTLETS = { briSlider = NSSlider; briStep = NSStepper; briVal = NSTextField; briconWindow = NSWindow; conSlider = NSSlider; conStep = NSStepper; conVal = NSTextField; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/BriCon.nib/info.nib010064400017500000012000000007601134276106000177420ustar00multixusers IBDocumentLocation 69 76 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/BriCon.nib/keyedobjects.nib010064400017500000012000000173731134276106000214720ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯Æ 156<=AEX`xyz{ƒ‹“Ÿ º»ÃÄÇËÌÏÑÖÜãäìíïñøù#)01FHLORYZdgjqr€Š‹Œ’—˜›ž¢¦§©ª«±²¶¹¼ÆÊÐÖÝÞæíîóúû¦ª   %&+,1278=>CDGCLCQVWV\Vafglmrs…‡™§µ¶·¸¹º »Ø¼½¾ÁÄç   l ³>²Ê‡ !"#$'*-U$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€€Â€Ÿ€ €‘€ž€Ä€¡€€Å€€’€Ž€Ã€€'€Ò234[NSClassName€€YPRCBriConÒ789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FW¯GHIJKLMNOPQRSTUV€ €o€q€s€u€w€y€{€~€€€‚€„€†€ˆ€Š€Œ€IÔYZ[\]^0]NSDestinationWNSLabelXNSSource€ €m€n€Üabcdefghijklmnopqrstuvw_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€j€ € € €i€k€px€l€_{{89, 376}, {323, 218}}_Brightness & ContrastWNSPanelÒ|}~YNS.stringTView€Ò78€£‚;_NSMutableStringXNSStringÔ„…†‡.‰ŠZNSSubviews_NSNextResponderWNSFrame€€€h€KÒ>ŒW¥Ž‘€€€%€+€S€I×…”†•–—ttš›œž[NSSuperviewYNSEnabledXNSvFlagsVNSCell€€€ €€_{{225, 12}, {84, 32}}Ý¡¢£¤¥¦§¨©ª«¬­®¯°²³´µ¶·¸¹_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2€€€€€ÿÿÿÿ†‚@ÿ€Èþ€8VModifyÔ¼½¾¿ÀÁÂVNSSizeVNSNameXNSfFlags"AP€€\LucidaGrandeÒ78ÅÆ¢Æ;VNSFontÔ¼½¾¿ÈÁÊ€€YHelveticaÒ|Í~P€Ò|Í~€Ò78ÒÓ¥ÓÔÕ—;\NSButtonCell]%NSButtonCell\NSActionCellÒ78ר¥ØÙÚÛ;XNSButtonYNSControlVNSView[NSResponder×…”†•–—ttß›œâ€€€ €€!_{{141, 12}, {84, 32}}Ý¡¢£¤¥¦§¨©ª«¬å®¯è޲³´µ¶·ë¹€$€€€"€€€#VCancelÒ|Í~€Ò|Í~€×…”†•–—ttô›œ÷€€€& €€'_{{14, 12}, {84, 32}}Ý¡¢£¤¥¦§¨©ª«¬ú®¯ý²³´µ¶·¹€*€€€(€%€€)UResetÒ|Í~€Ò|Í~€Ü„…” †    ttm\NSBorderType_NSTitlePosition[NSTitleCellYNSOffsets]NSTransparent]NSContentViewYNSBoxType€,€€€N€L€M€-€RÒ>W¡€-€IÕ„…”†!Š€.€+€+€J€KÒ>$W£%&'€/€6€;€I×…”†•–—,›œ./€-€-€0 €5€1_{{12, 13}, {147, 25}}Þ23£¤¥456789ª¬:;<%>@ABCE_NSTickMarkPosition]NSAltIncValue_NSNumberOfTickMarks_NSAllowsTickMarkValuesOnlyZNSMaxValueWNSValueZNSMinValueZNSVertical#€3€2€/ #@_À#½€4#À_ÀÿÒ|Í~€Ô¼½¾IÈÁÊ"A@€€Ò78MN¤NÕ—;\NSSliderCellÒ78PQ¥QÙÚÛ;XNSSlider×…”†•–—U›œWX€-€-€7 €:€8_{{249, 12}, {19, 27}}Ù[¥68\ª]¬›&@`C›bc\NSAutorepeat\NSValueWraps[NSIncrement €6€9  þ #?ðÒ78ef¤fÕ—;]NSStepperCellÒ78hi¥iÙÚÛ;YNSStepper×…”†•–—m›œop€-€-€< €H€=_{{175, 15}, {63, 22}}Ùst£¤¥uª¬vw¯y'›|}~_NSBackgroundColor[NSTextColor_NSDrawsBackground€?€D€€>€; €Gÿÿÿÿ”qþA@Q0Õ‚ƒ„…†‡ˆ‰WNSColor[NSColorName\NSColorSpace]NSCatalogName€B€A€@€CVSystem_textBackgroundColorÓƒŽ‰WNSWhiteB1€CÒ78‘¢;Õ‚ƒ„“”‡ˆ‰€F€E€@€CYtextColorÓƒ™‰B0€CÒ78œ¤Õ—;_NSTextFieldCellÒ78Ÿ ¦ ¡ÙÚÛ;[NSTextField\%NSTextFieldÒ78£¤£¤¥;^NSMutableArrayWNSArray_{{2, 2}, {279, 52}}Ò78¨Ú£ÚÛ;_{{20, 139}, {283, 72}}V{0, 0}×st£¤ª¬v­®¯|·€?€Q€P€O€GZBrightnessÔ¼½¾¿ÀÁµ€€Óƒ·‰M0 0.80000001€CÒ78º»¤»ÚÛ;UNSBoxÜ„…” †    ½ttmÀÁÂÄ€T€€€e€c€d€U€RÒ>ÇW¡Ä€U€IÕ„…”†Ë‘‘Ί€V€S€S€b€KÒ>ÑW£ÒÓÔ€W€[€^€I×…”†•–—ÄÄÙ›œoÜ€U€U€X €H€Y_{{175, 14}, {63, 22}}Ùst£¤¥uª¬vw¯âÒ›|}~€?€D€€Z€W €G×…”†•–—ÄÄ雜Wì€U€U€\ €:€]_{{249, 11}, {19, 27}}Ù[¥68\ª]¬›Ó@`C›bc €[€9 ×…”†•–—ÄÄö›œ.ù€U€U€_ €5€`_{{12, 12}, {147, 25}}Þ23£¤¥456789ª¬:;ýÔ>@ABCE€3€a€^€4Ò|Í~€_{{20, 60}, {283, 72}}×st£¤ª¬v® |·€?€g€P€f€GXContrastÓƒ·‰€C_{{1, 9}, {323, 218}}_{{0, 0}, {1440, 938}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò78¢;_NSWindowTemplate\briconWindowÒ78£;_NSNibOutletConnector^NSNibConnectorÔYZ[%^0€/€p€n€YbriSliderÔYZ['"^0€;€r€n€VbriValÔYZ[&(^0€6€t€n€WbriStepÔYZ[Ô.^0€^€v€n€YconSliderÔYZ[Ò4^0€W€x€n€VconValÔYZ[Ó:^0€[€z€n€WconStepÔYZ[0@A%€€|€}€/ZchangeBri:Ò78EF£F;_NSNibControlConnectorÔYZ[0IA'€€€}€;ÔYZ[0NA&€€€}€6ÔYZ[0SAÔ€€ƒ€}€^ZchangeCon:ÔYZ[0YAÒ€€…€}€WÔYZ[0^AÓ€€‡€}€[ÔYZ[0cA€€‰€}€%\briconReset:ÔYZ[0iA€€‹€}€YfilterOK:ÔYZ[0oAŽ€€€}€]filterCancel:Ò>t„¯Ó%Ò'ŽÔ‘&Ät\€[€/€W€%€;€€-€+€^€S€€6€U€€ €Ò78†¥¢¥;Ò>ˆ„¯ÄÄtttÄtt‘\0€U€-€U€€-€€+€€U€€€-€S€ €€Ò>š„«Ó%Ò0Ž'Ô&\€[€/€W€€%€€;€^€€6€ €Ò>¨„«©ª«¬­®¯°±²³€“€”€•€–€—€˜€™€š€›€œ€€]NSCustomView1YNSSlider2\NSTextField1\File's OwnerYNSButton2YNSButton1ZNSSlider21\NSCustomViewUPanelÒ>¿„ €Ò>„ €Ò>Å„¯ Q‘ŽT'JGIPML\ÄÓVSKÔRÒNH0t%U&O€‚€-€S€€ˆ€;€s€ €%€q€€€y€w€ €U€[€Œ€†€u€^€€„€W€{€o€€+€€/€Š€6€~€Ò>脯 éêëìíîïðñòóôõö÷øùúûüýþÿ€¢€£€¤€¥€¦€§€¨€©€ª€«€¬€­€®€¯€°€±€²€³€´€µ€¶€·€¸€¹€º€»€¼€½€¾€¿€À€Á€!$  &#  " %Ò>%W €IÒ>(„ €Ò>+„ €Ò78./¢/;^NSIBObjectData#,1:LQVdfõûFXt†‘«ÇÔçîü 2>LV]_acegikmoqsuwy{}Š–˜š¤­¶ÁÆÕÞñú%+4WY[]_acegikmoqsuwyŠ˜ ©«­¯±âö .;HR_iuwy{}ƒ…‡ŒŽªÂÊÓÝâäíô +=EGIKMVacegikmŠ– ©°²´¶·º¼¾Ö 0:ESbw…—£¹ÆÈÊÌÎÐÒÔÝßáæèíô !#%(5>CJ[]_aktuw€‚‹–£±¾ÇÒÛåìø       8 m o q s u w y { ‚ ‹ – ˜ µ · ¹ » ¼ ¾ À ×        ) + 4 6 g t † ’ œ ª ¸ Â Ä Æ È Ê Ì Î Ð Ñ Ó Õ × à ã å ç ü þ          ; = ? A B D F ^ — ¬ º Ð í ø   ! # % ' ( 1 : < E F K T V g l n p y ‚ ˜ £ ¬ É Ë Í Ï Ð Ò Ô ì   + 7 8 : < = B K T ] k t  ‰ ¦ ¨ ª ¬ ­ ¯ ± É î"$&(*,-/8=?T\huƒ…‡‰‹”ª·¿ÂÄÍÒçéëíïù  /8EQ^gn}…›¤«ÄËèêìîðòý"02;DJ{}ƒ…‡ˆŠŒ•˜šœ±³µ·¹»ÄËÍÏÑÓðòôö÷ùû8:<>@BCEbdfhikm…ª«­¯°ÍÏÑÓÔÖØð)+-/023<>Vsuwy{}†“•¬ÄÏìõú #*APacegis„†ˆŠŒ“¤¦¨ª¬´ÅÇÉËÍ×èêìîð÷  )+-/1<ELduwy{}Ž’”–§©«­¯ºËÍÏÑÓäæèêìýÿ#%')+5FHJLN\e†ˆŠŒŽ’”–˜šœž ¢¤¦¯´½Þàâäæèêìîðòôöøúüþ "$&(*,.0246?VXZ\^`bdfhjln|†“ ª´¿ÌÒÛÜÞçèêó68:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxÄÆÈÊÌÎÐÒÔÖØÚÜÞàâäæèêìîðòôöøúüþ   "$&(*,.02468:CDFOPR[\^gl0{PRICE-1.3.0/English.lproj/BriCon.nib/objects.nib010064400017500000012000000053461134143343100204420ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCBriCon†…†„i–„„„ NSStepper„„ NSControl)„„NSView)„„ NSResponder”’„œ’„„„NSBox*œ’„œ’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’„„„NSButton›’¡™‚€Ÿ…………á T T ’¡’…’…’…„icc@„„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚þ‚8„@@@@„˜˜Modify†„„„NSFont”™$„[36c]þÿLucidaGrande„f „c¬¬¬†……„i:…’…’¥„ ssii@@@@@È‚†‚@ÿ„„„NSMutableString˜˜†„¯˜†…„­™„[28c]þÿHelvetica« ¬¬¬¬†…††’„¦’¡™‚€Ÿ………… T T ’¡’…’…’…£„¨§‚þ‚8¨„˜˜Cancel†¬……­…’…’²®È‚†‚@ÿ„¯˜†„¯˜†…±…††’„¦’¡™‚€Ÿ………… T T ’¡’…’…’…£„¨§‚þ‚8¨„˜˜Reset†¬……­…’…’·®È‚†‚@ÿ„¯˜†„¯˜†…±…††’„ ’¡™Ÿ„£™’„œ’¼™Ÿ„£™’„„„NSSlider›’¾™‚€Ÿ………… ““’¾’…’…’…£„„„ NSSliderCellâ©§‚ÿ¨„¯˜†„­™°þÿHelvetica« ¬¬¬¬†……­…’…’À„ddddiiiÿƒ½ ††’„š’¾™‚€Ÿ…………ù ’¾’…’…’…£„„„ NSStepperCell©§‚ þ ¨…………­…’…’Æ„ ddddiiiiiÿ‚À†„iiii†’„„„ NSTextField›’¾™‚€Ÿ…………¯??’¾’…’…’…£„„„NSTextFieldCell>©§‚”qþA‚@¨„˜˜0†¬……­…’…’É„c@@„„„NSColor”¬„@@@„˜˜System†„˜˜textBackgroundColor†„Ϭ„ff††„Ϭ»Ð„˜˜ textColor†„Ϭ¼†††’…„:…††………44’¼’…’…’…††………‹HH’¡’…’…’…„ff@@ccc„̧‚þ¨„˜˜ Brightness†„­™$ªþÿLucidaGrande« ¬¬¬¬†……­…’…’…¹Î„Ϭ¼ƒ?LÌ͆†¾’…†’Ÿ†……… CÚCÚ’…’…’…’…†™Ÿ„£™’ž†………<HH’¡’…’…’…¾„̧‚þ¨„˜˜Contrast†Ø……­…’…’…¹Î„Ϭ¼ƒ?LÌ͆†ž’…†™Ÿ„£™’„Ê’ž™‚€Ÿ…………¯??’ž’…’…’…£„̧‚”qþA‚@¨„˜˜0†¬……­…’…’ß¹ÎÓ†’…½…†’™’„Á’ž™‚€Ÿ………… ““’ž’…’…’…£„ç‚ÿ¨„¯˜†Å……­…’…’â³ÿƒ½ †††………44’Ÿ’…’…’…†™‚€Ÿ…………ù ’ž’…’…’…£„ȧ‚ þ ¨…………­…’…’™µÿ‚À†¶†ž–À¾–ßž–·¡–ɾ–²¡–¾¼–¼¡–âž–Ÿ¡–¥¡–ƾ–žŸ–¡„„„NSWindowTemplateø”„ iiffffi@@@@@cYxCÚ‚px„˜˜Brightness & Contrast†„˜˜NSPanel†„¯˜View†¡…„ffff ª¬¼Õ’…¬¼ƒÿîƒÿ教 –™„˜˜ NSCustomView1†–À„˜˜ NSSlider2†–ß„˜˜ NSTextField1†–•„˜˜ File's Owner†–·„˜˜ NSButton2†–²„˜˜ NSButton1†–É„˜˜ NSTextField†–℘˜ NSSlider21†–¥„˜˜NSButton†–Æ„˜˜ NSCustomView†–愘˜Panel†’„„„ NSMutableSet„„NSSet”„I†’„£™’„„„NSNibOutletConnectorÏ„„NSNibConnector”»•愘˜ briconWindow††’„û»•À„˜˜ briSlider††’„û»•É„˜˜briVal††’„û»•Æ„˜˜briStep††’„û»•℘˜ conSlider††’„û»•ß„˜˜conVal††’„û»•™„˜˜conStep††’„„„NSNibControlConnectorÏü»À•„˜˜ changeBri:††’„ »É•„˜˜ changeBri:††’„ »Æ•„˜˜ changeBri:††’„ »â•„˜˜ changeCon:††’„ »ß•„˜˜ changeCon:††’„ »™•„˜˜ changeCon:††’„ »·•„˜˜ briconReset:††’„ »¥•„˜˜ filterOK:††’„ »²•„˜˜ filterCancel:†††’…™ „@i!ȾÈŸȲÈ$ÈÉ ÈÈúÈ·ÈÈ ÈÈÈæÈžÈ™ È&È#ÈÈâ È¥ È"Èß È ÈþÈ•ȼÈ¡ÈÀÈ%ÈÆÈ ™'™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/.DS_Store010075500017500000012000000140041162223065100160520ustar00multixusersBud1 scale. Grayscale.nibfwi0blobicnv Grayscale.nibfwswlong‰ Grayscale.nibicspblob Histogram.nibicspblob Median.nibfwi0blobbëãòicnv Median.nibfwswlong† Median.nibfwvhshor Median.nibicgoblob Preview.nibfwi0blob»`<gicnv Preview.nibfwswlong† Preview.nibfwvhshor Preview.nibicgoblob PRWindow.nibfwi0blobicnv PRWindow.nibfwswlong‰ PRWindow.nibicspblob  @€ @€ @€ @ E DSDB `€ @€ @€ @PRICE-1.3.0/English.lproj/Credits.rtf010064400017500000012000000014201162223065100164740ustar00multixusers{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf480 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural \f0\b\fs24 \cf0 Engineering: \f1\b0 \ Riccardo Mottola\ \ \f0\b Human Interface Design: \f1\b0 \ Riccardo Mottola\ \ \f0\b Testing: \f1\b0 \ Hopefully not nobody\ \ \f0\b Documentation: \f1\b0 \ Riccardo Mottola\ \ \f0\b With special thanks to: \f1\b0 \ my Father\ Prof. Augusto Sarti, Polytechnic of Milan\ Gregory John Casamento, Alexander Malmberg and other nice people from #gnustep\ Roman Kennke\ \ This program is free software, distributed under GPL (GNU General Public License) v2 or later.\ }PRICE-1.3.0/English.lproj/InfoPlist.strings010064400017500000012000000012241245153506300177140ustar00multixusersþÿ/* Localized versions of Info.plist keys */ CFBundleName = "PRICE"; CFBundleShortVersionString = "PRICE version 1.3.0"; CFBundleGetInfoString = "PRICE version 1.3.0, Copyright 2002-2015 Riccardo Mottola."; NSHumanReadableCopyright = "Copyright 2002-2015 Riccardo Mottola.\n This software is distributed under GPL v2 or later."; PRICE-1.3.0/English.lproj/Convolve55.nib004075500017500000012000000000001245331715400170345ustar00multixusersPRICE-1.3.0/English.lproj/Convolve55.nib/classes.nib010064400017500000012000000054531134344743100212450ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { autoRange = id; convMatrix11 = id; convMatrix12 = id; convMatrix13 = id; convMatrix14 = id; convMatrix15 = id; convMatrix21 = id; convMatrix22 = id; convMatrix23 = id; convMatrix24 = id; convMatrix25 = id; convMatrix31 = id; convMatrix32 = id; convMatrix33 = id; convMatrix34 = id; convMatrix35 = id; convMatrix41 = id; convMatrix42 = id; convMatrix43 = id; convMatrix44 = id; convMatrix45 = id; convMatrix51 = id; convMatrix52 = id; convMatrix53 = id; convMatrix54 = id; convMatrix55 = id; offsetFactor = id; scaleFactor = id; showConvolve55 = id; }; CLASS = PRCConvolve55; LANGUAGE = ObjC; OUTLETS = { autoScaleCheck = NSButton; filterWindow = NSWindow; matField11 = NSTextField; matField12 = NSTextField; matField13 = NSTextField; matField14 = NSTextField; matField15 = NSTextField; matField21 = NSTextField; matField22 = NSTextField; matField23 = NSTextField; matField24 = NSTextField; matField25 = NSTextField; matField31 = NSTextField; matField32 = NSTextField; matField33 = NSTextField; matField34 = NSTextField; matField35 = NSTextField; matField41 = NSTextField; matField42 = NSTextField; matField43 = NSTextField; matField44 = NSTextField; matField45 = NSTextField; matField51 = NSTextField; matField52 = NSTextField; matField53 = NSTextField; matField54 = NSTextField; matField55 = NSTextField; offsetField = NSTextField; scaleField = NSTextField; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/Convolve55.nib/info.nib010064400017500000012000000007611134344743100205400ustar00multixusers IBDocumentLocation 136 80 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/Convolve55.nib/keyedobjects.nib010064400017500000012000000462041134354165500222650ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯% 156<=AE ¨¶¼½×Øàáäèéìíòøùúý"&3:;HRSTXZ_`cfj…†‹–˜ ¢¥¬®²µ¹ºñ»ÀÄÅÊËÎÓÚÛäåçîïùúþÿ"#37=Y`aipqy€‰‘™ ¡©°±¹ÀÁÉÐÑÙàáéðñù  !")019@AIPQY`aipqy€‰‘™ ¡©°±¹ÀÁÉÐÑÙàáéêìíîôõùüÿ%&'()*-.278;@AFGLMRSXY^_dejkpqvw|}‚ƒˆ‰Ž”•š› ¡¦§¬­²³¸¹¾¿ÄÅÊËÐÑÖ×ÜÝâãèéîïôõúû  $%*+0167<=BCHINOTUZ[`afglmrsxy~„…Š‹‘–› ¥ª¯´¹¾ÃÈÍÒ×Üáæëðõúÿ JLw ôÉÊhËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàá¤âãäåæçèéêëìïòvúûüýþÿ     Ð !"O#y$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklýmnopqrstuvwz}€U$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoots!žtœ#Ÿ€$€uq"€€•€Ò234[NSClassName€€]PRCConvolve55Ò789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FŸ¯XGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œž€ €€Þ€á€ã€å€ç€é€ë€í€ï€ñ€ó€õ€÷€ù€û€ý€ÿ   !#%')+-/13579;=?ACEGIKMOQSTUVWXYZ[\]^_`abcdefghijklmo€=Ô¡¢£¤¥¦§VNSFileXNSMarker]NSDestination€€€€ שª«¬­®¯¯±²³´µ_NSNextResponder[NSSuperviewWNSFrameYNSEnabledXNSvFlagsVNSCell€ € € €€ Ô·©«¸.º»ZNSSubviews€"€€×€Å_{{18, 52}, {99, 18}}ݾ¿ÀÁÂÃÄÅÆÇÈÉÊËÌͧÏÐÑÒÓÔÊÖ_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2€€€€€ H'Ÿª()*+,-./§1€#€0€H€M€T€X€\€Í€ €Ó€=שª«¬­®¯¯6²³89€ € €$ €/€%_{{415, 185}, {72, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌÊ(²EFG_NSBackgroundColor[NSTextColor_NSDrawsBackground€&€+€€€# €.ÿÿÿÿ”qþA@ÕIJKLMNOPQWNSColor[NSColorName\NSColorSpace]NSCatalogName€)€(€'€*VSystem_textBackgroundColorÓUKVQWNSWhiteB1€*Ò78YI¢I;ÕIJKL[\OPQ€-€,€'€*YtextColorÓUKaQB0€*Ò78de¤eñ®;_NSTextFieldCellÒ78gh¦hiõö÷;[NSTextField\%NSTextFieldß«klmnop©¬qªrstu<­vwÏxyz{¯²~¯€zM‚ƒ„³[NSCellClassYNSNumRowsZNSCellSizeYNSNumCols]NSSelectedColWNSCells[NSProtoCell]NSSelectedRow_NSCellBackgroundColor]NSMatrixFlags_NSIntercellSpacing€1€@€>ÿÿÿÿÿÿÿÿ€2€ €A€ €G€)€?€D_{{430, 246}, {102, 52}}Ò>‡Ÿ¢ˆ‰€3€9€=ØŒÀÁÂÇÉŽÌ)’“”•[NSTitleCell\NSTitleWidth€5€€4€0"B<€8qþ@ @Òì!€!ÕÀÁÇÉÌš›Ôœ€€6€7Òž!WField1:€!Ò78¡®¢®;Ò78£¤¤¤ñ®;ZNSFormCellÙŒÀÁ¦Çɧ̩)’“y”•UNSTag€;€€:€0€8Òì!€!ÕÀÁÇḚ́›Ôœ€€<€7Ò³!WField2:€!Ò78¶·£·¸;^NSMutableArrayWNSArrayY{102, 22}V{1, 8}׌ÀÁÇɼÌÊ’“”•€B€€€8ÕÀÁÇÉÌ›Ԝ€€C€7VField:ÕIJKLÆÇOPQ€F€E€'€*\controlColorÓUKÌQK0.66666669€*Ò78ÏЧÐÑÒõö÷;VNSFormXNSMatrixY%NSMatrixשª«¬­®¯¯Ö²³´Ù€ € €I €€J_{{177, 12}, {98, 32}}ܾÀÁÂÃÄÅÆÇÈÉÜÌÞ*yÐàÒÓÔÊã€L€€K€Hÿÿÿÿ†„@ÿ€€XConvolveÒì!€!שª«¬­®¯¯ê²³´í€ € €N €€O_{{93, 12}, {84, 32}}ݾ¿ÀÁÂÃÄÅÆÇÈÉðñÌó+yÐõÒÓÔÊø€S€Q€€P€Mÿÿÿÿ†‚@ÿ€€8VCancelÔÙÚÛÜûÞý€R€YHelveticaQשª«¬­®¯¯²³8€ € €U €/€V_{{106, 77}, {51, 22}}Ù<=ÀÁÂ>ÇÉ?@Ì ,²EFG€&€+€€W€T €.Q0שª«¬­®¯¯²8€ € €Y -€/€Z_{{218, 77}, {51, 22}}Ù<=ÀÁÂ>ÇÉ?@Ì-²EFG€&€+€€[€X €.Q1Ü·©ª$%Œ«&'()*¯¯Ï-./01Ö2\NSBorderType_NSTitlePositionYNSOffsets]NSTransparent]NSContentViewYNSBoxType€]€ € €È€Æ€Ç€^€ÌÒ>4Ÿ¡1€^€=Õ·©ª«8..;»€_€\€\€Ä€ÅÒ>>Ÿ¯?@ABCDEFGHIJKLMNOPQRSTUVW€`€d€h€l€p€t€x€|€€€„€ˆ€Œ€€”€˜€œ€ €¤€¨€¬€°€´€¸€¼€À€=שª«¬­®11\²³8_€^€^€a €/€b_{{14, 162}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@Ìe?²EFG€&€+€€c€` €.שª«¬­®11l²³8o€^€^€e €/€f_{{59, 162}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@Ìu@²EFG€&€+€€g€d €.שª«¬­®11|²³8€^€^€i €/€j_{{104, 162}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@Ì…A²EFG€&€+€€k€h €.שª«¬­®11Œ²³8€^€^€m €/€n_{{149, 162}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@Ì•B²EFG€&€+€€o€l €.שª«¬­®11œ²³8Ÿ€^€^€q €/€r_{{194, 162}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@Ì¥C²EFG€&€+€€s€p €.שª«¬­®11¬²³8¯€^€^€u €/€v_{{104, 125}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@̵D²EFG€&€+€€w€t €.שª«¬­®11¼²³8¿€^€^€y €/€z_{{59, 125}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌÅE²EFG€&€+€€{€x €.שª«¬­®11̲³8Ï€^€^€} €/€~_{{149, 125}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌÕF²EFG€&€+€€€| €.שª«¬­®11ܲ³8߀^€^€ €/€‚_{{194, 125}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌåG²EFG€&€+€€ƒ€€ €.שª«¬­®11ì²³8ï€^€^€… €/€†_{{14, 125}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌõH²EFG€&€+€€‡€„ €.שª«¬­®11ü²³8ÿ€^€^€‰ €/€Š_{{149, 88}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌI²EFG€&€+€€‹€ˆ €.שª«¬­®11 ²³8€^€^€ €/€Ž_{{14, 88}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌJ²EFG€&€+€€€Œ €.שª«¬­®11²³8€^€^€‘ €/€’_{{103, 87}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@Ì%K²EFG€&€+€€“€ €.שª«¬­®11,²³8/€^€^€• €/€–_{{59, 88}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@Ì5L²EFG€&€+€€—€” €.שª«¬­®11<²³8?€^€^€™ €/€š_{{194, 88}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌEM²EFG€&€+€€›€˜ €.שª«¬­®11L²³8O€^€^€ €/€ž_{{14, 51}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌUN²EFG€&€+€€Ÿ€œ €.שª«¬­®11\²³8_€^€^€¡ €/€¢_{{104, 51}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌeO²EFG€&€+€€£€  €.שª«¬­®11l²³8o€^€^€¥ €/€¦_{{149, 51}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌuP²EFG€&€+€€§€¤ €.שª«¬­®11|²³8€^€^€© €/€ª_{{59, 51}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@Ì…Q²EFG€&€+€€«€¨ €.שª«¬­®11Œ²³8€^€^€­ €/€®_{{194, 51}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@Ì•R²EFG€&€+€€¯€¬ €.שª«¬­®11œ²³8Ÿ€^€^€± €/€²_{{14, 14}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@Ì¥S²EFG€&€+€€³€° €.שª«¬­®11¬²³8¯€^€^€µ €/€¶_{{104, 14}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@̵T²EFG€&€+€€·€´ €.שª«¬­®11¼²³8¿€^€^€¹ €/€º_{{149, 14}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌÅU²EFG€&€+€€»€¸ €.שª«¬­®11̲³8Ï€^€^€½ €/€¾_{{59, 14}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌÕV²EFG€&€+€€¿€¼ €.שª«¬­®11ܲ³8߀^€^€Á €/€Â_{{194, 14}, {37, 22}}Ù<=ÀÁÂ>ÇÉ?@ÌåW²EFG€&€+€€Ã€À €._{{2, 2}, {245, 198}}Ò78ëö£ö÷;_{{20, 115}, {249, 218}}V{0, 0}×<=ÀÁÇÉ?ðñòEÔÖ€&€Ë€Ê€É€.VMatrixÔÙÚÛÜÝÞø€€ÓUKúQM0 0.80000001€*Ò78ýþ¤þö÷;UNSBoxשª«¬­®¯¯²³8€ € €Î €/€Ï_{{162, 79}, {51, 17}}Ø<=ÀÁÂÇÉ„ Ì /EÔ€D€Ñ€€Ð€Í€.@WScale: ÕIJKL[OPQ€-€Ò€'€*_controlTextColorשª«¬­®¯¯²³8€ € €Ô €/€Õ_{{24, 79}, {77, 17}}Ø<=ÀÁÂÇÉ„ Ì"1EÔ€D€Ñ€€Ö€Ó€.XOffset: _{{1, 1}, {289, 340}}_{{0, 0}, {1440, 938}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò78+,¢,;_NSWindowTemplate\filterWindowÒ78/0£01;_NSNibOutletConnector^NSNibConnectorÔ£þÿ045?€€ß€à€`]convMatrix11:Ò789:£:1;_NSNibControlConnectorÔ£þÿ0=5@€€â€à€d]convMatrix12:Ô£þÿ0C5§€€ä€à€ ZautoRange:Ô£þÿ0I5,€€æ€à€T]offsetFactor:Ô£þÿ0O5-€€è€à€X\scaleFactor:Ô£þÿ0U5A€€ê€à€h]convMatrix13:Ô£þÿ0[5B€€ì€à€l]convMatrix14:Ô£þÿ0a5C€€î€à€p]convMatrix15:Ô£þÿHg0€„€ð€Ý€ZmatField11Ô£þÿ@m0€d€ò€Ý€ZmatField12Ô£þÿ§s0€ €ô€Ý€^autoScaleCheckÔ£þÿAy0€h€ö€Ý€ZmatField13Ô£þÿB0€l€ø€Ý€ZmatField14Ô£þÿC…0€p€ú€Ý€ZmatField15Ô£þÿH‹0€„€ü€Ý€ZmatField21Ô£þÿE‘0€x€þ€Ý€ZmatField22Ô£þÿD—0€t€Ý€ZmatField23Ô£þÿF0€|€Ý€ZmatField24Ô£þÿG£0€€€Ý€ZmatField25Ô£þÿJ©0€Œ€Ý€ZmatField31Ô£þÿL¯0€”€Ý€ZmatField32Ô£þÿKµ0€ €Ý€ZmatField33Ô£þÿI»0€ˆ €Ý€ZmatField34Ô£þÿMÁ0€˜€Ý€ZmatField35Ô£þÿNÇ0€œ€Ý€ZmatField41Ô£þÿQÍ0€¨€Ý€ZmatField42Ô£þÿOÓ0€ €Ý€ZmatField43Ô£þÿPÙ0€¤€Ý€ZmatField44Ô£þÿRß0€¬€Ý€ZmatField45Ô£þÿSå0€°€Ý€ZmatField51Ô£þÿVë0€¼€Ý€ZmatField52Ô£þÿTñ0€´€Ý€ZmatField53Ô£þÿU÷0€¸ €Ý€ZmatField54Ô£þÿWý0€À"€Ý€ZmatField55Ô£þÿ,0€T$€Ý€[offsetFieldÔ£þÿ- 0€X&€Ý€ZscaleFieldÔ£þÿ05H€(€à€„]convMatrix21:Ô£þÿ05W€*€à€À]convMatrix55:Ô£þÿ05E€,€à€x]convMatrix22:Ô£þÿ0!5D€.€à€t]convMatrix23:Ô£þÿ0'5F€0€à€|]convMatrix24:Ô£þÿ0-5G€2€à€€]convMatrix25:Ô£þÿ035J€4€à€Œ]convMatrix31:Ô£þÿ095L€6€à€”]convMatrix32:Ô£þÿ0?5K€8€à€]convMatrix33:Ô£þÿ0E5I€:€à€ˆ]convMatrix34:Ô£þÿ0K5M€<€à€˜]convMatrix35:Ô£þÿ0Q5N€>€à€œ]convMatrix41:Ô£þÿ0W5Q€@€à€¨]convMatrix42:Ô£þÿ0]5O€B€à€ ]convMatrix43:Ô£þÿ0c5P€D€à€¤]convMatrix44:Ô£þÿ0i5R€F€à€¬]convMatrix45:Ô£þÿ0o5S€H€à€°]convMatrix51:Ô£þÿ0u5V€J€à€¼]convMatrix52:Ô£þÿ0{5T€L€à€´]convMatrix53:Ô£þÿ05U€N€à€¸]convMatrix54:Ô£þÿ?‡€`P€Ý€_initialFirstResponderÔ£þÿ@?€dR€Ý€`[nextKeyViewÔ£þÿA@€hR€Ý€dÔ£þÿBA€lR€Ý€hÔ£þÿCB€pR€Ý€lÔ£þÿHC€„R€Ý€pÔ£þÿEH€xR€Ý€„Ô£þÿDE€tR€Ý€xÔ£þÿFD€|R€Ý€tÔ£þÿGF€€R€Ý€|Ô£þÿJG€ŒR€Ý€€Ô£þÿLJ€”R€Ý€ŒÔ£þÿKL€R€Ý€”Ô£þÿIK€ˆR€Ý€Ô£þÿMI€˜R€Ý€ˆÔ£þÿNM€œR€Ý€˜Ô£þÿQN€¨R€Ý€œÔ£þÿOQ€ R€Ý€¨Ô£þÿPO€¤R€Ý€ Ô£þÿRP€¬R€Ý€¤Ô£þÿSR€°R€Ý€¬Ô£þÿVS€¼R€Ý€°Ô£þÿTV€´R€Ý€¼Ô£þÿUT€¸R€Ý€´Ô£þÿWU€ÀR€Ý€¸Ô£þÿ-,€XR€Ý€TÔ£þÿ,W€TR€Ý€ÀÔ£þÿ?-€`R€Ý€XÔ£þÿ05*€n€à€HXfilterOKÔ£þÿ05+€p€à€M\filterCancelÒ> I¯(*-)(+ADGKN‰TWQJ,@CFIˆP.§VSM¯1/?BEHLORU1€H€X€0€#€M€h€t€€€€œ€9€´€À€¨€Œ€T€d€p€|€ˆ€€3€¤€\€ €¼€°€˜€ €^€Í€`€l€x€„€”€ €¬€¸€ÓrÒ78K¸¢¸;Ò>MI¯(¯¯¯¯¯11111)1111¯11110)1¯¯111.¯11111111¯€ € € € € €^€^€^€^€^€0€^€^€^€^€ €^€^€^€^€€0€^€ € €^€^€^€€\€ €^€^€^€^€^€^€^€^€ rÒ>xI¯&*-)(+ADGKN‰TWQJ,@CFI0MP§SVˆ/?BEHLORU1€H€X€0€#€M€h€t€€€€œ€9€´€À€¨€Œ€T€d€p€|€ˆ€€€˜€¤€ €°€¼€3€Í€`€l€x€„€”€ €¬€¸€ÓrÒ>¡I¯&¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›r\NSTextField3WNSForm1YNSButton1^NSTextField111_NSTextField1112_NSTextField111111_NSTextField11121_NSTextField1211[NSFormCell1_NSTextField1112111_NSTextField111111111_NSTextField11211^NSTextField121\NSTextField2]NSTextField11_NSTextField11111_NSTextField11112_NSTextField111121UPanel\File's Owner_NSTextField1111111_NSTextField1111211[NSButton411_NSTextField12111_NSTextField112111]NSTextField21\NSTextField1_NSTextField1111^NSTextField112]NSTextField12_NSTextField1121_NSTextField111211_NSTextField11111111_NSTextField11112111]NSTextField22Ò>íI rÒ>ðI rÒ>óI¯€_GŽOsRfBHzTYJm‰G`‘tS,M’g@{Z“Rn‚aE”uT¯W0(•h+K|[K–oN.Pƒb—CvU)„U˜i}\HL1…™-*pO§†cšNwVž‡A›jS~]MˆJœFqP‰dxWLŠ1k?^Q‹ˆrQDŒeVyXII/lM € ^€ 3€ñ_€l€A€´€ÿ€á€`'€9€€O a5€ó€Tm€˜b€dCc€¬)Q€xd7€õ€ €À€€#e€M€E€ãf+€é€\€¤Sg€p9€÷€0T€¸hG€„€å€ÓUi€X€H-€ë€ Vj€œ;€ùoW€hk!€°I€çX€Œl€|/€íY=€û€”Z€^#€`K €¨[€31€ï€t\€¼?€ý€Þ]€ˆ€Í%rÒ>wI¯xyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷ø ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      rmL-{`?|S0g F3}Z nM~a@(“T hG€[oNbA#‚U%iH5ƒ\8pO„cBq!…VjI6’r†)$]9'sP‰dC”t WkJ7uŽ^:vQeDwX lKx _>yR"fE2z‘YÒ>xŸ €=Ò>{I rÒ>~I rÒ78‚¢‚;^NSIBObjectData#,1:LQVdf´º3EP\j†“¦­»É×ñý "%(+.1469;>ADFHJLUaces|…•¤­ÀÉÔÕ×àçôú¶¸º¼¾ÀÂÄÆÈÊÌÎÐÒÔÖØÚÜßâåèëîñô÷úý  !$'*-0369<?BEHKNQTWZ]`cfilorux{~„‡Š“–™œŸ¢¥¨«­¾ÅÎÜÞàâä    ' 1 : A C E G H K M O ` k m o q s Š ¿ Ñ ä î ù   + 9 K W m z | ~ € ‚ „ † ˆ ‘ – ˜ š ¥ ¶ ½ Ä Í Ò Ô Ö Ù æ ï ô û      & + A B K V c q ~ ‡ ’ › ¥ ¬ ¸ Ë ø    + 3 < > @ B D u ‰ › ¥ ³ Á Î Û å ò ü          ! < N V _ i n p y € ’ › ¤ ¹ » ½ ¿ Á Ã Å Ç É Ë Í Ï ì î ð ò ó õ ÷5IUikmoqstv„™¡­ºÈÊÌÎÐÒÙïü ,.024>KNPYbt}Š–£îú'/;Iao„†ˆŠŒ•—™šœž ¢§©«ÅÎÓÕ×Ùú "',57LNPRW`hjsxŠ•ºÀÂÄÆÈÊÓÕêìîðù "*4;XZ\^`uwy{‚—™›Ÿ¬¹ÅÇÐßæïù!9jlnpr{}„–˜µ·¹»¼¾À× !#(/@BDFPRoqsuvxz’·¹»½¿ÁÂÄÆãåçéêíïñ .024689;=n{—¥³½¿ÁÃÅÇÉÊÌÎ×ÚÜÞóõ÷ùûý;=?ACEGIKMOQSUWY[]_acegikmoŒŽ’“•—¯ÔÖØÚÜÞßáþ !FHJLNPQSprtvwy{”¹»½¿ÁÃÄÆãåçéêìî,.024679VXZ\]_azŸ¡£¥§©ª¬ÉËÍÏÐÒÔí<>@BCEG_„†ˆŠŒŽ‘®°²´µ·¹Ò÷ùûýÿ!#%'(*,Ejlnprtuw”–˜š›Ÿ·ÜÞàâäæçé   )NPRTVXY[xz|~ƒš¿ÁÃÅÇÉÊÌéëíïðòô 13579;<>[]_abdf}¢¤¦¨ª¬­¯ÌÎÐÒÓÕ×ï!>@BDEGI`…‡‰‹’¯±³µ¶¸ºÒ÷ùûýÿ!#%'(*,Dikmoqstv“•—™šœžµÚÜÞàâäåç   'LNPRTVWYvxz|}˜½¿ÁÃÅÇÈÊçéëíîðò / 1 3 5 7 9 : < Y [ ] _ ` b d | ¡ £ ¥ § © « ¬ ® Ë Í Ï Ñ Ò Ô Ö í!!!!!!!!!!@!B!C!E!G!_!„!†!ˆ!Š!Œ!Ž!!‘!¨!±!¸!Ò!Ù!ö!ø!ú!ü!þ""""""",":"<"E"N"T"q"s"u"w"x"z"|"”"µ"·"¹"»"½"¿"Á"Æ"Î"ã"å"ç"é"ë"þ####!#"#$#&#=#^#`#b#d#f#h#j#s#Š#¢#­#Ê#Ó#Ø#ë#ø$$$$.$?$A$C$E$G$U$^$e$}$Ž$$’$”$–$¤$µ$·$¹$»$½$È$Ù$Û$Ý$ß$á$ï%%%%%%%&%(%*%,%.%<%M%O%Q%S%U%c%t%v%x%z%|%Š%›%%Ÿ%¡%£%®%¿%Á%Ã%Å%Ç%Ò%ã%å%ç%é%ë%ú& & &&&&&/&1&3&5&7&B&S&U&W&Y&[&f&w&y&{&}&&Š&›&&Ÿ&¡&£&®&¿&Á&Ä&Æ&È&Ó&ä&æ&é&ë&í&ø' ' '''''.'0'3'5'7'B'S'U'X'Z'\'g'x'z'}'''Œ''Ÿ'¢'¤'¦'±'Â'Ä'Ç'É'Ë'Ö'ç'é'ì'î'ð'û( ((((( (1(3(6(8(:(E(V(X([(](_(j({(}(€(‚(„(( (¢(¥(§(©(´(Å(Ç(Ê(Ì(Î(Ù(ê(ì(ï(ñ(ó(þ))))))#)4)6)9);)=)H)Y)[)^)`)b)n)))„)†)ˆ)“)¤)¦)©)«)­)»)Ì)Î)Ñ)Ó)Õ)ã)ô)ö)ù)û)ý* ***!*#*%*3*D*F*I*K*M*[*l*n*q*s*u*ƒ*”*–*™*›**«*¼*¾*Á*Ã*Å*Ó*ä*æ*é*ë*í*û+ +++++#+4+6+9+;+=+K+\+^+a+c+e+s+„+†+‰+‹++›+¬+®+±+³+µ+Ã+Ô+Ö+Ù+Û+Ý+ë+ü+þ,,,,,$,&,),+,-,;,L,N,Q,S,U,c,t,v,y,{,},‹,œ,ž,¡,£,¥,³,Ä,Æ,É,Ë,Í,å,ö,ø,û,ý,ÿ- ---!-#-%-6-8-;-=-?-P-R-U-W-Y-j-l-o-q-s-„-†-‰-‹--ž- -£-¥-§-¸-º-½-¿-Á-Ò-Ô-×-Ù-Û-ì-î-ñ-ó-õ... . .. .".%.'.).:.<.?.A.C.T.V.Y.[.].n.p.s.u.w.ˆ.Š...‘.¢.¤.§.©.«.¼.¾.Á.Ã.Å.Ö.Ø.Û.Ý.ß.ð.ò.õ.÷.ù/ / ////$/&/)/+/-/>/@/C/E/G/X/Z/]/_/a/r/t/w/y/{/Œ/Ž/‘/“/•/¦/¨/«/­/¯/À/Â/Å/Ç/É/Ò/ã/å/è/ê/ì/ù00U0W0Y0[0]0_0a0c0e0g0i0k0m0o0q0s0u0w0y0{0}000ƒ0…0‡0‰0‹000‘0“0•0—0™0›00Ÿ0¡0£0¥0¨0±0¶0¿11111111 1"1$1&1(1*1,1.10121416181:1<1>1@1B1D1F1H1J1L1N1P1R1T1V1X1Z1\1^1`1b1e1n1½1¿1Á1Ã1Å1Ç1É1Ë1Í1Ï1Ñ1Ó1Õ1×1Ù1Û1Ý1ß1á1ã1å1ç1é1ë1í1ï1ñ1ó1õ1÷1ù1û1ý1ÿ22222 2 22d2g2j2m2p2s2v2y2|22‚2…2ˆ2‹2Ž2‘2”2—2š22 2£2¦2©2¬2¯2²2µ2¸2»2¾2Á2Ä2Ç2Ê2Í2Ð2Ó2Ö2Ù2æ2î2ø333-3@3R3^3s3Š33¬3¹3Ç3Ú3í4444)4>4J4]4q44Œ4ž4­4»4Í4á4÷5 55$5%5(5152555>6C6F6I6K6N6P6S6U6X6[6]6_6b6d6f6h6j6m6p6r6t6w6z6}6€6‚6„6‡6‰6Œ66‘6”6—6š6œ6Ÿ6¢6¥6§6ª6­6¯6±6³6µ6·6º6½6¿6Á6Ä6Ç6É6Ì6Ï6Ñ6Ó6Õ6Ø6Û6Þ6à6ã6å6ç6ê6ì6ï6ò6õ6ø6ú6ü6þ77777 7 77777777"7%7'7*7-7/7275777:7<7?7A7D7F7I7L7O7Q7S7V7X7[7]7`7c7e7h7j7m7o7q7t7w7y7|7~7€7ƒ7…7‡7Š77–8›8ž8¡8¤8§8ª8­8°8³8¶8¹8¼8¿8Â8Å8È8Ë8Î8Ñ8Ô8×8Ú8Ý8à8ã8æ8é8ì8ï8ò8õ8ø8û8þ9999 9 9999999"9%9(9+9.9194979:9=9@9C9F9I9L9O9R9U9X9[9^9a9d9g9j9m9p9s9v9y9|99‚9…9ˆ9‹9Ž9‘9”9—9š99 9£9¦9©9¬9¯9²9µ9¸9»9¾9Á9Ä9Ç9Ê9Í9Ð9Ó9Ö9Ù9Ü9ß9â9å9è9ë9î9ñ9ô9÷9ú9ý:::: : :::::::!:#:%:':):+:-:/:1:3:5:7:9:;:=:?:A:C:E:G:I:K:M:O:Q:S:U:W:Y:[:]:_:a:c:e:g:i:k:m:o:q:s:u:w:y:{:}:::ƒ:…:‡:‰:‹:::‘:“:•:—:™:›::Ÿ:¡:£:¥:§:©:«:­:¯:±:³:µ:·:¹:»:½:¿:Á:Ã:Å:Ç:É:Ë:Í:Ï:Ñ:Ó:Õ:×:Ù:Û:Ý:ß:á:ã:å:ç:é:ë:í:ï:ñ:ó:õ:÷:ù:û:ý:ÿ;;;;; ; ; ;;;;;;;;$;%;';0;1;4;=;>;A;J;Oƒ;^PRICE-1.3.0/English.lproj/Convolve55.nib/objects.nib010064400017500000012000000163371134344743100212440ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCConvolve55†…†„i(–„„„NSButton„„ NSControl)„„NSView)„„ NSResponder”’„œ’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™ ’„„„ NSTextField›’ž™‚€ž…………Ÿ¹HH’ž’…’…’…„icc@„„„NSTextFieldCell>„„ NSActionCell„„NSCellA”„ii‚”qþA‚@„@@@@„˜˜†„„„NSFont”™$„[36c]þÿLucidaGrande„f „c«««†……„i:…’…’¢„c@@„„„NSColor”«„@@@„˜˜System†„˜˜textBackgroundColor†„¬«„ff††„¬«¯­„˜˜ textColor†„¬«°†††’…„:…†’„„„NSForm„„NSMatrix>›’ž™‚€ž…………®öf4f4’ž’…’…’…¢…„#iiii:::ffffi@@@@@¦ÿÿ………f‚„ ™’„„„ NSFormCell)¦¦‚qþ@‚ @§„„„NSMutableString˜˜†©……¬…’…’³„f@/„§¦‚þ‚§„º˜Field1:†©……††’„¸¦‚qþ@‚ @§„º˜†©……¬…’…’³·/„§¦‚þ‚§„º˜Field2:†©……†††„¬«¯­„˜˜ controlColor†„¬«°ƒ?*ª«††¯…„¸¦‚qþ@‚ @§¨©……¬…’…’…·/„§¦‚þ‚§„˜˜Field:†©……††’…’…’…†’™’„š’ž™‚€ž…………] T T ’ž’…’…’…¢„„„ NSButtonCell?¦¦‚þ‚8§„˜˜Cancel†©……¬…’…’Ç„ ssii@@@@@È‚†‚@ÿ¨„˜˜†…„ª™„[28c]þÿHelveticaª ««««†…††’„£’ž™‚€ž…………jM33’ž’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’Í­«°†’…±…†’„£’ž™‚-€ž…………ÚM33’ž’…’…’…¢„¥¦‚”qþA‚@§„˜˜1†©……¬…’…’Э«°†’…±…†’„„„NSBox*œ’ž™ž„ ™’„œ’Ó™ž„ ™’„£’Ö™‚€ž…………¢%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’Ø­«°†’…±…†’„£’Ö™‚€ž…………;¢%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’Û­«°†’…±…†’„£’Ö™‚€ž…………h¢%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’Þ­«°†’…±…†’„£’Ö™‚€ž…………•¢%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’á­«°†’…±…†’„£’Ö™‚€ž…………¢%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’ä­«°†’…±…†’„£’Ö™‚€ž…………h}%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’ç­«°†’…±…†’„£’Ö™‚€ž…………;}%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’ê­«°†’…±…†’„£’Ö™‚€ž…………•}%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’í­«°†’…±…†’„£’Ö™‚€ž…………Â}%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’ð­«°†’…±…†’„£’Ö™‚€ž…………}%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’ó­«°†’…±…†’„£’Ö™‚€ž…………•X%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’ö­«°†’…±…†’„£’Ö™‚€ž…………X%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’ù­«°†’…±…†’„£’Ö™‚€ž…………gW%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜1†©……¬…’…’ü­«°†’…±…†’„£’Ö™‚€ž…………;X%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’ÿ­«°†’…±…†’„£’Ö™‚€ž…………ÂX%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’­«°†’…±…†’„£’Ö™‚€ž…………3%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’­«°†’…±…†’„£’Ö™‚€ž…………h3%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’­«°†’…±…†’„£’Ö™‚€ž…………•3%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’ ­«°†’…±…†’„£’Ö™‚€ž…………;3%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’­«°†’…±…†’„£’Ö™‚€ž…………Â3%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’­«°†’…±…†’„£’Ö™‚€ž…………%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’­«°†’…±…†’„£’Ö™‚€ž…………h%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’­«°†’…±…†’„£’Ö™‚€ž…………•%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’­«°†’…±…†’„£’Ö™‚€ž…………;%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’­«°†’…±…†’„£’Ö™‚€ž…………Â%%’Ö’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’ ­«°†’…±…††………õÆõÆ’Ó’…’…’…††………sùÚùÚ’ž’…’…’…„ff@@ccc„¥¦‚þ§„˜˜Matrix†„ª™$©þÿLucidaGrandeª ««««†……¬…’…’…­«„¬«°ƒ?LÌ͆†Ö’…†’„£’ž™‚€ž…………¢O33’ž’…’…’…¢„¥¦‚þ‚@§„˜˜Scale: †©……¬…’…’'­Á„¬«¯­„˜˜controlTextColor†²††’…±…†’„š’ž™‚€ž…………4cc’ž’…’…’…¢„ɦ‚þ§„˜˜ Auto range†©……¬…’…’,¹È‚HÈçÈíyȨRÈ"ÈÐfÈŽEÈo2ÈîzÈöÈ'‘ȶY™•™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/Crop.nib004075500017500000012000000000001245331715400157725ustar00multixusersPRICE-1.3.0/English.lproj/Crop.nib/classes.nib010064400017500000012000000020111237374065100201720ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { changeBottom = id; changeLeft = id; changeRight = id; changeTop = id; resetValues = id; }; CLASS = PRCCrop; LANGUAGE = ObjC; OUTLETS = { bottomField = NSTextField; cropWindow = NSWindow; heightField = NSTextField; leftField = NSTextField; rightField = NSTextField; topField = NSTextField; widthField = NSTextField; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/Crop.nib/info.nib010064400017500000012000000007041237374065100174770ustar00multixusers IBDocumentLocation 93 163 356 240 0 0 1440 938 IBFramework Version 489.0 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/Crop.nib/objects.nib010064400017500000012000000052321237374065100201760ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+PRCCrop†…†„i–„„„NSButton„„ NSControl)„„NSView)„„ NSResponder”’„œ’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’„„„ NSTextField›’ž™‚€ž…………<44’ž’…’…’…„icc@„„„NSTextFieldCell>„„ NSActionCell„„NSCellA”„ii‚þ‚@„@@@@„˜˜width: †„„„NSFont”™$„[36c]þÿLucidaGrande„f „c«««†……„i:…’…’¢„c@@„„„NSColor”«„@@@„˜˜System†„˜˜ controlColor†„¬«„ffƒ?*ª«††„¬«¯­„˜˜controlTextColor†„¬«°†††’…„:…†’„£’ž™‚€ž…………•<88’ž’…’…’…¢„¥¦‚þ‚@§„˜˜height: †©……¬…’…’³­«°†’…±…†’„£’ž™‚€ž…………J:CC’ž’…’…’…¢„¥¦‚„qþA‚@§„˜˜†©……¬…’…’¶­„¬«¯­„˜˜textBackgroundColor†„¬«°††„¬«¯­„˜˜ textColor†²††’…±…†’„£’ž™‚€ž…………Ò:CC’ž’…’…’…¢„¥¦‚„qþA‚@§¸©……¬…’…’¾­¹¼†’…±…†’™’„š’ž™‚€ž…………Ç T T ’ž’…’…’…¢„„„ NSButtonCell?¦¦‚þ‚8§„˜˜Crop†©……¬…’…’À„ ssii@@@@@È‚†‚@ÿ„„„NSMutableString˜˜†„؆…„ª™„[28c]þÿHelveticaª ««««†…††’„š’ž™‚€ž…………w T T ’ž’…’…’…¢„¦‚þ‚8§„˜˜Cancel†©……¬…’…’ȳÈ‚†‚@ÿ¸„˜˜†…Ç…††’„„„NSBox*œ’ž™ž„ ™’„œ’Ì™ž„ ™’„£’Ï™‚€ž…………[RFF’Ï’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’Ñ­¹¼†’…±…†’„£’Ï™‚€ž…………©0FF’Ï’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’Ô­¹¼†’…±…†’„£’Ï™‚€ž…………0FF’Ï’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’×­¹¼†’…±…†’„£’Ï™‚€ž…………[FF’Ï’…’…’…¢„¥¦‚”qþA‚@§„˜˜0†©……¬…’…’Ú­¹¼†’…±…††………ývýv’Ì’…’…’…††………fŠŠ’ž’…’…’…„ff@@ccc„¥¦‚þ§„˜˜Margins†„ª™$©þÿLucidaGrandeª ««««†……¬…’…’…­¹„¬«°ƒ?LÌ͆†Ï’…††………)÷)÷’…’…’…’…†™‚€ž………… T T ’ž’…’…’…¢„¦‚þ‚8§„˜˜Reset†©……¬…’…’™³È‚†‚@ÿ„؆„؆…Ç…††ž–ÏÌ–³ž–Ìž–ž„„„NSWindowTemplateø”„ iiffffi@@@@@cŠ¡)÷‚px„˜˜Crop†„˜˜NSPanel†„ŘView†ž…„ffff ª«°Õ’…«°ƒÿîƒÿÑÏ–×Ï–¾ž–ÚÏ–Èž–Àž–ÔÏ–¶ž–¢ž–å•™ –™„˜˜NSButton†–³„˜˜ NSTextField21†–Ñ„˜˜ NSTextField†–ׄ˜˜NSTextField421†–¾„˜˜ NSTextField3†–È„˜˜ NSButton2†–Ú„˜˜ NSTextField4†–À„˜˜ NSButton1†–•„˜˜ File's Owner†–Ô„˜˜ NSTextField41†–¶„˜˜ NSTextField1†–¢„˜˜ NSTextField2†–儘˜Panel†’„„„ NSMutableSet„„NSSet”„I†’„ ™’„„„NSNibOutletConnectorÏ„„NSNibConnector”¯•Ñ„˜˜topField††’„ü¯•Ú„˜˜ bottomField††’„ü¯•ׄ˜˜ leftField††’„ü¯•Ô„˜˜ rightField††’„ü¯•¶„˜˜ widthField††’„ü¯•儘˜ cropWindow††’„ü¯•¾„˜˜ heightField††’„„„NSNibControlConnectorÏý¯Ú•„˜˜ changeBottom:††’„ ¯×•„˜˜ changeLeft:††’„ ¯Ô•„˜˜ changeRight:††’„ ¯Ñ•„˜˜ changeTop:††’„ ¯™•„˜˜ resetValues:††’„ ¯À•„˜˜filterOK††’„ ¯È•„˜˜ filterCancel†††’…™„@iÑÁåÁÁ³ ÁÏ#ÁÁ%ÁžÁÁÁ Á$ÁÚÁ ÁûÁ•Á¾ ÁÈÁÁÿÁÁÁÔ ÁÀÁÌ"Á¢Á™Á× ÁÁ¶ ™&™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/CumulHistogram.nib004075500017500000012000000000001245331715400200325ustar00multixusersPRICE-1.3.0/English.lproj/CumulHistogram.nib/classes.nib010064400017500000012000000011570777341412300222440ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {showHistogram = id; }; CLASS = PRCHistogram; LANGUAGE = ObjC; OUTLETS = {histoView = PRHistogram; histoWindow = NSWindow; }; SUPERCLASS = NSObject; }, {CLASS = PRCumHisto; LANGUAGE = ObjC; SUPERCLASS = PRHistogram; }, { CLASS = PRHistogram; LANGUAGE = ObjC; OUTLETS = {theController = PRCHistogram; }; SUPERCLASS = NSView; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/CumulHistogram.nib/info.nib010064400017500000012000000007031003574064200215270ustar00multixusers IBDocumentLocation 129 74 356 240 0 0 1152 848 IBFramework Version 283.0 IBOpenObjects 5 IBSystem Version 6R73 PRICE-1.3.0/English.lproj/CumulHistogram.nib/objects.nib010064400017500000012000000013041003574064200222230ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCHistogram†…†„i–„„„NSWindowTemplateø”„ iiffffi@@@@@c Ihð‚px„˜˜Cumulative Histogram†„˜˜NSPanel†„„„NSMutableString˜˜View†„„„NSView)„„ NSResponder”’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’„„„ NSCustomView) ’Ÿ™‚Ÿ…………@È@È’Ÿ’…’…’…–„˜˜ PRCumHisto†„˜˜NSView†††………hðhð’…’…’…’…†…„ffff€P„c„ffÕ’…¤¥ƒÿîƒÿ–¥Ÿ–Ÿ™™–™„˜˜Panel†–¥„˜˜View†–•„˜˜ File's Owner†’„„„ NSMutableSet„„NSSet”„I†’„£™’„„„NSNibOutletConnectorÏ„„NSNibConnector”„@@@•™„˜˜ histoWindow††’„±«•¥„˜˜ histoView†††’…™„@i•¬™¬Ÿ¬¥¬°¬´ ™™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/Curves.nib004075500017500000012000000000001245331715400163365ustar00multixusersPRICE-1.3.0/English.lproj/Curves.nib/classes.nib010064400017500000012000000017011162455474200205450ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {curvesReset = id; setBlackPoint = id; setWhitePoint = id; }; CLASS = PRCCurves; LANGUAGE = ObjC; OUTLETS = { blackPointField = NSTextField; blackPointStepper = NSStepper; curvesView = PRCurvesView; curvesWindow = NSWindow; whitePointField = NSTextField; whitePointStepper = NSStepper; }; SUPERCLASS = PRFilterController; }, {CLASS = PRCurvesView; LANGUAGE = ObjC; SUPERCLASS = NSView; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/Curves.nib/info.nib010064400017500000012000000007601162223065100200330ustar00multixusers IBDocumentLocation 99 95 356 240 0 0 1440 938 IBFramework Version 489.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/Curves.nib/keyedobjects.nib010064400017500000012000000157441206612076700215740ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯± 156<=AEU]uvw{‚Š’žŸ¹ºÂÃÆÇÉÎÔÛÜäåçîï÷øú "#Ò$'+,./089>HIJNPSVYcgmt{|‡ˆŽ‘•œ¥¦­®¸»¾ÅÆÍÎ/ÏÕÖØÙÚÛÜßàäéêïðõöûüÿ  û"',->@Q^kl€“mÐn&opqtw–=µE¶·¸¹º»¼½¾±¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÑÔ×U$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€€€­€Ž€€€€¯€€€°€€‚€~€®€€&€Ò234[NSClassName€€YPRCCurvesÒ789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FT­GHIJKLMNOPQRS€ €e€g€i€k€n€p€r€t€v€x€z€|€0ÔVWXYZ[0]NSDestinationWNSLabelXNSSource€ €c€d€Ü^_`abcdefghijklmnopqrst_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€`€ € € €_€a€px€b€_{{246, 367}, {418, 367}}VCurvesÒxyzYNS.stringWNSPanel€Ò78|}£}~;_NSMutableStringXNSStringÒx€zTView€Ôƒ„…†.ˆ‰ZNSSubviews_NSNextResponderWNSFrame€€€^€2Ò>‹T¥ŒŽ€€€"€'€@€0ׄ“…”•–qq™š›œ[NSSuperviewYNSEnabledXNSvFlagsVNSCell€€€ €€_{{14, 12}, {82, 32}}Ý ¡¢£¤¥¦§¨©ª«¬­­¯Œ±²³´µ¶·¸_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2€€€€€ÿÿÿÿ†‚@ÿ€Èþ€UResetÔ»¼½¾¿ÀÁVNSSizeVNSNameXNSfFlags"AP€€\LucidaGrandeÒ78ÄÅ¢Å;VNSFontPÒxÆz€Ò78ÊË¥ËÌÍ–;\NSButtonCell]%NSButtonCell\NSActionCellÒ78ÏÐ¥ÐÑÒÓ;XNSButtonYNSControlVNSView[NSResponderׄ“…”•–qqך›œÚ€€€ €€_{{240, 12}, {82, 32}}Ý ¡¢£¤¥¦§¨©ª«Ý­­à±²³´µ¶·¸€!€€€ €€€VCancelÒxÆz€ׄ“…”•–qqêš›œí€€€# €€$_{{322, 12}, {82, 32}}Ý ¡¢£¤¥¦§¨©ª«ð­­óޱ²³´µ¶·¸€&€€€%€"€€UApplyÒxÆz€܃„“ûüý…þÿqqij   \NSBorderType_NSTitlePosition[NSTitleCellYNSOffsets]NSTransparent]NSContentViewYNSBoxType€(€€€5€3€4€)€?Ò> T¡ €)€0Õƒ„“…‰€*€'€'€1€2Ò>T¡€+€0Ö„“…2   ![NSExtension€.€)€)€,€/€-_{{14, 14}, {256, 256}}\PRCurvesViewÒ78%&¤&ÒÓ;\NSCustomViewÒ78()£)*;^NSMutableArrayWNSArray_{{2, 2}, {284, 284}}Ò78-Ò£ÒÓ;_{{17, 46}, {288, 301}}V{0, 0}×12¢£©«34567¶ _NSBackgroundColor[NSTextColor€8€=€7€6€>YFunctionsÔ»¼½:¿À="A0€€Õ?@ABCDEFGWNSColor[NSColorName\NSColorSpace]NSCatalogName€;€:€9€dT¡a€B€0Õƒ„“…hk‰€C€@€@€X€2Ò>nT¤opqr€D€L€P€U€0ׄ“…”•–aawš›yz€B€B€E €K€F_{{14, 46}, {41, 22}}Ù12¢£¤}©«3­oš7…†_NSDrawsBackground€8€H€€G€D €>ÿÿÿÿ”qþA@Q0Õ?@AB‰ŠEFG€J€I€9€S255ׄ“…”•–aa©š›«¬€B€B€Q €T€R_{{60, 43}, {19, 27}}ׯ¤°©±«šq´µ¶· \NSAutorepeatZNSMaxValue[NSIncrement €P#@oÀ€S þ #?ðÒ78¹º¤ºÍ–;]NSStepperCellÒ78¼½¥½ÑÒÓ;YNSStepperׄ“…”•–aaÁš›«Ä€B€B€V €T€W_{{60, 11}, {19, 27}}Ù¯¤Ç°È©±«šrË˵·¶· WNSValueZNSMinValue €U#@oà€S_{{2, 2}, {90, 82}}_{{307, 248}, {94, 99}}×12¢£©«3Ñ5Ó7¶ €8€]€7€\€>]Black & WhiteÓKAQiG€<_{{1, 1}, {418, 367}}_{{0, 0}, {1440, 938}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò78ÝÞ¢Þ;_NSWindowTemplate\curvesWindowÒ78áâ£âã;_NSNibOutletConnector^NSNibConnectorÔVWXæ[0€+€f€d€ZcurvesViewÔVWXoì[0€D€h€d€_blackPointFieldÔVWXpò[0€L€j€d€_whitePointFieldÔVWX0øùo€€l€m€D^setBlackPoint:Ò78ýþ£þã;_NSNibControlConnectorÔVWX0ùp€€o€m€L^setWhitePoint:ÔVWX0ùŽ€€q€m€"YfilterOK:ÔVWX0 ù€€s€m€]filterCancel:ÔVWXq[0€P€u€d€_blackPointStepperÔVWXr[0€U€w€d€_whitePointStepperÔVWX0ùq€€y€m€PÔVWX0$ùr€€{€m€UÔVWX0)ùŒ€€}€m€[curvesResetÒ>.=®rqoŽŒaq pY€U€+€€D€"€€@€B€€P€)€L€ €'€Ò78?*¢*;Ò>A=®a Yaqqqqaa0q€B€)€ €B€€€€@€€B€'€B€€€Ò>R=ªr0oŽŒqpY€U€€+€D€"€€€P€L€ €Ò>_=ª`abcdefghi€ƒ€„€…€†€‡€ˆ€‰€Š€‹€Œ€]NSCustomView1\File's OwnerYNSButton2YNSButton1\NSTextField1UPanelÒ>r= €Ò>u= €Ò>x=¯pHqŒJqYOMr0LKPSŽQ aGINRo€L€e€€€'€€i€P€ €t€p€U€€n€k€v€|€"€+€x€)€@€B€ €g€r€z€D€Ò>—=¯˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³€‘€’€“€”€•€–€—€˜€™€š€›€œ€€ž€Ÿ€ €¡€¢€£€¤€¥€¦€§€¨€©€ª€«€¬€   !"% # $ Ò>ÏT €0Ò>Ò= €Ò>Õ= €Ò78ØÙ¢Ù;^NSIBObjectData#,1:LQVdfËÑ.J\gsª½ÄÒàî",3579;=?ACEGIKMOQSUW`lnpzƒŒ—œ«´ÇÐÛÜÞçîû %')+-/13579;=?AR`hqsuwyª¾ÐÚèö'1=?ACEGIKMOTVXszƒ•— §¹ÂËÐÒãî  $&(*,.0MYclsuwyz}˜Íßòü$9GYe{ˆŠŒŽ’”–Ÿ¡£¨ª¯µÆÍÔÝâäæéöÿ   +8FS\gpzª¬®°±³µÍ        " ? A C E F H J b — ™ › Ÿ ¡ £ ¥ « ´ ¶ ç ô    * 8 B D F H J L N O Q S U ^ a c e z | ~ € ‚ „ ’ ” ­ ¹ » ½ ¿ Á Ã Å Þ ë ô ý   ) 1 H Q X q x • © µ · ¹ » ½ ¿ É Ú ß á ã å ú    ) + - / 1 3 : P ] e h j s x … “ • ž § ¹ Â Ë Ñ           ! # 8 : < > @ B K T V X Z \ ^ { }  ‚ „ † Â Ö Ø Ú Ü Þ à á ã ì ñ ó  '*,5BN[xz|~ƒš¿ÁÃÅÇÉÊÌÐíïñóôöø,9DPQS\^clu~Œ• ªÇÉËÍÎÐÒé!"$-/D]z|~€‚„’Ÿ¡¸ÐÛø&/6M\moqsu€‘“•—™«¼¾ÀÂÄÖçéëíïþ&79;=?N_acegq‚„†ˆŠ˜©«­¯±ÅÖØÚÜÞò   "$579;=IRoqsuwy{}ƒ…‡‰‹–›¤ÁÃÅÇÉËÍÏÑÓÕ×ÙÛÝßèýÿ   13579;=?ACEGUblvƒ‰’“•žŸ¡ªåçéëíïñóõ÷ùûýÿ   (cegikmoqsuwy{}ƒ…‡‰‹‘“•—™›Ÿ¡£¥§©«­¯±³µ·¹»½¿ÁÃÅÇÉËÍÏØÙÛäåçðñóüÚPRICE-1.3.0/English.lproj/Curves.nib/objects.nib010064400017500000012000000047101206612076700205410ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCCurves†…†„i–„„„ NSStepper„„ NSControl)„„NSView)„„ NSResponder”’„œ’„„„NSBox*œ’„œ’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’„„„NSButton›’¡™‚€Ÿ………… R R ’¡’…’…’…„icc@„„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚þ‚„@@@@„˜˜Reset†„„„NSFont”™$„[36c]þÿLucidaGrande„f „c¬¬¬†……„i:…’…’¥„ ssii@@@@@È‚†‚@ÿ„˜˜†„„„NSMutableString˜˜†…¬…††’„¦’¡™‚€Ÿ…………ð R R ’¡’…’…’…£„¨§‚þ‚¨„˜˜Cancel†¬……­…’…’±®È‚†‚@ÿ®„°˜†…¬…††’„¦’¡™‚€Ÿ…………B R R ’¡’…’…’…£„¨§‚þ‚¨„˜˜Apply†¬……­…’…’µ®È‚†‚@ÿ®„°˜†…¬…††’„ ’¡™Ÿ„£™’„œ’¹™Ÿ„£™’„„„ NSCustomView)œ’»™Ÿ…………’»’…’…’…–„˜˜ PRCurvesView†„˜˜NSView†††………’¹’…’…’…††………. - -’¡’…’…’…„ff@@ccc„„„NSTextFieldCell>©§‚þ¨„˜˜ Functions†„­™$ªþÿLucidaGrande« ¬¬¬¬†……­…’…’…„c@@„„„NSColor”¬„@@@„˜˜System†„˜˜textBackgroundColor†„Ƭ„ff††„Ƭ¶ƒ?LÌ͆†»’…†’Ÿ†………¢o¢o’…’…’…’…†™Ÿ„£™’ž†………3ø^c^c’¡’…’…’…±„§‚þ¨„˜˜ Black & White†Ä……­…’…’…³Å„Ƭ¶ƒ?LÌ͆†ž’…†™Ÿ„£™’„„„ NSTextField›’ž™‚€Ÿ………….))’ž’…’…’…£„§‚”qþA‚@¨„˜˜0†¬……­…’…’гńƬµÇ„˜˜ textColor†„Ƭ¶†††’…„:…†’„Ñ’ž™‚€Ÿ…………))’ž’…’…’…£„§‚”qþA‚@¨„˜˜255†¬……­…’…’׳ÅÔ†’…¸…†’„š’ž™‚€Ÿ…………<+’ž’…’…’…£„„„ NSStepperCell©§‚ þ ¨…………­…’…’Ú„ ddddiiiiiþ‚@†„iiii†’™†………ZRZR’Ÿ’…’…’…†™‚€Ÿ…………< ’ž’…’…’…£„ܧ‚ þ ¨…………­…’…’™ºÿÿ‚@†»†ž–½»–¡„„„NSWindowTemplateø”„ iiffffi@@@@@cöo¢o‚px„˜˜Curves†„°˜NSPanel†„°˜View†¡…„ffff ª¬¶Õ’…¬¶ƒÿîƒÿО–µ¡–¥¡–Ÿ¡–žŸ–±¡–Úž–»¹–מ–Þ•–¹¡™ –™„˜˜ NSCustomView1†–•„˜˜ File's Owner†–½„˜˜View†–Є˜˜ NSTextField†–µ„˜˜ NSButton2†–¥„˜˜NSButton†–±„˜˜ NSButton1†–Ú„˜˜ NSCustomView†–ׄ˜˜ NSTextField1†–Þ„˜˜Panel†’„„„ NSMutableSet„„NSSet”„I†’„£™ ’„„„NSNibOutletConnectorÏ„„NSNibConnector”µ•Þ„˜˜ curvesWindow††’„òµ•½„˜˜ curvesView††’„òµ•Є˜˜blackPointField††’„òµ•ׄ˜˜whitePointField††’„„„NSNibControlConnectorÏóµÐ•„˜˜setBlackPoint:††’„üµ×•„˜˜setWhitePoint:††’„üµµ•„˜˜ filterOK:††’„üµ±•„˜˜ filterCancel:††’„òµ•Ú„˜˜blackPointStepper††’„òµ•™„˜˜whitePointStepper††’„üµÚ•„˜˜setBlackPoint:††’„üµ™•„˜˜setWhitePoint:††’„üµ¥•„˜˜ curvesReset†††’…™„@i×Åõ šť Źű ÅùÅÚÅÞÅ!ÅřŕÅþÅûÅ"Å %ŵ ŽÅ#ŻşŞÅñÅ÷Å Å $ÅÐ ™&™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/CustTraceEdges.nib004075500017500000012000000000001245331715400177345ustar00multixusersPRICE-1.3.0/English.lproj/CustTraceEdges.nib/classes.nib010064400017500000012000000032771134332252300221410ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { changeSize1 = id; changeSize2 = id; changeSize3 = id; changeThreshold = id; enablePane1 = id; enablePane2 = id; enablePane3 = id; showEdges = id; }; CLASS = PRCCustTraceEdges; LANGUAGE = ObjC; OUTLETS = { edgeWindow = NSWindow; enableCheck1 = NSButton; enableCheck2 = NSButton; enableCheck3 = NSButton; filterType = NSPopUpButton; formSelect1 = NSPopUpButton; formSelect2 = NSPopUpButton; formSelect3 = NSPopUpButton; separableCheck1 = NSButton; separableCheck2 = NSButton; separableCheck3 = NSButton; sizeField1 = NSTextField; sizeField2 = NSTextField; sizeField3 = NSTextField; sizeSlider1 = NSSlider; sizeSlider2 = NSSlider; sizeSlider3 = NSSlider; thresholdField = NSTextField; thresholdSlider = NSSlider; zeroCrossCheck = NSButton; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/CustTraceEdges.nib/info.nib010064400017500000012000000007041237275077400214470ustar00multixusers IBDocumentLocation 129 73 356 240 0 0 1440 938 IBFramework Version 489.0 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/CustTraceEdges.nib/objects.nib010064400017500000012000000172601237275077600221540ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+PRCCustTraceEdges†…†„iA–„„„ NSMenuItemŸ”’„„„NSMenuÌ”„i@@@„„„NSMutableString˜˜ OtherViews†„„„NSMutableArray„„NSArray”™ ’„š’›„ i@@IIi@@@@:i@„˜˜Pixel Difference†„˜˜†‚‚ÿÿÿ…„„„NSCustomResource)”–„˜˜NSImage†„˜˜NSMenuCheckmark††…„¦–§„˜˜NSMenuMixedState††„_popUpItemAction:…’„„„NSPopUpButtonCell1„„NSMenuItemCellÒ„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚„Aþ@‚„@@@@…„„„NSFont”™$„[36c]þÿLucidaGrande„f „c­­­†……„i:…’…’„„„ NSPopUpButtonÌ„„NSButton„„ NSControl)„„NSView)„„ NSResponder”’„·’„„„ NSTabView·’„·’…™„ @@@@ffffffff„ ™’„µ’¼™‚€µ…………1 T T ’¼’…’…’…„icc@„®¨‚þ‚8©„˜˜Trace†±……®…’…’¾„ ssii@@@@@È‚†‚@ÿ¤„˜˜ †…„²™„[28c]þÿHelvetica¬ ­­­­†…††’„µ’¼™‚€µ…………Ù T T ’¼’…’…’…¶„®¨‚þ‚8©„˜˜Cancel†±……®…’…’÷È‚†‚@ÿ¤„˜˜†…Â…††’º†………““’…’…’…’…†™µ„ ™’¹†……… -ÙÙ’¼’…’…’…„@@@icc„ ™’„„„ NSTabViewItem”„@@@@@@@„˜˜1†¹„˜˜Tracing†„„„NSColor”­„@@@„˜˜System†„˜˜ controlColor†„έ„ffƒ?*ª«††……º†’„Ê»„˜˜2†„·’…™µ„ ™’„„„NSSlider¶’Ô™‚€µ…………`]~~’Ô’…’…’…¶„„„ NSSliderCell⯨‚ÿ©„ž˜†„²™¸þÿHelvetica¬ ­­­­†……®…’…’Ö„ddddiii††’„„„ NSTextField¶’Ô™‚€µ…………òhNN’Ô’…’…’…¶„„„NSTextFieldCell>¯¨‚„1þA‚@©„˜˜3†±……®…’…’Ü„c@@„έ½Ï„˜˜textBackgroundColor†„έ¾††„έ½Ï„˜˜ textColor†„έ¾†††’…„:…†’„´’Ô™‚€µ…………_*€€’Ô’…’…’…¶„¬¨‚„Aþ@‚©…±……®…’…’ç·K‚‚@ÿ„ž˜†„ž˜†…„²™$«þÿLucidaGrande¬ ­­­­†…–„š’„œœ„ž˜ OtherViews†„ ™’ì’„š’í „˜˜Vertical†¤‚‚ÿÿÿ…¥…©¢…’è’…†’„š’í „˜˜Cross†¤‚‚ÿÿÿ…¥…©¢…’è’…†’„š’í „˜˜Box†¤‚‚ÿÿÿ…¥…©¢…’è’…††…† „˜˜ Horizontal†¤‚‚ÿÿÿ…¥…©¢…’è’…†…„i@i‚=톆’„µ’Ô™‚€µ…………ð/TT’Ô’…’…’…¶„®¨‚þ©„˜˜ Separable†±……®…’…’÷·È‚HÄ͆’…Å…†’„´’-™‚€µ…………_*€€’-’…’…’…¶„¬¨‚„Aþ@‚©…±……®…’…’A·K‚‚@ÿ„ž˜†„ž˜†…ë…–„š’„œœ„ž˜ OtherViews†„ ™’E’„š’F „˜˜Vertical†¤‚‚ÿÿÿ…¥…©¢…’B’…†’„š’F „˜˜Cross†¤‚‚ÿÿÿ…¥…©¢…’B’…†’„š’F „˜˜Box†¤‚‚ÿÿÿ…¥…©¢…’B’…††…† „˜˜ Horizontal†¤‚‚ÿÿÿ…¥…©¢…’B’…†…Æ‚=F†††……… !k«k«’…’…’…’…†„˜˜Third†Í……º††É±’…†™µ„ ™’„×’¹™‚€µ…………o<°°’¹’…’…’…¶„Ù¨‚ÿ©„ž˜†Û……®…’…’RÁƒ?É™™™™™š ††’„Ý’¹™‚€µ…………'E99’¹’…’…’…¶„ߨ‚„1þA‚€@©„˜˜0.2†±„„„NSNumberFormatter„„ NSFormatter”»„˜˜#,##0.00†„˜˜ -#,##0.00†„„„ NSDictionary”™†…„„„NSAttributedString”’„˜˜0.00†„iI’„^™††„`’¤†„`’„˜˜NaN†Ì’b†„@@@@@ccc„„„NSDecimalNumberPlaceholder”™„S„CЄI„[8S]•qð‘bÄ’ÂÙx¿ÿΆf…„˜˜.†„˜˜,††…®…’…’UÄá䆒…Å…†’„Ý’¹™‚€µ…………E]]’¹’…’…’…¶„ߨ‚þ‚@©„˜˜ Threshold: †±……®…’…’jÄ͆’…Å…†’„µ’¹™‚€µ…………[[’¹’…’…’…¶„®¨‚þ©„˜˜ Zero Cross†±……®…’…’m·È‚H-–;-–Ô–A-–KF–¹É–ÜÔ™2–™„˜˜ NSMenuItem11†–Ò„˜˜NSTabViewItem1†–焘˜ NSPopUpButton†–E„˜˜ NSMenuItem†–ò„˜˜ NSMenuItem2†–$„˜˜ NSMenuItem1†–Ę˜ NSButton1†– „˜˜ NSSlider21†–¾„˜˜NSButton†–›„˜˜ PopUpList1†–³„˜˜NSPopUpButton11†–ð„˜˜ NSMenuItem1†–„˜˜ NSButton4†–R„˜˜ NSSlider2†–„˜˜Panel†–~„˜˜ NSMenuItem21†–F„˜˜ PopUpList†–&„˜˜ NSMenuItem2†–„˜˜ NSPopUpButton†–„˜˜ NSTextField2†–„˜˜ NSTextField21†–„˜˜ NSButton41†–÷„˜˜ NSButton4†–턘˜ PopUpList†–„˜˜ NSTextField†–U„˜˜ NSTextField1†–•„˜˜ File's Owner†–섘˜ NSMenuItem†–É„˜˜ NSTabViewItem†–Ö„˜˜ NSSlider21†– „˜˜ NSMenuItem†–/„˜˜ NSButton41†–Ô„˜˜NSView†–ý„˜˜ NSButton41†–º„˜˜ NSTabView†–I„˜˜ NSMenuItem1†–2„˜˜ NSButton4†–„˜˜ NSTextField2†–8„˜˜ NSSlider21†–5„˜˜ NSTextField†–j„˜˜ NSTextField22†–m„˜˜ NSButton41†–A„˜˜ NSPopUpButton†–!„˜˜ PopUpList†–>„˜˜ NSTextField2†–;„˜˜ NSTextField21†–„˜˜ NSTextField21†–K„˜˜ NSMenuItem2†–¹„˜˜NSView†–Ü„˜˜ NSTextField†’„„„ NSMutableSet„„NSSet”ц’„ ™%’„„„NSNibOutletConnectorÏ„„NSNibConnector”½•„˜˜ edgeWindow††’„½½•³„˜˜ filterType††’„½½•R„˜˜thresholdSlider††’„½½•U„˜˜thresholdField††’„½½•m„˜˜zeroCrossCheck††’„½½•焘˜ formSelect1††’„½½•Ö„˜˜ sizeSlider1††’„½½•Ü„˜˜ sizeField1††’„½½•÷„˜˜separableCheck1††’„½½• „˜˜ sizeSlider2††’„½½•„˜˜ formSelect2††’„½½•„˜˜separableCheck2††’„½½•„˜˜ sizeField2††’„„„NSNibControlConnectorϾ½ •„˜˜ changeSize2:††’„Ù½Ö•„˜˜ changeSize1:††’„½½•2„˜˜separableCheck3††’„½½•8„˜˜ sizeSlider3††’„½½•5„˜˜ sizeField3††’„½½•A„˜˜ formSelect3††’„Ù½8•„˜˜ changeSize3:††’„Ù½ý•„˜˜ enablePane1:††’„Ù½/•„˜˜ enablePane3:††’„Ù½•„˜˜ enablePane2:††’„½½•ý„˜˜ enableCheck1††’„½½•„˜˜ enableCheck2††’„½½•/„˜˜ enableCheck3††’„Ù½R•„˜˜changeThreshold:††’„Ù½¾•„˜˜ filterOK:††’„ٽÕ„˜˜ filterCancel:††’„Ù½³•„˜˜parametersChanged:††’„Ù½m•„˜˜parametersChanged:††’„ٽ畄˜˜parametersChanged:††’„Ù½÷•„˜˜parametersChanged:††’„Ù½•„˜˜parametersChanged:††’„Ù½•„˜˜parametersChanged:††’„Ù½A•„˜˜parametersChanged:††’„Ù½2•„˜˜parametersChanged:†††’…™g„@iÛ/ZÛ~ÛEaÛóvÛ Û8^ÛëqÛìÛ›4Û¾ÛÔTÛR1ÛãiÛÌPÛAdÛÛWÛ /ÛÄCÛ*Ûv@Ûý|Û|:ÛÛI]ÛùzÛõxÛÔ ÛírÛíÛXwÛ%ÛÖUÛ "ÛåjÛÜÛ$+ÛÎQÛÝfÛ2[ÛÆEÛÛ³6Û,ÛÛMbÛ¼ Ûº Ût5Ûj3ÛôÛ ÛÃÛ™=ÛïsÛýÛ(-Ûz;ÛçnÛF_Ûÿ}ÛÐRÛ ÛßgÛ;`Û•ÛÉÛÈNÛU2ÛÀAÛ-YÛçÛ!.ÛÖÛ¢<Û&Ûr8Û÷yÛÒÛ¹ÛñtÛKeÛ¼Û,XÛm?Û€Û÷ÛépÛû{Û5\ÛòÛÒSÛáhÛ>cÛÊOÛØVÛðÛ'Û#Ûx>ÛÂBÛ~7Û&0™‚™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/DFTHighPass.nib004075500017500000012000000000001245331715400171335ustar00multixusersPRICE-1.3.0/English.lproj/DFTHighPass.nib/classes.nib010064400017500000012000000020571134276076100213440ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { changePassBand = id; changeStopBand = id; dftHPAutoRange = id; showDFTHP = id; }; CLASS = PRCDFTHighPass; LANGUAGE = ObjC; OUTLETS = { autoRangeCheck = NSButton; filterWindow = NSWindow; passBandSlider = NSSlider; passBandVal = NSTextField; passBandValPi = NSTextField; stopBandSlider = NSSlider; stopBandVal = NSTextField; stopBandValPi = NSTextField; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/DFTHighPass.nib/info.nib010064400017500000012000000007621134276076100206430ustar00multixusers IBDocumentLocation 101 108 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/DFTHighPass.nib/keyedobjects.nib010064400017500000012000000165201134276106000223530ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯· 156<=AEW_wxyz~‚Š˜¤¥¿ÂÊËÎÒØßàôõúûþ "#,-12À5<=GHRSTXZ_`cfjqrz{|ƒ„‹Œ“”Ÿ¤¥¨­®µ¶¾ÅÆÎÕÖÞâãåæçèëìðõöûü  #().(389>?DEUWgw‡ˆ‰hŠ‹ŒŽ‘’•˜¸ØÙÚÛÜíÝÞßàOáâãäɳåæçè¸éêëìíîïðóöùU$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€‚€³€“€”€ƒ€’€µ€•€€¶€€„€€€´€€-€Ò234[NSClassName€€^PRCDFTHighPassÒ789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FV¯GHIJKLMNOPQRSTU€ €c€e€g€i€k€m€o€q€t€v€x€z€|€~€ZÔXYZ[\]0]NSDestinationWNSLabelXNSSource€ €a€b€Ü`abcdefghijklmnopqrstuv_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€^€ € € €]€_€px€`€_{{170, 395}, {325, 161}}]DFT High PassWNSPanelÒ{|}YNS.stringTView€Ò78€£€;_NSMutableStringXNSStringÔƒ„…†.ˆ‰ZNSSubviews_NSNextResponderWNSFrame€€€[€\Ò>‹V«ŒŽ‘’“”•–€€€&€*€2€@€E€I€Q€T€W€Zׄ™…š›œssŸ ¡¢£[NSSuperviewYNSEnabledXNSvFlagsVNSCell€€€ €€_{{128, 88}, {178, 26}}Þ¦§¨©ª«¬­®¯°±²³´µ¶Œ¸¹ºº»´¹½¾_NSTickMarkPosition]NSAltIncValueYNSSupportZNSContents]NSControlView_NSNumberOfTickMarks_NSAllowsTickMarkValuesOnlyZNSMaxValueWNSValueZNSMinValueZNSVertical[NSCellFlags\NSCellFlags2#€€€#?ð€ÿÒ{À}P€ÔÃÄÅÆÇÈÉVNSSizeVNSNameXNSfFlags"A@€€YHelveticaÒ78ÌÍ¢Í;VNSFontÒ78ÏФÐÑœ;\NSSliderCell\NSActionCellÒ78ÓÔ¥ÔÕÖ×;XNSSliderYNSControlVNSView[NSResponderׄ™…š›œssÛ ¡ÝÞ€€€ €%€_{{226, 12}, {84, 32}}Ýá⨩ªãäåæ±ç²èéêë³íîïðñòó_NSKeyEquivalent_NSAlternateImage^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay_NSAlternateContents€#€!€€€ÿÿÿÿ†‚@ÿ€$Èþ€"8VFilterÔÃÄÅö÷Èù"AP€ €\LucidaGrandeÔÃÄÅöÇÈÉ€€Ò{À}€Ò{À}€Ò78¥Ñœ;\NSButtonCell]%NSButtonCellÒ78¥ÕÖ×;XNSButtonׄ™…š›œss  ¡¢€€€' €€(_{{128, 120}, {178, 25}}Þ¦§¨©ª«¬­®¯°±²¾´µޏ¹º»´¹½¾€€)€&#?à€Ò{À}€ׄ™…š›œss ¡Ý!€€€+ €%€,_{{18, 21}, {95, 18}}Ýá⨩ªãäåæ±ç²$%ê'lí)ïðñ$¾€1€.€€-€*H?¨©ª±²@AêCEñF_NSBackgroundColor[NSTextColor€6€;€€5€2€>@ZStop Band:ÕIJKLMNOPQWNSColor[NSColorName\NSColorSpace]NSCatalogName€9€8€7€:VSystem\controlColorÓUKVkQWNSWhiteK0.66666669€:Ò78YI¢I;ÕIJKL[\OPQ€=€<€7€:_controlTextColorÓUKakQB0€:Ò78de¤eÑœ;_NSTextFieldCellÒ78gh¦hiÕÖ×;[NSTextField\%NSTextFieldׄ™…š›œssm ¡Ýp€€€A €%€B_{{139, 12}, {84, 32}}Ýá⨩ªãäåæ±ç²séêv‘³íîïðñ$ó€D€!€€C€@€$€1VCancelQׄ™…š›œss ¡:‚€€€F €?€G_{{17, 98}, {108, 17}}Ø>?¨©ª±²@AꈒEñF€6€;€€H€E€>ZPass Band:ׄ™…š›œss ¡:’€€€J €?€K_{{20, 51}, {60, 22}}Ù>?¨©ª•±²–—ê$“ Ež_NSDrawsBackground€L€O€€1€I €>ÿÿÿÿ”qþA@ÕIJKL ¡OPQ€N€M€7€:_textBackgroundColorÓUK¦kQB1€:ÕIJKL[ªOPQ€=€P€7€:YtextColorׄ™…š›œss± ¡:´€€€R €?€S_{{88, 51}, {60, 22}}Ù>?¨©ª•±²–—ê$” Ež€L€O€€1€Q €>ׄ™…š›œssÁ ¡:Ä€€€U €?€V_{{176, 51}, {60, 22}}Ù>?¨©ª•±²–—ê$• Ež€L€O€€1€T €>ׄ™…š›œssÑ ¡:Ô€€€X €?€Y_{{244, 51}, {60, 22}}Ù>?¨©ª•±²–—ê$– Ež€L€O€€1€W €>Ò78ßà£àá;^NSMutableArrayWNSArray_{{1, 1}, {325, 161}}Ò78äÖ£Ö×;_{{0, 0}, {1440, 938}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò78éê¢ê;_NSWindowTemplate\filterWindowÒ78íî£îï;_NSNibOutletConnector^NSNibConnectorÔXYZò]0€*€d€b€^autoRangeCheckÔXYZŒø]0€€f€b€^passBandSliderÔXYZŽþ]0€&€h€b€^stopBandSliderÔXYZ“]0€I€j€b€[stopBandValÔXYZ” ]0€Q€l€b€]stopBandValPiÔXYZ•]0€T€n€b€[passBandValÔXYZ–]0€W€p€b€]passBandValPiÔXYZ0Ž€€r€s€&_changeStopBand:Ò78!"£"ï;_NSNibControlConnectorÔXYZ0%Œ€€u€s€_changePassBand:ÔXYZ0+“€€w€s€IÔXYZ00•€€y€s€TÔXYZ05€€{€s€YfilterOK:ÔXYZ0;‘€€}€s€@]filterCancel:ÔXYZ0A€€€s€*^dftHPAutoRangeÒ>FT­’“s–”Ž[•‘Œ€€E€2€I€€W€Q€&€*€ €T€@€€Ò78Vá¢á;Ò>XT­ssss[ssss0sss€€€€€ €€€€€€€€€Ò>hT­’0“–”Ž[•‘Œ€€E€€2€I€W€Q€&€*€ €T€@€€Ò>xT­yz{|}~€‚ƒ„…€…€†€‡€ˆ€‰€Š€‹€Œ€€Ž€€€‘€]NSTextField21\File's Owner\NSTextField2^NSTextField111\NSTextField1YNSSlider2YNSButton4UPanel]NSTextField11YNSButton1ZNSSlider21Ò>“T €Ò>–T €Ò>™T¯Ž’–ON“•UQGsJMIK0R”TP[SH‘ŒL€&€E€W€q€o€I€T€~€v€ €€g€m€e€i€*€€x€Q€|€t€ €z€c€@€€2€€k€Ò>¹T¯º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ€–€—€˜€™€š€›€œ€€ž€Ÿ€ €¡€¢€£€¤€¥€¦€§€¨€©€ª€«€¬€­€®€¯€°€±€²€$#,'" (*%)  !Ò>ñV €ZÒ>ôT €Ò>÷T €Ò78úû¢û;^NSIBObjectData#,1:LQVdf×Ý(:Vhs©¶ÉÐÞìú .8?ACEGIKMOQSUWY[]_aclxz|‹”¨­¼ÅØáìíïøÿ <>@BDFHJLNPRTVXZ\m{ƒŒŽ’”ÅÙëõ+5BLXZ\^`bdfhjoqsŽœ¤­·¼¾ÇÎàéú!#%'0GIKMOQSUWY[]_|ˆ’›¢¤¦¨©¬®°É%/:H^{†Ž™¤°½¿ÈÊÌÎÐÑÚÜÝâäíîð!#-6;BKTanw‚‹•œ¨ÅÇÉËÌÎÐè  / B Q f t † œ ž   ¢ ¤ ¦ ¨ ± ³ µ º ¼ Á È Ù Þ à â å ò        & 1 > L U ` i † ˆ Š Œ ‘ « ä æ è ê ë ô ö ÷   ! # % & ( * A v x z | ~ € … ‡ ‰ ” © « ­ ¶ ¿ Ä Ú ÷ ù û ý þ   < P \ ^ ` b d f h m x • ¡ ® ¼ ¾ À Â Ä Æ Í Ú ç ï û ý  " $ & ( ; H K M V _ q z ‡ “   ½ ¿ Á Ã Ä Æ È à!#*,IKMOPRTl‘“•—™¤ÁÃÅÇÈÊÌã "$&')27LNPRTjwz|‘“•—™£ÀÂÄÆÇÉËâ   13578:<Ty{}ƒ„†£¥§©ª¬®Æëíïñóõöø6?F^i†”§´½ÄÛêûýÿ#%')+:KMOQSbsuwy{‡˜šœž ®¿ÁÃÅÇÓäæèêìú  %.5M^`bdfx‰‹‘¢¤¦¨ª»½¿ÁÃÍÞàâäæô   %@BDFHJLNPRTVXZ\ejsŽ’”–˜šœž ¢¤¦¨ª³ÎÐÒÔÖØÚÜÞàâäæèêó "$&(*8ERanx‚ˆ– «´µ·ÀÁÃÌ   !#%')+-/13579;=?ACEN‹‘“•—™›Ÿ¡£¥§©«­¯±³µ·¹»½¿ÁÃÅÇÉËÍÏÑÓÕ×ÙÛÝßáãåçéëíïñóõ÷  $)ü8PRICE-1.3.0/English.lproj/DFTHighPass.nib/objects.nib010064400017500000012000000052121134276076100213340ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+PRCDFTHighPass†…†„i –„„„NSButton„„ NSControl)„„NSView)„„ NSResponder”’„œ’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™ ’„„„NSSlider›’ž™‚€ž…………€X²²’ž’…’…’…„icc@„„„ NSSliderCellâ„„ NSActionCell„„NSCellA”„ii‚ÿ„@@@@„„„NSMutableString˜˜†„„„NSFont”™„[28c]þÿHelvetica„f „c¬¬¬†……„i:…’…’¢„ddddiii††’™’„£’ž™‚€ž…………€x²²’ž’…’…’…¢„¥¦‚ÿ§„©˜†ª……­…’…’¬®ƒ?à††’„š’ž™‚€ž…………__’ž’…’…’…¢„„„ NSButtonCell?¦¦‚þ§„˜˜ Auto Range†„«™$„[36c]þÿLucidaGrande« ¬¬¬¬†……­…’…’¯„ ssii@@@@@È‚H¦¦‚þ‚@§„˜˜ Stop Band:†³……­…’…’¸„c@@„„„NSColor”¬„@@@„˜˜System†„˜˜ controlColor†„¾¬„ffƒ?*ª«††„¾¬·¿„˜˜controlTextColor†„¾¬¸†††’…„:…†’„š’ž™‚€ž…………‹ T T ’ž’…’…’…¢„±¦‚þ‚8§„˜˜Cancel†³……­…’…’űÈ‚†‚@ÿ´„˜˜†…„«™ªþÿHelvetica« ¬¬¬¬†…††’„¹’ž™‚€ž…………bll’ž’…’…’…¢„»¦‚þ‚@§„˜˜ Pass Band:†³……­…’…’ʵ½Â†’…¹…†’„¹’ž™‚€ž…………3<<’ž’…’…’…¢„»¦‚”qþA‚@§´³……­…’…’͵„¾¬·¿„˜˜textBackgroundColor†„¾¬¸††„¾¬·¿„˜˜ textColor†Ä††’…¹…†’„¹’ž™‚€ž…………X3<<’ž’…’…’…¢„»¦‚”qþA‚@§´³……­…’…’ÔµÏÒ†’…¹…†’„¹’ž™‚€ž…………°3<<’ž’…’…’…¢„»¦‚”qþA‚@§´³……­…’…’ÖµÏÒ†’…¹…†’„¹’ž™‚€ž…………ô3<<’ž’…’…’…¢„»¦‚”qþA‚@§´³……­…’…’صÏÒ†’…¹…††………E¡E¡’…’…’…’…†™‚€ž…………â T T ’ž’…’…’…¢„±¦‚þ‚8§„˜˜Filter†³……­…’…’™±È‚†‚@ÿ„©˜†„©˜†…É…††ž–Êž–¸ž–Íž–ž„„„NSWindowTemplateø”„ iiffffi@@@@@cª‹E¡‚px„˜˜ DFT High Pass†„˜˜NSPanel†„©˜View†ž…„ffff ª¬¸Õ’…¬¸ƒÿîƒÿ؞–Ôž–¬ž–¯ž–Þ•–Öž–Åž–¢ž™ –™„˜˜NSButton†–Ê„˜˜ NSTextField21†–•„˜˜ File's Owner†–¸„˜˜ NSTextField2†–Í„˜˜ NSTextField†–Ø„˜˜NSTextField111†–Ô„˜˜ NSTextField1†–¬„˜˜ NSSlider2†–¯„˜˜ NSButton4†–Þ„˜˜Panel†–Ö„˜˜ NSTextField11†–Å„˜˜ NSButton1†–¢„˜˜ NSSlider21†’„„„ NSMutableSet„„NSSet”„I†’„ ™’„„„NSNibOutletConnectorÏ„„NSNibConnector”·•Þ„˜˜ filterWindow††’„õ·•¯„˜˜autoRangeCheck††’„õ·•¢„˜˜passBandSlider††’„õ·•¬„˜˜stopBandSlider††’„õ·•Í„˜˜ stopBandVal††’„õ·•Ô„˜˜ stopBandValPi††’„õ·•Ö„˜˜ passBandVal††’„õ·•Ø„˜˜ passBandValPi††’„„„NSNibControlConnectorÏö·¬•„˜˜changeStopBand:††’„·¢•„˜˜changePassBand:††’„·Í•„˜˜changeStopBand:††’„·Ö•„˜˜changePassBand:††’„·™•„˜˜ filterOK:††’„·Å•„˜˜ filterCancel:††’„·¯•„˜˜dftHPAutoRange†††’…™„@i¬ÃÊÃØÃ$Ã#ÃÍÃÖÃ,à 'ÃôÞÃüÃ"ÃúÃþ ïÕà (ÃÔÃ*à %ÃÞÃ)ÃøÃÅâ øÙ Ã!™-™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/DFTLowPass.nib004075500017500000012000000000001245331715400170155ustar00multixusersPRICE-1.3.0/English.lproj/DFTLowPass.nib/classes.nib010064400017500000012000000020561134276076100212250ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { changePassBand = id; changeStopBand = id; dftLPAutoRange = id; showDFTLP = id; }; CLASS = PRCDFTLowPass; LANGUAGE = ObjC; OUTLETS = { autoRangeCheck = NSButton; filterWindow = NSWindow; passBandSlider = NSSlider; passBandVal = NSTextField; passBandValPi = NSTextField; stopBandSlider = NSSlider; stopBandVal = NSTextField; stopBandValPi = NSTextField; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/DFTLowPass.nib/info.nib010064400017500000012000000007611134276076100205240ustar00multixusers IBDocumentLocation 67 215 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/DFTLowPass.nib/keyedobjects.nib010064400017500000012000000167141134276106000222420ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯½ 156<=AEYayz{|€„Œš¦§ÀÃËÌÏÓÙàáêìóô $%-Á./67@AEFIPQ[\fghlnstwz~…†‘–—šŸ §¨°·¸ÀÇÈÏÐרàäåçèéêíîò÷øû  $%*+016;@EJKPQacsƒ“”|•–—˜™š›œž¡¤ÆèéêºëìâíîïðñòóÊôõcö÷øùúûüýþÿ U$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€†€¹€—€˜€‡€–€»€™€€¼€€ˆ€„€º€€)€Ò234[NSClassName€€]PRCDFTLowPassÒ789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FX¯GHIJKLMNOPQRSTUVW€ €c€f€h€j€l€n€p€r€t€v€x€z€|€~€€€‚€ZÔZ[\]^_0]NSDestinationWNSLabelXNSSource€ €a€b€Übcdefghijklmnopqrstuvwx_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€^€ € € €]€_€px€`€_{{250, 469}, {324, 158}}\DFT Low PassWNSPanelÒ}~YNS.stringTView€Ò78‚£‚ƒ;_NSMutableStringXNSStringÔ…†‡ˆ.Š‹ZNSSubviews_NSNextResponderWNSFrame€€€[€\Ò>X«Ž‘’“”•–—˜€€€€*€0€7€E€M€P€S€W€Z׆›‡œžuu¡¢£¤¥[NSSuperviewYNSEnabledXNSvFlagsVNSCell€€€ €€_{{124, 119}, {182, 25}}Þ¨©ª«¬­®¯°±²³´µ¶·¸Žº»¼¶½¶»¿µ_NSTickMarkPosition]NSAltIncValueYNSSupportZNSContents]NSControlView_NSNumberOfTickMarks_NSAllowsTickMarkValuesOnlyZNSMaxValueWNSValueZNSMinValueZNSVertical[NSCellFlags\NSCellFlags2#€€€#?ð€ÿÒ}ÁP€ÔÄÅÆÇÈÉÊVNSSizeVNSNameXNSfFlags"A@€€YHelveticaÒ78Í΢Î;VNSFontÒ78ÐѤÑÒž;\NSSliderCell\NSActionCellÒ78ÔÕ¥ÕÖר;XNSSliderYNSControlVNSView[NSResponder׆›‡œžuuÜ¢£¤ß€€€ €€_{{124, 86}, {182, 26}}Þ¨©ª«¬­®¯°±²³´â¶·äº»¼ç½¶»¿µ€€€#?à€Ò}Á€׆›‡œžuuñò€€€ €)€!_{{226, 12}, {84, 32}}Ýõöª«¬÷øùú³û´üýþÿâ_NSKeyEquivalent_NSAlternateImage^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay_NSAlternateContents€'€%€#€"€ÿÿÿÿ†‚@ÿ€(Èþ€&8VFilterÔÄÅÆ  É "AP€$€\LucidaGrandeÔÄÅÆ ÈÉÊ€€Ò}Á€Ò}Á€Ò78¥Òž;\NSButtonCell]%NSButtonCellÒ78¥Öר;XNSButton׆›‡œžuu ¢£ñ#€€€+ €)€,_{{142, 12}, {84, 32}}Ýõöª«¬÷øùú³û´&ýþ)‘â,€/€%€#€-€*€(€.VCancelQ׆›‡œžuu2¢£ñ5€€€1 €)€2_{{18, 21}, {95, 18}}Ýõöª«¬÷øùú³û´,9þ;’n=,µ€.€4€#€3€0H€=€<€?VSystem\controlColorÓi_jmeWNSWhiteK0.66666669€?Ò78m]¢];Õ]^_`opcde€B€A€<€?_controlTextColorÓi_umeB0€?Ò78xy¤yÒž;_NSTextFieldCellÒ78{|¦|}Öר;[NSTextField\%NSTextField׆›‡œžuu¢£N„€€€F €D€G_{{20, 51}, {60, 22}}ÙRSª«¬‡³´ˆ‰þ,”¢Y_NSDrawsBackground€H€K€#€.€E €Cÿÿÿÿ”qþA@Õ]^_`’“cde€J€I€<€?_textBackgroundColorÓi_˜meB1€?Õ]^_`oœcde€B€L€<€?YtextColor׆›‡œžuu£¢£N¦€€€N €D€O_{{88, 51}, {60, 22}}ÙRSª«¬‡³´ˆ‰þ,•¢Y€H€K€#€.€M €C׆›‡œžuu³¢£N¶€€€Q €D€R_{{176, 51}, {60, 22}}ÙRSª«¬‡³´ˆ‰þ,–¢Y€H€K€#€.€P €C׆›‡œžuuâ£NÆ€€€T €D€U_{{17, 99}, {87, 17}}ØRSª«¬³´TUþÌ—YZ€;€@€#€V€S€CZBand stop:׆›‡œžuuÓ¢£NÖ€€€X €D€Y_{{244, 51}, {60, 22}}ÙRSª«¬‡³´ˆ‰þ,˜¢Y€H€K€#€.€W €CÒ78áâ£âã;^NSMutableArrayWNSArray_{{1, 9}, {324, 158}}Ò78æ×£×Ø;_{{0, 0}, {1440, 938}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò78ëì¢ì;_NSWindowTemplate\filterWindowÒ78ïð£ðñ;_NSNibOutletConnector^NSNibConnectorÔZ[\0ôõ’€€d€e€0_dftLPAutoRange:Ò78ùú£úñ;_NSNibControlConnectorÔZ[\’ý_0€0€g€b€^autoRangeCheckÔZ[\Ž_0€€i€b€^passBandSliderÔZ[\ _0€€k€b€^stopBandSliderÔZ[\0õŽ€€m€e€_changePassBand:ÔZ[\0õ€€o€e€_changeStopBand:ÔZ[\”_0€E€q€b€[passBandValÔZ[\•!_0€M€s€b€]passBandValPiÔZ[\–'_0€P€u€b€[stopBandValÔZ[\˜-_0€W€w€b€]stopBandValPiÔZ[\03õ”€€y€e€EÔZ[\08õ•€€{€e€MÔZ[\0=õ–€€}€e€PÔZ[\0Bõ˜€€€e€WÔZ[\0Gõ€€€e€XfilterOKÔZ[\0Mõ‘€€ƒ€e€*\filterCancelÒ>R`­u•“”—˜’Ž–]‘€€M€7€E€S€W€0€€€€P€ €*€…Ò78bã¢ã;Ò>d`­]uuuuuuuuuu0u€ €€€€€€€€€€€€€…Ò>t`­•“”—˜’0Ž–]‘€M€7€E€S€W€0€€€€€P€ €*€…Ò>„`­…†‡ˆ‰Š‹ŒŽ‘€‰€Š€‹€Œ€€Ž€€€‘€’€“€”€•€…\NSTextField1\NSTextField2]NSTextField21^NSTextField111YNSButton4\File's OwnerYNSSlider2ZNSSlider21]NSTextField11VWindowYNSButton1Ò>Ÿ` €…Ò>¢` €…Ò>¥`¯MT]IP0LSG–VHO”ŽKuR‘“NU˜—J’QW•€€n€|€ €f€t€€l€z€ €P€€€c€r€E€€j€€x€€*€7€p€~€W€S€h€0€v€‚€M€…Ò>Ç`¯ÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäå怚€›€œ€€ž€Ÿ€ €¡€¢€£€¤€¥€¦€§€¨€©€ª€«€¬€­€®€¯€°€±€²€³€´€µ€¶€·€¸€…%!$ ' #  &"(Ò>X €ZÒ>` €…Ò> ` €…Ò78  ¢ ;^NSIBObjectData#,1:LQVdfãé4Fbt‹™µÂÕÜêø ,:DKMOQSUWY[]_acegikmox„†ˆ–Ÿ¨³¸ÇÐãì÷øú &KMOQSUWY[]_acegikmo€Ž–Ÿ¡£¥§Øìþ$1>HU_kmoqsuwy{}‚„†¡®¶¿ÉÎÐÙàòû )13579BY[]_acegikmoqŽš¤­´¶¸º»¾ÀÂÜ*8BM[qŽ™¡¬·ÃÐÒÛÝßáãäíïðõþÿ ).024>GLS\erˆ“œ¦­¹ÖØÚÜÝßáú 3 5 7 9 ; < E G H Q S p r t v w y { “ È Ú í ü   1 G I K M O Q S \ ^ ` e g l s „ ‰ ‹ ® ° ² » ½ Æ È Ñ Ü é ÷  1 3 5 7 8 : < T ‰ ‹ ‘ “ • — ž   ½ ¿ Á Ã Ä Æ È ß       # % ' 2 ; G I K T ] b x • — ™ › œ ž   ¸ Ù í ù û ý ÿ     * 2 > K Y [ ] _ a c j w „ Œ ˜ š £ ¨ ½ ¿ Á Ã Å Ø å è ê ó ü$0=Z\^`ace|¡µ·¹»½¿ÀÂËÐåçéëí*,.02<Y[]_`bd{ ¢¤¦¨ª«­ÊÌÎÐÑÓÕí<>@BCEG^ƒ…‡‰‹–³µ·¹º¼¾Öûýÿ'/FOVny–Ÿ¤·ÄÍÔëú  %.5M^`bdfu†ˆŠŒŽ®°²´¶ÅÖØÚÜÞð ,.024@QSUWYgxz|~€ŒŸ¡£¥³ÄÆÈÊÌÝßáãåöøúüþ(*,.09JLNPR_hƒ…‡‰‹‘“•—™›Ÿ¨­¶ÑÓÕ×ÙÛÝßáãåçéëíö!#%')+-6QSUWY[]_acegikmz‡•¤®»ÅÐÞåïøùûQSUWY[]_acegikmoqsuwy{}ƒ…‡‰‹‘šÛÝßáãåçéëíïñóõ÷ùûýÿ   !#%')+-/13579;=?ACEGIKMOXY[degpqs|PRICE-1.3.0/English.lproj/DFTLowPass.nib/objects.nib010064400017500000012000000053001134276076100212140ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCDFTLowPass†…†„i –„„„NSView)„„ NSResponder”’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™ ’„„„NSSlider„„ NSControl)š’™™‚€œ…………|w¶¶’™’…’…’…„icc@„„„ NSSliderCellâ„„ NSActionCell„„NSCellA”„ii‚ÿ„@@@@„„„NSMutableString˜˜†„„„NSFont”™„[28c]þÿHelvetica„f „c«««†……„i:…’…’Ÿ„ddddiii††’„ ’™™‚€œ…………|V¶¶’™’…’…’…¡„£¥‚ÿ¦„§˜†¨……¬…’…’ª­ƒ?à††’„„„NSButton¡’™™‚€œ…………â T T ’™’…’…’…¡„„„ NSButtonCell?¤¥‚þ‚8¦„˜˜Filter†„©™$„[36c]þÿLucidaGrandeª ««««†……¬…’…’­„ ssii@@@@@È‚†‚@ÿ„§˜†„§˜†…„©™©þÿHelveticaª ««««†…††’„®’™™‚€œ…………Ž T T ’™’…’…’…¡„°¥‚þ‚8¦„˜˜Cancel†²……¬…’…’¶±È‚†‚@ÿ„˜˜†„˜˜†…µ…††’„®’™™‚€œ…………__’™’…’…’…¡„°¥‚þ¦„˜˜ Auto Range†²……¬…’…’»±È‚H¤¥‚þ‚@¦„˜˜ Band pass:†²……¬…’…’Á„c@@„„„NSColor”«„@@@„˜˜System†„˜˜ controlColor†„Ç«„ffƒ?*ª«††„Ç«·È„˜˜controlTextColor†„Ç«¸†††’…„:…†’„Â’™™‚€œ…………3<<’™’…’…’…¡„Ä¥‚”qþA‚@¦¹²……¬…’…’ε„Ç«·È„˜˜textBackgroundColor†„Ç«¸††„Ç«·È„˜˜ textColor†Í††’…¹…†’„Â’™™‚€œ…………X3<<’™’…’…’…¡„Ä¥‚”qþA‚@¦¹²……¬…’…’ÕµÐÓ†’…¹…†’„Â’™™‚€œ…………°3<<’™’…’…’…¡„Ä¥‚”qþA‚@¦¹²……¬…’…’×µÐÓ†’…¹…†’„Â’™™‚€œ…………cWW’™’…’…’…¡„Ä¥‚þ‚@¦„˜˜ Band stop:†²……¬…’…’ÙµÆË†’…¹…†’„Â’™™‚€œ…………ô3<<’™’…’…’…¡„Ä¥‚”qþA‚@¦¹²……¬…’…’ܵÐÓ†’…¹…††……… DžDž’…’…’…’…†„„„NSWindowTemplateø”„ iiffffi@@@@@cúÕDž‚px„˜˜ DFT Low Pass†„˜˜NSPanel†„§˜View†™…„ffff ª«¸Õ’…«¸ƒÿîƒÿՙ–Á™–Ι–Ù™–Ü™–»™–­™–Ÿ™–ª™–×™–Þ•–¶™™ –Õ„˜˜ NSTextField1†–Á„˜˜ NSTextField2†–΄˜˜ NSTextField†–Ù„˜˜ NSTextField21†–Ü„˜˜NSTextField111†–»„˜˜ NSButton4†–•„˜˜ File's Owner†–­„˜˜NSButton†–Ÿ„˜˜ NSSlider2†–ª„˜˜ NSSlider21†–ׄ˜˜ NSTextField11†–Þ„˜˜Window†–¶„˜˜ NSButton1†’„„„ NSMutableSet„„NSSet”„I†’„™’„„„NSNibOutletConnectorÏ„„NSNibConnector”·•Þ„˜˜ filterWindow††’„„„NSNibControlConnectorÏö·»•„˜˜dftLPAutoRange:††’„õ·•»„˜˜autoRangeCheck††’„õ·•Ÿ„˜˜passBandSlider††’„õ·•ª„˜˜stopBandSlider††’„ù·Ÿ•„˜˜changePassBand:††’„ù·ª•„˜˜changeStopBand:††’„õ·•΄˜˜ passBandVal††’„õ·•Õ„˜˜ passBandValPi††’„õ·•ׄ˜˜ stopBandVal††’„õ·•Ü„˜˜ stopBandValPi††’„ù·Î•„˜˜changePassBand:††’„ù·Õ•„˜˜changePassBand:††’„ù·×•„˜˜changeStopBand:††’„ù·Ü•„˜˜changeStopBand:††’„ù·­•„˜˜filterOK††’„ù·¶•„˜˜ filterCancel†††’…™„@iªÃÃ%ÃÞÃûà !ÕÃÃ$Ãô Ã×Ã'ÃøÃ ÃÎßÃÿÙà #í ö ÃÁÃÃ&ÃÜÃÙÃýûà "Ã(ÃÕ™)™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/Equalize.nib004075500017500000012000000000001245331715400166465ustar00multixusersPRICE-1.3.0/English.lproj/Equalize.nib/classes.nib010064400017500000012000000011521134203022700210350ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {showEqualize = id; }; CLASS = PRCEqualize; LANGUAGE = ObjC; OUTLETS = {colorSpaceChoice = NSPopUpButton; equalWindow = NSWindow; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/Equalize.nib/info.nib010064400017500000012000000007021134203022700203330ustar00multixusers IBDocumentLocation 37 101 356 240 0 0 800 578 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 PRICE-1.3.0/English.lproj/Equalize.nib/keyedobjects.nib010064400017500000012000000117221134203022700220570ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯ +/067;?GNfghimqx~†‡g ¨©¬¯°±²·½ÀÁÄÅÆÊËÞßàáò÷øýþÿ  #$,-789<>ABDGKLNOPQTUY[\_`cefhilnpr}~€Í¹‚ƒ„…‡˜™4™š›œžŸ ¡¢£§¤U$nullß  !"#$%&'()*[NSNamesKeys[NSFramework_NSObjectsValues]NSNamesValues]NSConnections]NSFontManagerVNSRootYNSNextOid_NSVisibleWindows]NSObjectsKeys]NSClassesKeysZNSOidsKeys\NSOidsValuesV$class_NSClassesValues€`€€_€a€€€€€]€k€m€n€~€lÒ,-.[NSClassName€€[PRCEqualizeÒ1234X$classesZ$classname¢45^NSCustomObjectXNSObject_IBCocoaFrameworkÒ89:ZNS.objects €Ò12<=£=>5\NSMutableSetUNSSetÒ8@F¥ABCDE€ €T€V€Y€[€:ÔHIJKLM"]NSDestinationWNSLabelXNSSource€ €R€SÜOPQRSTUVWXYZ[\]^_`abcde_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€O€ € € €N€P€px€Q€_{{105, 449}, {228, 107}}XEqualizeWNSPanelÒjklYNS.stringTView€Ò12no£op5_NSMutableStringXNSStringÔrstu!vwZNSSubviews_NSNextResponderWNSFrame€€L€MÒ8yF¤z{|}€€€$€>Öst€bb‚ƒ„…[NSSuperviewYNSEnabledVNSCell€ €€_{{121, 12}, {93, 32}}݈‰Š‹ŒŽ‘’“”•–—˜z™š›œžŸ_NSPeriodicInterval_NSAlternateImage_NSAlternateContentsYNSSupportZNSContents]NSControlView^NSButtonFlags2]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSKeyEquivalent\NSCellFlags2€€€€ÿÿÿÿ†‚@ÿ€Èþ€8Ô¡¢£¤¥¦§VNSSizeVNSNameXNSfFlags"AP€€\LucidaGrandeÒ12ª«¢«5VNSFontÔ¡¢£¤­¦®€YHelveticaPQ Ò12³´¥´µ¶5\NSButtonCell]%NSButtonCell\NSActionCellÒ12¸¹¥¹º»¼5XNSButtonYNSControlVNSView[NSResponderÖst€bb¾ƒ„¿€ €!_{{37, 12}, {84, 32}}݈‰Š‹ŒŽ‘’“”•–—Â{™š›œÃŸ€"€#VCancelQÖst€bbǃÈÉ€%€=€&_{{101, 64}, {110, 26}}߉‘ŽÌ͊ΈÏ“Ð’‹ÑÒÓÔ™ÕÖר™ÙZÚÛ܃|Ý—ƒ™VNSMenuZNSMenuItem_NSSelectedIndex_NSPreferredEdge]NSAltersState_NSUsesItemFromMenu_NSArrowPosition€'ÿÿÿÿ„Aþ‚@ÿ€+€*€(K€<€)Ô¡¢£¤¥¦®Òj°lÒj°lÛÌâãäåæçèéêÖë™ìí–Éîïðñ]NSMnemonicLocWNSStateWNSTitleYNSOnImageZNSKeyEquivXNSTarget\NSMixedImage_NSKeyEquivModMaskXNSActionÿÿÿ€,€-€1€4€3Óäóôõö[NSMenuItems€5€;€6YYCbCr (Y)Óù,úûü^NSResourceName€/€0€.WNSImage_NSMenuCheckmarkÒ12£5_NSCustomResource_%NSCustomResourceÓù,ûü€2_NSMenuMixedState__popUpItemAction:Ò12Í¢Í5Òj lZOtherViewsÒ8 F¢ ×€7ÚÌâäåæçèéêÖëí–Éîïð€8€9SRGBÒ12£5^NSMutableArrayWNSArrayÒ12Ì¢Ì5Ò12§´µ¶5_NSPopUpButtonCell^NSMenuItemCellÒ12¦¹º»¼5]NSPopUpButtonÖst€bb ƒ!"€?€K€@_{{17, 70}, {94, 17}}Ø%‹Œ‘&“'—(})*+[NSTextColor_NSBackgroundColor€G€A€J€B@[Colorspace:Õ./0123456WNSColor[NSColorName\NSColorSpace]NSCatalogName€E€D€C€FVSystem\controlColorÓ:0;Z6WNSWhiteK0.66666669Ò12=.¢.5Õ./01?@456€I€H_controlTextColorÓ:0CZ6B0Ò12EF¤F¶5_NSTextFieldCellÒ12HI¦IJº»¼5[NSTextField\%NSTextField_{{1, 1}, {228, 107}}Ò12M»£»¼5_{{0, 0}, {800, 578}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò12RS¢S5_NSWindowTemplate[equalWindowÒ12VW£WX5_NSNibOutletConnector^NSNibConnectorÔHIJ|ZM"€U_colorSpaceChoiceÔHIJ"]^z€W€XXfilterOKÒ12ab£bX5_NSNibControlConnectorÔHIJ"d^{€Z\filterCancelÔHIJ"g^|€\_parametersChangedÒ8jk©Ö×|{ }bzK€^Ò12m¢5Ò8ok©|ÖbbÖbKb"Ò8qk©Ö×|{" }zKÒ8sk©tuvwxyz{|€b€c€d€e€f€g€h€i€jYPopUpList[NSMenuItem1YNSButton1\File's Owner\NSTextField2UPanelÒ89kÒ89kÒ8†k¯E"bÖA{BzC K}|×DÒ8ˆk¯‰Š‹ŒŽ‘’“”•–—€o€p€q€r€s€t€u€v€w€x€y€z€{€|€}   Ò12¥¦¢¦5^NSIBObjectData#,1:LQVdfgm¬¸ÄÖäò$2@KX_qsuwy{}ƒ…‡‰‹˜¤¦¨´½ÆÑÖåî !(5;DOQSUWY[lz‚‹‘ÂÖèò(2?IUWY[]_aceglnp‹”œ¥¯´¶¿ÆØáòý&/1357P\fmoprtŒÁÖéÿ "1?Q]o|~€‚„†ˆ‘“•šœ¡²¹ÀÉÎÐÒÔáêïö  !,9GT]hq{‚ާ©«Â÷ùû!#<‹’¯ÁÏäöø         + 4 = j x € ˆ ’ ¦ ³ Ç Ð Õ × Ù Û Ý â ä ñ ý ÿ    ) + - / 7 I R Y l € ¢ ¶ ¿ Ä Í Ø á æ è     " ) 8 @ I N W f z ‰ ’ Ÿ ­ Æ È Ê Ì ã   $ & ( * , 1 = R Z f s ƒ … ‡ ‰ ‹ ’ Ÿ ¬ ´ À É Î ã å ç ú    . 7 D P ] t } „ › ¦ Ã Ì Ñ ä ð ù&79L]_ajsz’£¥²ÃÅÙâõ÷!*=FY[]_acegiku‹˜¥«´½Æçð!#%')+-/13579;=?ACEGPU§dPRICE-1.3.0/English.lproj/Equalize.nib/objects.nib010064400017500000012000000036261134203022700210410ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCEqualize†…†„i –„„„NSMenuÌ”„i@@@„„„NSMutableString˜˜ OtherViews†„„„NSMutableArray„„NSArray”™’„„„ NSMenuItemŸ”’™„ i@@IIi@@@@:i@„˜˜RGB†„˜˜†‚‚ÿÿÿ…„„„NSCustomResource)”–„˜˜NSImage†„˜˜NSMenuCheckmark††…„¥–¦„˜˜NSMenuMixedState††„_popUpItemAction:…’„„„NSPopUpButtonCell1„„NSMenuItemCellÒ„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚„Aþ‚„@@@@…„„„NSFont”™$„[36c]þÿLucidaGrande„f „c­­­†……„i:…’…’„„„ NSPopUpButtonÌ„„NSButton„„ NSControl)„„NSView)„„ NSResponder”’„¶’…™„ @@@@ffffffff„ž™’„´’¸™´…………y ] ] ’¸’…’…’…„icc@„­¨‚þ‚8©„˜˜Equalize†°……®…’…’º„ ssii@@@@@È‚†‚@ÿ£„˜˜ †…„±™„[28c]þÿHelvetica¬ ­­­­†…††’„´’¸™´…………% T T ’¸’…’…’…µ„­¨‚þ‚8©„˜˜Cancel†°……®…’…’¿¶È‚†‚@ÿ£„˜˜†…¾…††’²’„„„ NSTextFieldµ’¸™´…………F^^’¸’…’…’…µ„„„NSTextFieldCell>®¨‚þ‚@©„˜˜ Colorspace:†°……®…’…’Äc@@„„„NSColor”­„@@@„˜˜System†„˜˜ controlColor†„É­„ffƒ?*ª«††„É­¼Ê„˜˜controlTextColor†„É­½†††’…„:…††………äkäk’…’…’…’…†™´…………e@nn’¸’…’…’…µª†¶K‚‚@ÿ„œ˜†„œ˜†…„±™$«þÿLucidaGrande¬ ­­­­†…–„¡’™ „˜˜ YCbCr (Y)†£‚‚ÿÿÿ…¤…¨¢…’ª’…†…„i@i‚=™†’…†’Ó†…†²–Ó™–²¸–¿¸– ™–ø–¸„„„NSWindowTemplateø”„ iiffffi@@@@@ciÁäk‚px„˜˜Equalize†„˜˜NSPanel†„œ˜View†¸…„ffff B­½Õ’…­½ƒÿîƒÿº¸–Õ•™ –™„˜˜ PopUpList†–Ó„˜˜ NSMenuItem1†–²„˜˜ NSPopUpButton†–¿„˜˜ NSButton1†–•„˜˜ File's Owner†– „˜˜ NSMenuItem†–Ę˜ NSTextField2†–º„˜˜NSButton†–Õ„˜˜Panel†’„„„ NSMutableSet„„NSSet”„I†’„ž™’„„„NSNibOutletConnectorÏ„„NSNibConnector”¼•Õ„˜˜ equalWindow††’„輕²„˜˜colorSpaceChoice††’„„„NSNibControlConnectorÏ鼺•„˜˜filterOK††’„•„˜˜ filterCancel††’„î¼²•„˜˜parametersChanged†††’…™„@iòÉ•ɸÉ™Éç É¿ÉëɺÉíÉ  ÉÕÉÃɲÉÓ Éð™™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/Grayscale.nib004075500017500000012000000000001245331715400170015ustar00multixusersPRICE-1.3.0/English.lproj/Grayscale.nib/classes.nib010064400017500000012000000011471134127315400212030ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {showGrayscale = id; }; CLASS = PRCGrayscale; LANGUAGE = ObjC; OUTLETS = {grayWindow = NSWindow; methodChoice = NSPopUpButton; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/Grayscale.nib/info.nib010064400017500000012000000007601134127126400205010ustar00multixusers IBDocumentLocation 69 81 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/Grayscale.nib/keyedobjects.nib010064400017500000012000000132131134127315400222160ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯ƒ 156<=AEMUcijŽ–—šž¢¦¨¼Á ÂÇÈÉÍÑÒÓÕØÝæÒçëíôûü")01?@CDEGIPQYZ\^efpq{|}ƒˆ‰Œ“”–—˜™œ¢£¦«¬±²¾ÀÌØpäåæç÷öèéêíðx !$'*U$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€`€€m€n€a€l€€o€€‚€€b€^€€€€€Ò234[NSClassName€€\PRCGrayscaleÒ789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FL¥GHIJK€ €,€W€Z€\€&ÔNOPQRS0]NSDestinationWNSLabelXNSSource€ €*€+€×VWXYZ[\\^_`ab_NSNextResponder[NSSuperviewWNSFrameYNSEnabledXNSvFlagsVNSCell€ € € €)€ ÔdVXe.ghZNSSubviews€2€€P€Q_{{111, 65}, {128, 26}}ßklmnopqrstuvwxyz{|}~€‚ƒ„…†‡_QŠ‹__NSAlternateImage[NSCellFlags^NSButtonFlags2]NSButtonFlagsVNSMenuZNSMenuItem_NSSelectedIndex_NSAlternateContents_NSPreferredEdge_NSPeriodicDelay\NSCellFlags2]NSAltersState]NSControlView_NSKeyEquivalentYNSSupport_NSUsesItemFromMenu_NSPeriodicInterval_NSArrowPosition€ÿÿÿÿ„Aþ@‚@ÿ€€€€( € €€ KÔ‘’“”•VNSSizeVNSNameXNSfFlags"AP€€\LucidaGrandeÒ78˜™¢™;VNSFontÔ‘’“”€€ÒŸ ¡YNS.stringP€Ò78£¤£¤¥;_NSMutableStringXNSStringÒŸ ¡€Ûo©ª«¬­®¯°±³´µ¶·b¹º»]NSMnemonicLoc_NSKeyEquivModMaskWNSStateWNSTitleYNSOnImageZNSKeyEquivXNSTarget\NSMixedImageXNSAction€ÿÿÿ€€€€ €€ €Ó¬½¾¿À[NSMenuItems€!€'€"YLuminanceÓÃ2ÄÅÆ^NSResourceName€€€WNSImage_NSMenuCheckmarkÒ78ÊË£ËÌ;_NSCustomResource_%NSCustomResourceÓÃ2ÎÅÆ€€€_NSMenuMixedState__popUpItemAction:Ò78Ôp¢p;ÒŸÖ¡ZOtherViews€Ò>ÙL¢Ú‚€#€€&Úo©ª¬­®¯°±³´ß¶·b¹ºå€€$€€€ €€ €%WAverageÒ78èé£éê;^NSMutableArrayWNSArrayÒ78ìo¢o;Ò78îï§ïðñòó[;_NSPopUpButtonCell^NSMenuItemCell\NSButtonCell]%NSButtonCell\NSActionCellÒ78õö¦ö÷øùú;]NSPopUpButtonXNSButtonYNSControlVNSView[NSResponder\methodChoiceÒ78ýþ£þÿ;_NSNibOutletConnector^NSNibConnectorÔNOPS0€-€V€+€Ü     „\_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€S€/€0€.€R€T€ px€U€1_{{353, 448}, {259, 108}}_Convert to GrayscaleWNSPanelÒŸ ¡TView€Ò>#L¤$%&Q€3€<€B€ €&×VWXYZ[\\,_`./€ € €4 €;€5_{{155, 12}, {90, 32}}Ýxky2wm{ntlru34‹6$89:;<·>ZNSContents€9€7€€6€3ÿÿÿÿ†‚@ÿ€:Èþ€8WConvertÔ‘’A”€8€YHelveticaQ Ò78Fñ¥ñòó[;Ò78H÷¥÷øùú;×VWXYZ[\\L_`.O€ € €= €;€>_{{71, 12}, {84, 32}}Ýxky2wm{ntlruR4‹U%89:;<X>€A€7€€?€<€:€@VCancelÒŸ ¡€ÒŸ ¡€×VWXYZ[\\a_`cd€ € €C €O€D_{{17, 71}, {92, 17}}Øghy2wluij‹l&n<o_NSBackgroundColor[NSTextColor€F€K€€E€B€N@WMethod:ÕrstuvwxyzWNSColor[NSColorName\NSColorSpace]NSCatalogName€I€H€G€JVSystem\controlColorÓ~t„zWNSWhiteK0.66666669€JÒ78‚r¢r;Õrstu„…xyz€M€L€G€J_controlTextColorÓ~tŠ„zB0€JÒ78ޤŽó[;_NSTextFieldCellÒ78‘¦‘’øùú;[NSTextField\%NSTextField_{{1, 1}, {259, 108}}Ò78•ù£ùú;_{{0, 0}, {1440, 938}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò78𛢛;_NSWindowTemplateZgrayWindowÔNOP0Ÿ $€€X€Y€3XfilterOKÒ78¤¥£¥ÿ;_NSNibControlConnectorÔNOP0¨ %€€[€Y€<\filterCancelÔNOP0® Q€€]€Y€ _parametersChangedÒ>³½©Ú&\%$Q‚€#€-€B€ €€<€3€ €€_Ò78¿ê¢ê;Ò>Á½©0\Q\\\€€€ €-€ € € € €€_Ò>ͽ©Ú&%$Q‚0€#€-€B€€<€3€ €€€_Ò>Ù½©ÚÛÜÝÞßàáâ€c€d€e€f€g€h€i€j€k€_UPanel\NSTextField2YPopUpListYNSButton1[NSMenuItem1\File's OwnerÒ>ë½ €_Ò>î½ €_Ò>ñ½¯IÚ%&G$H\JKQ0‚€W€-€#€<€B€ €3€,€ €Z€\€€ €€€_Ò>½¯     €p€q€r€s€t€u€v€w€x€y€z€{€|€}€~€_    Ò>"L €&Ò>%½ €_Ò>(½ €_Ò78+,¢,;^NSIBObjectData#,1:LQVdfouÀÒî %ANahv„’¬¸ÆÐ×ÙÛÝßáãåçéëíïñóõ÷ùû!*3>CR[nw‚ƒ…Ž•¢¨±¼¾ÀÂÄÆÈÙçïøúüþ/;CMV]_acdgik|‡‰‹¨÷ %3:EWm‘ž¬ºÌÖë$&(*,/1679;=>@QX_hmoqtŠ–§©«­¶ÀÁÃÌÓåî÷ù&4HPXbmvƒŒŽ“˜šœž ¢¤¦³¿ÁÃÅÏÜëíïñù .BOQSUh|…Š“ž ©®°²´Ýßáãåçéëíõþ    % * 3 B V e r € – £ ± º Ä Ë × ä í ô  + - / 1 3 d x Š ” ¢ ° ½ Ê Ô á ë ÷ ù û ý ÿ       + B J S X Z c l n p r t v “ • — ™ š œ ž ¶ ë ö ø ú ü þ      # 4 6 8 B D M X a l ‰ ‹ ’ ” « à â ä æ è ê ì î õ þ ( * , . / 1 3 J k  ‹ ‘ “ • — œ ¤ ¹ Á Í Ú è ê ì î ð ò ù')27LNPRTgtwy‚‹¦³¿Ìãìó 3<AT_prtvxŠ‘©º¼¾ÀÂÏàâäæèü "$&(*,5:CVXZ\^`bdfhjs†ˆŠŒŽ’”–˜š£¶¸º¼¾ÀÂÄÆÈÊÐÝçñý  "+LNPRTVXZ\^`bdfhjlu–˜šœž ¢¤¦¨ª¬®°²´¶¸º¼¾ÀÂÄÆÈÊÌÎÐÙÚÜåæèñòôý-PRICE-1.3.0/English.lproj/Grayscale.nib/objects.nib010064400017500000012000000036701134127315400212020ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCGrayscale†…†„i –„„„ NSMenuItemŸ”’„„„NSMenuÌ”„i@@@„„„NSMutableString˜˜ OtherViews†„„„NSMutableArray„„NSArray”™’™’„š’›„ i@@IIi@@@@:i@„˜˜ Luminance†„˜˜†‚‚ÿÿÿ…„„„NSCustomResource)”–„˜˜NSImage†„˜˜NSMenuCheckmark††…„¦–§„˜˜NSMenuMixedState††„_popUpItemAction:…’„„„NSPopUpButtonCell1„„NSMenuItemCellÒ„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚„Aþ@‚„@@@@…„„„NSFont”™$„[36c]þÿLucidaGrande„f „c­­­†……„i:…’…’„„„ NSPopUpButtonÌ„„NSButton„„ NSControl)„„NSView)„„ NSResponder”’„·’…™„ @@@@ffffffff„ ™’„µ’¹™‚€´…………› Z Z ’¹’…’…’…„icc@„®¨‚þ‚8©„˜˜Convert†±……®…’…’»„ ssii@@@@@È‚†‚@ÿ¤„˜˜ †…„²™„[28c]þÿHelvetica¬ ­­­­†…††’„µ’¹™‚€´…………G T T ’¹’…’…’…µ„®¨‚þ‚8©„˜˜Cancel†±……®…’…’À¶È‚†‚@ÿ„ž˜†„ž˜†…¿…††’„„„ NSTextField¶’¹™‚€´…………G\\’¹’…’…’…µ„„„NSTextFieldCell>¯¨‚þ‚@©„˜˜Method:†±……®…’…’Å„c@@„„„NSColor”­„@@@„˜˜System†„˜˜ controlColor†„Ë­„ffƒ?*ª«††„Ë­¼Ì„˜˜controlTextColor†„Ë­½†††’…„:…†’³†………ll’…’…’…’…†™‚€´…………oA€€’¹’…’…’…µ«†¶K‚‚@ÿ„ž˜†„ž˜†…„²™$«þÿLucidaGrande¬ ­­­­†…–¢…„i@i‚=›†’…††…† „˜˜Average†¤‚‚ÿÿÿ…¥…©¢…’«’…†›–„„„NSWindowTemplateø”„ iiffffi@@@@@caÀl‚px„˜˜Convert to Grayscale†„˜˜NSPanel†„ž˜View†¹…„ffff ª­½Õ’…­½ƒÿîƒÿ–Ź–¹Ö–›³–À¹–»¹–³¹–¢›™ –™„˜˜ NSMenuItem†–Ö„˜˜Panel†–Å„˜˜ NSTextField2†–›„˜˜ PopUpList†–À„˜˜ NSButton1†–»„˜˜NSButton†–³„˜˜ NSPopUpButton†–¢„˜˜ NSMenuItem1†–•„˜˜ File's Owner†’„„„ NSMutableSet„„NSSet”„I†’„ ™’„„„NSNibOutletConnectorÏ„„NSNibConnector”¼•³„˜˜ methodChoice††’„鼕ք˜˜ grayWindow††’„„„NSNibControlConnectorÏê¼»•„˜˜filterOK††’„ï¼À•„˜˜ filterCancel††’„ï¼³•„˜˜parametersChanged†††’…™„@iîÉÖÉ™ÉÀÉÅ ÉèÉ»ÉìɹÉñÉóÉ› ɳ ɕɢ ™™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/Histogram.nib004075500017500000012000000000001245331715400170245ustar00multixusersPRICE-1.3.0/English.lproj/Histogram.nib/classes.nib010064400017500000012000000011540777341412300212330ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {showHistogram = id; }; CLASS = PRCHistogram; LANGUAGE = ObjC; OUTLETS = {histoView = PRHistogram; histoWindow = NSWindow; }; SUPERCLASS = NSObject; }, {CLASS = PRHisto; LANGUAGE = ObjC; SUPERCLASS = PRHistogram; }, { CLASS = PRHistogram; LANGUAGE = ObjC; OUTLETS = {theController = PRCHistogram; }; SUPERCLASS = NSView; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/Histogram.nib/info.nib010064400017500000012000000007031003574064200205210ustar00multixusers IBDocumentLocation 129 74 356 240 0 0 1152 848 IBFramework Version 283.0 IBOpenObjects 5 IBSystem Version 6R73 PRICE-1.3.0/English.lproj/Histogram.nib/objects.nib010064400017500000012000000012661003574064200212240ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCHistogram†…†„i–„„„ NSCustomView)„„NSView)„„ NSResponder”’„›’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’™†………hðhð’…’…’…’…†™‚…………@È@È’’…’…’…–„˜˜PRHisto†„˜˜NSView††–„„„NSWindowTemplateø”„ iiffffi@@@@@c Ihð‚px„˜˜ Histogram†„˜˜NSPanel†„„„NSMutableString˜˜View†…„ffff€P„c„ffÕ’…¤¥ƒÿîƒÿ£•™–•„˜˜ File's Owner†–™„˜˜View†–£„˜˜Panel†’„„„ NSMutableSet„„NSSet”„I†’„Ÿ™’„„„NSNibOutletConnectorÏ„„NSNibConnector”„@@@•£„˜˜ histoWindow††’„±«•™„˜˜ histoView†††’…™„@i•¬£¬¬™¬°¬´ ™™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/MainMenu.nib004075500017500000012000000000001245331715400166005ustar00multixusersPRICE-1.3.0/English.lproj/MainMenu.nib/classes.nib010064400017500000012000000266141237374065100210170ustar00multixusers{ IBClasses = ( { ACTIONS = {cancelPreferences = id; savePreferences = id; showPreferences = id; }; CLASS = AppController; LANGUAGE = ObjC; OUTLETS = { closePanelsCheck = NSButton; enlargeWindowsCheck = NSButton; prefPanel = NSPanel; }; SUPERCLASS = NSObject; }, { ACTIONS = { makeConvolve55 = id; makeDFT = id; makeFlippedHoriz = id; makeFlippedVert = id; makeGrayscale = id; makeInverse = id; makeRotated180 = id; makeRotated270 = id; makeRotated90 = id; makeTransposed = id; }; CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { makeDFT = id; makeEqualization = id; makeGrayscale = id; makeRotated180 = id; makeRotated270 = id; makeRotated90 = id; makeTransposed = id; }; CLASS = MyDocument; LANGUAGE = ObjC; SUPERCLASS = NSDocument; }, { ACTIONS = {briconReset = id; changeBri = id; changeCon = id; }; CLASS = PRCBriCon; LANGUAGE = ObjC; OUTLETS = { briSlider = NSSlider; briStep = NSStepper; briVal = NSTextField; briconWindow = NSWindow; conSlider = NSSlider; conStep = NSStepper; conVal = NSTextField; }; SUPERCLASS = PRFilterController; }, { ACTIONS = { autoRange = id; convMatrix11 = id; convMatrix12 = id; convMatrix13 = id; convMatrix14 = id; convMatrix15 = id; convMatrix21 = id; convMatrix22 = id; convMatrix23 = id; convMatrix24 = id; convMatrix25 = id; convMatrix31 = id; convMatrix32 = id; convMatrix33 = id; convMatrix34 = id; convMatrix35 = id; convMatrix41 = id; convMatrix42 = id; convMatrix43 = id; convMatrix44 = id; convMatrix45 = id; convMatrix51 = id; convMatrix52 = id; convMatrix53 = id; convMatrix54 = id; convMatrix55 = id; offsetFactor = id; scaleFactor = id; }; CLASS = PRCConvolve55; LANGUAGE = ObjC; OUTLETS = { autoScaleCheck = NSButton; filterWindow = NSWindow; matField11 = NSTextField; matField12 = NSTextField; matField13 = NSTextField; matField14 = NSTextField; matField15 = NSTextField; matField21 = NSTextField; matField22 = NSTextField; matField23 = NSTextField; matField24 = NSTextField; matField25 = NSTextField; matField31 = NSTextField; matField32 = NSTextField; matField33 = NSTextField; matField34 = NSTextField; matField35 = NSTextField; matField41 = NSTextField; matField42 = NSTextField; matField43 = NSTextField; matField44 = NSTextField; matField45 = NSTextField; matField51 = NSTextField; matField52 = NSTextField; matField53 = NSTextField; matField54 = NSTextField; matField55 = NSTextField; offsetField = NSTextField; scaleField = NSTextField; }; SUPERCLASS = PRFilterController; }, { ACTIONS = { changeBottom = id; changeLeft = id; changeRight = id; changeTop = id; resetValues = id; }; CLASS = PRCCrop; LANGUAGE = ObjC; OUTLETS = { bottomField = NSTextField; cropWindow = NSWindow; heightField = NSTextField; leftField = NSTextField; rightField = NSTextField; topField = NSTextField; widthField = NSTextField; }; SUPERCLASS = PRFilterController; }, {CLASS = PRCCumHisto; LANGUAGE = ObjC; SUPERCLASS = PRCHistogram; }, { ACTIONS = {curvesReset = id; }; CLASS = PRCCurves; LANGUAGE = ObjC; OUTLETS = {curvesView = PCCurvesView; curvesWindow = NSWindow; }; SUPERCLASS = PRFilterController; }, { ACTIONS = { changeSize1 = id; changeSize2 = id; changeSize3 = id; changeThreshold = id; enablePane1 = id; enablePane2 = id; enablePane3 = id; }; CLASS = PRCCustTraceEdges; LANGUAGE = ObjC; OUTLETS = { edgeWindow = NSWindow; enableCheck1 = NSButton; enableCheck2 = NSButton; enableCheck3 = NSButton; filterType = NSPopUpButton; formSelect1 = NSPopUpButton; formSelect2 = NSPopUpButton; formSelect3 = NSPopUpButton; separableCheck1 = NSButton; separableCheck2 = NSButton; separableCheck3 = NSButton; sizeField1 = NSTextField; sizeField2 = NSTextField; sizeField3 = NSTextField; sizeSlider1 = NSSlider; sizeSlider2 = NSSlider; sizeSlider3 = NSSlider; thresholdField = NSTextField; thresholdSlider = NSSlider; zeroCrossCheck = NSButton; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {changePassBand = id; changeStopBand = id; dftHPAutoRange = id; }; CLASS = PRCDFTHighPass; LANGUAGE = ObjC; OUTLETS = { autoRangeCheck = NSButton; filterWindow = NSWindow; passBandSlider = NSSlider; passBandVal = NSTextField; passBandValPi = NSTextField; stopBandSlider = NSSlider; stopBandVal = NSTextField; stopBandValPi = NSTextField; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {changePassBand = id; changeStopBand = id; dftLPAutoRange = id; }; CLASS = PRCDFTLowPass; LANGUAGE = ObjC; OUTLETS = { autoRangeCheck = NSButton; filterWindow = NSWindow; passBandSlider = NSSlider; passBandVal = NSTextField; passBandValPi = NSTextField; stopBandSlider = NSSlider; stopBandVal = NSTextField; stopBandValPi = NSTextField; }; SUPERCLASS = PRFilterController; }, { CLASS = PRCEqualize; LANGUAGE = ObjC; OUTLETS = {colorSpaceChoice = NSPopUpButton; equalWindow = NSWindow; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {transformImage = id; }; CLASS = PRCFourier; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { CLASS = PRCGrayscale; LANGUAGE = ObjC; OUTLETS = {grayWindow = NSWindow; methodChoice = NSPopUpButton; }; SUPERCLASS = PRFilterController; }, { CLASS = PRCHisto; LANGUAGE = ObjC; OUTLETS = {histoView = PRHisto; }; SUPERCLASS = PRCHistogram; }, { ACTIONS = {showHistogram = id; }; CLASS = PRCHistogram; LANGUAGE = ObjC; OUTLETS = {histoWindow = NSWindow; }; SUPERCLASS = NSObject; }, { ACTIONS = {makeInverse = id; }; CLASS = PRCInvert; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {changeSize = id; }; CLASS = PRCMedian; LANGUAGE = ObjC; OUTLETS = { formSelect = NSPopUpButton; medianWindow = NSWindow; separableCheck = NSButton; sizeField = NSTextField; sizeSlider = NSSlider; }; SUPERCLASS = PRFilterController; }, { ACTIONS = { changePercentX = id; changePercentY = id; changePixelsX = id; changePixelsY = id; }; CLASS = PRCScale; LANGUAGE = ObjC; OUTLETS = { methodSelect = NSPopUpButton; percentXField = NSTextField; percentYField = NSTextField; pixelsXField = NSTextField; pixelsYField = NSTextField; scaleWindow = NSWindow; uniformToggle = NSButton; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {changeThreshold = id; filterTypeToggle = id; thresholdToggle = id; }; CLASS = PRCTraceEdges; LANGUAGE = ObjC; OUTLETS = { edgeWindow = NSWindow; filterType = NSPopUpButton; thresholdCheck = NSButton; thresholdField = NSTextField; thresholdSlider = NSSlider; zeroCrossCheck = NSButton; }; SUPERCLASS = PRFilterController; }, { ACTIONS = { flipImageHoriz = id; flipImageVert = id; rotateImage180 = id; rotateImage270 = id; rotateImage90 = id; transposeImage = id; }; CLASS = PRCTransforms; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {changeScale = id; }; CLASS = PRWindowController; LANGUAGE = ObjC; OUTLETS = {view = PRImageView; zoomControl = NSTextField; zoomSlider = NSSlider; }; SUPERCLASS = NSWindowController; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/MainMenu.nib/info.nib010064400017500000012000000011721237374065100203050ustar00multixusers IBDocumentLocation 115 173 356 240 0 0 1440 938 IBEditorPositions 29 28 829 525 44 0 0 1440 938 IBFramework Version 489.0 IBOldestOS 1 IBOpenObjects 29 269 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/MainMenu.nib/keyedobjects.nib010064400017500000012000000477541237374065100220450ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯q 159@CFJN†Œœ£¤¥ª«¬°´µ¸»¿ÃÊËÌÏÓÚÞßàãçîòóô÷û    !$)0149@ABGNOPQV]^_cjnopsw~€ƒ‡Ž“—žŸ £§®¯°³·¾¿ÀÃÇÎÏÒÖÝÞßàäëìíîòùúûü  #$%*-./27>BCFGHMTUXGY^vwxy|„‹—˜±²¹º½ÁÂÅÊÐרàáèéôøùú   "#()./45:ABCGNOPQV]abefglstwxy~…‰ŠŽ”›Ÿ ¡¦­®¯´»¼½ÂÉÍÎÏÔÛÜÝâéêíîïôûüÿî  î!î"'./2î38?@CîDIPQTîUZabeîfkrsvîw|ƒ„‡îˆ”•˜î™ž¥¦©ª«!&'&(356?BHRSVajky‚‹”'•šœŸ ©²³´¼Å'ÅÆÌÕ'ÕÖÛÞìõ'öøüýj' +Ü'4T'=5'F³'O@'X'abdÏÿF?@íADXGJKLMÌO©eQvTWX[C^_‡`bcTed2fi-jwmp˜!q··ruxº»¼½¾¿ÀÁÂíÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìïí”îïðñòóôõö÷øùúûüýþÿ                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U X [ ^U$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot—mÌ͘Ëo΀p€ ™Gn€€7€Ò234[NSClassName€€Ò678YNS.string]NSApplication€Ò:;<=X$classesZ$classname£=>?_NSMutableStringXNSStringXNSObjectÒ:;AB¢B?^NSCustomObjectÒ6D8_IBCocoaFramework€ÒGHIZNS.objects €Ò:;KL£LM?\NSMutableSetUNSSetÒGO…¯5PQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„€ €€€#€)€.€4€8€<€A€E€K€P€U€Z€_€d€h€m€r€w€|€€…€Š€‘€—€Ä€Æ€È€Ê€Ì€Ð€Õ€Ü€â€é€î€ò€ö€û€ÿ #)/5;A€¼Ó‡ˆ‰Š‹WNSLabelXNSSource€€€ ØŽ‘’“”•–—˜™š›VNSMenu]NSMnemonicLoc_NSKeyEquivModMaskWNSTitleYNSOnImageZNSKeyEquiv\NSMixedImage€ ÿÿÿ€ €€€€ÔžŸ ¡¢VNSName[NSMenuItemsQTNRXMinimizeQmÓ¦2§¨©^NSResourceName€€€WNSImage_NSMenuCheckmarkÒ:;­®£®¯?_NSCustomResource_%NSCustomResourceÓ¦2±¨©€€€_NSMenuMixedStateÒ:;¶·¢·?ZNSMenuItemÒ6¹8_performMiniaturize:€Ò:;¼½£½¾?_NSNibControlConnector^NSNibConnectorÓ‡ˆÀŠÂ€€€ØŽ‘’“”•–Řǚ›€ €€€€€_Bring All to FrontPÒ6Í8_arrangeInFront:€Ó‡ˆÐŠÒ€"€€ØŽ‘’“Ô•–՘ך›€€ €€!€€ÓžÛ¡ÝrNs]Page Setup...QPÒ6á8^runPageLayout:€Ó‡ˆäŠæ€(€€$ØŽ‘’“è•–é˜ëš›€%€&€€'€€Óžï¡ñN€ZPRICE HelpQ?Ò6õ8YshowHelp:€Ó‡ˆøŠú€-€€*ÙŽ‘ü’“ý•–þ˜Çš›\NSIsDisabled€+€,€ €€€Ôž¡wyNxZClear MenuÒ6 8_clearRecentDocuments:€Ô‡ˆ0Š]NSDestination€€3€€/ØŽ‘’“•–˜š›€0€1€€2€€Ôž¡XeNYZQuit PRICEQqÒ6"8Zterminate:€Ô‡ˆ0&Š(€€7€€5ØŽ‘’“•–+˜Çš›€0€6€€€€[About PRICEÒ628_orderFrontStandardAboutPanel:€Ô‡ˆ06Š8€€;€€9ØŽ‘’“•–;˜Çš›€0€:€€€€[Hide Others_hideOtherApplications:Ô‡ˆ0DŠF€€@€€=ØŽ‘’“•–I˜Kš›€0€>€€?€€ZHide PRICEQhUhide:Ô‡ˆ0SŠU€€D€€BØŽ‘’“•–X˜Çš›€0€C€€€€XShow All_unhideAllApplications:Ó‡ˆ`Šb€J€€FØŽ‘’“d•–e˜gš›€G€H€€I€€Óžk¡mUNVSCutQxÒ6q8Tcut:€Ó‡ˆtŠv€O€€LØŽ‘’“d•–y˜{š›€G€M€€N€€UPasteQvÒ68Vpaste:€Ó‡ˆ„І€T€€QØŽ‘’“d•–‰˜‹š›€G€R€€S€€TRedoQZÒ6‘8Uredo:€Ó‡ˆ”Š–€Y€€VØŽ‘’“d•–™˜›š›€G€W€€X€€ZSelect AllQaÒ6¡8ZselectAll:€Ó‡ˆ¤Š¦€^€€[ØŽ‘’“d•–©˜«š›€G€\€€]€€TUndoQzÒ6±8Uundo:€Ó‡ˆ´Š¶€c€€`ØŽ‘’“d•–¹˜»š›€G€a€€b€€TCopyQcÒ6Á8Ucopy:€Ó‡ˆÄŠÆ€g€€eØŽ‘’“d•–ɘǚ›€G€f€€€€UClearÒ6Ð8Vclear:€Ó‡ˆÓŠÕ€l€€iØŽ‘’“Ô•–ؘÚš›€€j€€k€€UCloseQw]performClose:Ó‡ˆáŠã€q€€nØŽ‘’“Ô•–æ˜è𛀀o€€p€€SNewQn\newDocument:Ó‡ˆïŠñ€v€€sØŽ‘’“Ô•–ô˜ö𛀀t€€u€€WOpen...Qo]openDocument:Ó‡ˆýŠÿ€{€€xØŽ‘’“Ô•–˜š›€€y€€z€€TSaveQs]saveDocument:Ó‡ˆ Š €€€€}ØŽ‘’“Ô•–˜š›€€~€€€€ZSave As...QS_saveDocumentAs:Ó‡ˆŠ€„€€‚׎‘’“Ô•˜Ç𛀀ƒ€€€€_Revert to Saved_revertDocumentToSaved:Ô‡ˆ&'(0€†€ˆ€‰€Ò23,€€‡]AppControllerXdelegateÒ:;01£1¾?_NSNibOutletConnectorÔ‡ˆ34Š6€Ž€€€‹ØŽ‘’“8•–9˜Çš›€Œ€€€€€Óž?¡ALNM_Cumulative HistogramÒ23E€€[PRCCumHisto^showHistogram:Ô‡ˆIJŠL€”€–€€’ØŽ‘’“8•–O˜Çš›€Œ€“€€€€YHistogramÒ23W€€•XPRCHistoÔ‡ˆZ[(&€˜€Ã€‰€†Ü_`abcdefghijklmnopqrstu_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€À€š€›€™€¿€Á€px€Â€œ_{{111, 378}, {300, 178}}[PreferencesWNSPanelÒ6z8TView€Ô}~€.‚ƒZNSSubviews_NSNextResponderWNSFrame€ž€€½€¾ÒG……¤†‡ˆ‰€Ÿ€«€¯€¶€¼×~ŒŽrr’”•–[NSSuperviewYNSEnabledXNSvFlagsVNSCell€€€  €ª€¡_{{30, 118}, {236, 18}}Ý™š›œžŸ ¡¢£¤Ç¦§¨†kª«¬­®Ç°_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2€€¦€£€¢€ŸH@€<ØŽ‘’“8•–˜Çš›€Œ=€€€€gCurves &Ò23—€?YPRCCurvesÔ‡ˆš›ŠDF€BØŽ‘’“•– ˜Çš›€äC€€€€WCrop...Ò23¨€EWPRCCropZshowFilterÒG¬¯hjF¯Wÿú”Á¶dÓI“Æ#³9Á†Ä&ÕÃár‰ñ榈{ ÔVÔgUkÚÛ&88ßRYâãðè67vx}LÂíî‹zbÞóŒý(÷•FûüEhÿ3HZÒ†š4 ¥ ‡óU–‰ã0€ÑH€×€x€*€ €÷€`€G€ü€”€ê€e €ó€0€Íd€Q€äc€†€i€ø€B>€s€$€[€/€¯6€}W,€2€Ö€ÝZ[€Œ€9|€Ù*{_€%€‹€L8€ã€’€I‰€ €æ€F\<€+€5S€‚€ë€=tz&€ß’€Ž$€˜mŒƒ€€ŸD €ïh€«€B€V€¶†€n–ÚŽ‘’“í•–8˜Çš› YNSSubmenuXNSActionI€ŒJ€€€€KÔž"#¡%•N‚[Enhancement^submenuAction:ÒG)…¨áL6{ŒjYH€’€‹6<0*$€¼Ò:;4¢?WFiltersÒG7…¦Uk&7€Ö €Ý€¼Ò6@8VWindow€ÒGC…£‹÷€ S€€¼ÚŽ‘ü’“I”•–ǘÇš›]NSIsSeparator€ €€ €€€ ^_NSWindowsMenuÒ6T8TEdit€ÒGW…¨¦†Ôb¶vÆ–€[€QW€F€`€L€e€V€¼ÚŽ‘ü’“Id•–ǘÇš›€G€€ €€€ UPRICEÒGl…«(Ú9ÛóÄF8UÁ€5Z€Í[\c€=€9€Bd€/€¼ÚŽ‘ü’“I•–ǘÇš›€0€€ €€€ ÚŽ‘ü’“I•–ǘÇš›€0€€ €€€ ÚŽ‘’“•–㎘ǚ›“€0_]€€€€^XServicesÔž–—¡™`bNaÒ6”8€ÒG… €¼__NSServicesMenuÚŽ‘ü’“I•–ǘÇš›€0€€ €€€ ÚŽ‘ü’“I•–ǘÇš›€0€€ €€€ \_NSAppleMenuZTransformsÒGµ…¥ }óhm€ãB€¼ÚŽ‘’“•–•¿˜Çš›Ä€ä€ëi€€€€jVRotateÒGÇ…£“¥³€ê€ï€ó€¼ÚŽ‘’“•–ÃϘǚ›Ô€ä€øn€€€€oTFlipÒG×…¢ÁÓ€÷€ü€¼Ò6Ü8TFile€ÒGß…«ãñûüÕÿ âÒF€n€stz€i€x€}€‚{€€Ñ€¼ÚŽ‘’“Ô•–ýï˜Çš›ô€€+u€€€€v[Open RecentÒ6õ8€ÒGù…¡ú€*€¼__NSRecentDocumentsMenuÚŽ‘ü’“IÔ•–ǘÇš›€€€ €€€ ÚŽ‘ü’“IÔ•–ǘÇš›€€€ €€€ ÚŽ‘’“í•–˜Çš›I€0}€€€€~Ò68THelp€ÒG…¡æ€$€¼XMainMenuÒG!…¨ßî¯ ÿ|ƒ†‰ŒH’€¼ÚŽ‘’“í•–Ô.˜Çš›3I€„€€€€…ÚŽ‘’“í•–d7˜Çš›<I€G‡€€€€ˆÚŽ‘’“í•–W@˜Çš›EI€×Š€€€€‹ÚŽ‘’“í•–I˜Çš›NI€ä€€€€ŽÚŽ‘’“í•–”R˜Çš›WI€ €€€€‘ÚŽ‘’“í•–è[˜Çš›`I€%“€€€€”[_NSMainMenuÒ:;c¢?ÒGe¯h8Ôí0îÔý ÃdÃ0•d0W•ßd0Ô8Z00Ôèdr8Ôd00WWW¯í08Ôó0ÿ8Wd08”0í”0d08û”Ô ÔÔ00í080ííÔr00í•rdríWÔ€Œ€I€‰€€+€ø€G†€ø€€ë€G€€×€ë|€0€0€GŒ€0€€m€Œ€˜€ä€€€€%€G€0€€Œ€€G€ƒ€€×€×€0€0€×H€0I€€Œ€\€’€Œ€×€G€€ä€Œ€ €I€ €€G€€0€Œt€0€ €h€0€€€€I€€Œ€€äII€€€€I€ë€ä€€ä€0€G€I€×€–ÒGЯ5ð3bvÞÿFIâZ‰–èˆæšVgãÆüÿ4‡†xí¶¦ERÕ#z ÷&0hÒÔ†ñ‰d9Ô€Ž€F€L€x€Ñ€”{€˜€¶€V€%€¯€$D,€‚2€n€ez’ €«€Q8I€`€[&€Ù€i€æ€}€/S€†€€ßƒ€€€Ÿ€s>€G€ÍW†–ÒG¯5      !"#$%&'()*+,-.0124689:;<=š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿¨ÀÁÂ¨Ã¨Ä¨ÅÆÇÈÉÊ–[NSMenuItem3[NSMenuItem9Ò6B8Q3€Ò6E8Q6€Ò6H8Q2€UPanelYNSButton1\NSMenuItem10Ò6H8€Ò6Ë8€Ò6R8R10€Ò6U8Q9€[NSMenuItem4Ò6Y8Q7€Ò6\8Q1€ZNSButton41\NSMenuItem11Ò68€[NSMenuItem1[NSMenuItem2Ò6\8€Ò6g8Q8€T1111Ò6k8\File's Owner€Ò6n8Q5€YNSButton4S121ÒGs –ÒGv –ÒGy¯žm\xáÞEs&Æj³ÃUbeÄü{ÓgZ`Ôzybtcÿ SÕ†ÿL[ðTólÔæV}8 0}Á†vfnW‡kÂ4Z¦÷Fˆè€UUX63Vda iF–¯gƒWúrÚ•âãwH‰RrzšYIóÛ“R¥‚”P‹qh_ßhv¶^xýuîÒo(ípd‰jã8„#Ák{ŒQYû|ñ9]~&7€È€0€P€ûƒ†&€â€†€e0€ó€ø€.€m€|cz €ü€…€˜€dW€æ€ÿ€F€é€r’€}€ä€‚€#€i€Q€x€’€K€)\€Æ€€$€4€9h€€ã€÷€Ÿ€L€€Ê€8€«€/€Ä€ €E€[S€Ñ€¯€%)#€Ö€B€<€‹€Ž,€G€h€‘€=€VH2;€×€*€ÜZ€ë{€n€ö$B>€Ù€D*€” [m€ê€€ï5€ € € €Õ€Š€_|€ß€ò€`€Z8€+€î‰€€Ì/€5I€Ð€w€¶€—_€ŒAd€Ý6<€€At€s€Í€UŒ–ÒG¯ž !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸ÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl–9²(S £ ð#¤òúÿ‹ÂÅO+É ·œ") $ÃgPÐpzI­Kå°ƒQoŽ-Ì‘õѫƒˆÝ¯ž\Nj0/–˜èçì©Á놬ßó5Ë~!ÇöJR'ï3×*íêÓþ÷Wø2%éµ8 &´â}%ÊM1:Ä‚à6Ú•Îá4'™|,H³.ÙÜÏÒG V… €¼ÒG Y –ÒG \ –Ò:; _ `¢ `?^NSIBObjectData#,1:LQVdfLR¯ËÝèô+>ESao‰•£­´·º½ÀÃÆÉÌÎÑÓÖÙÜÞàãåîúüþ!*3>EW`irw†¢¤­¸¹»ÄËØÞçTVXZ\^`bdfhjlnprtvxz|~€‚„†ˆŠŒŽ’”–˜šœž ¢¤¦¨«®±´·º½ÀÃÆÉËØàéëíï   % 9 A K V c e j o q s u w y Š ‘   £ ¦ © ² ´ Á Ð Ò Ô Ö Þ ð ù  ' 4 6 8 : M V [ f o … ‡ — ¯ ¾ Ë Í Ï Ñ ò ô ö ø ú ü þ    / 1 > @ B D e g i k m o q ~ „ ‡ • —   ¯ ± ¾ À Â Ä å ç é ë í ï ñ þ       ' ) 6 8 : < a n p r t u w y { Œ ’ • ˜ £ ¬ Ä Æ × å ç é ë í        + . 1 4 7 B D M X Z k m o q s ” – ˜ š œ ž   ¬ µ Õ × è ê ì î ð)BSUWY[|~€‚„†ˆ“•›¬®°²´Õ×ÙÛÝßáê79;=?ACPSVY]_hmo|~€‚£¥§©«­¯µ·ÀÇÉÖØÚÜýÿ !.024UWY[]_alnw‚„‘“•—¸º¼¾ÀÂÄÉËÔÚÜéëíï!#,24ACEGhjlnprtzƒŠŒ™›ŸÀÂÄÆÈÊÌÒÔâïñóõ "&(5BDFHikmoqsu}šœž ÁÃÅÇÉËÍÒÔâïñóõ "-/ANPRTqsuwy{}¨¹»½¿ÁÊÌÎÜåîõ !#%FHJLNPR_behˆŠŒ˜§¸º¼¾Àáãåçéëí÷  "$&Wk}‡•£°½ÇÔÞêìîðòôöøúü ,4=BDU`rz|~€‚‹”–˜šœž»ÇÑÚáãåçèëíï=Oblw…”©·ÉÕëøúüþ   <MT]bdfiv„‹” ¢¤­¶»ÑÚåò !*4;Gdfhjkmo‡¼¾ÀÂÄÆÈÊï /dfhjlnpy{}‚“•—™£¥ÂÄÆÈÉËÍå "$&(/8:CENUdlƒŒ“«¶ÓÜáôþ*;=?ACYjlnpr…–˜šœž³ÄÆÈÊÌíïñóõ÷ù(*,.OQSUWY[dfu†ˆŠŒŽ¯±³µ·¹»ÈËÎÑØáãåïü 68:<>@BFOQS^pƒ…‡‰ª¬®°²´¶ÃÆÉÌÖßáãñ=?ACEGIVY\_fu†ˆŠŒŽ¯±³µ·¹»ÄÖçéëíï        % 7 H J L N P q s u w y { } Š “ œ « ¼ ¾ À Â Ä å ç é ë í ï ñ ü!!!"!%!'!*!K!M!P!R!T!V!X!‡!!’!•!Ÿ!«!¼!¿!Â!Ä!Ç!è!ê!í!ï!ñ!ó!õ!þ"" " ""&")","."1"R"T"W"Y"["]"_"q"z"|"""ž"¡"¤"¦"©"Ê"Ì"Ï"Ñ"Ó"Õ"×"æ"ï"ñ"ô#######>#@#C#E#G#I#K#]#f#h#k#y#Š###’#•#¶#¸#»#½#¿#Á#Ã#Ö#ß#á#ä#ó$$$ $ $$0$2$5$7$9$;$=$U$^$`$c$w$ˆ$‹$Ž$$“$´$¶$¹$»$½$¿$Á$Ð$Ù$Û$Þ$ì$ý%%%%%)%+%.%0%2%4%6%@%I%K%N%X%i%l%o%q%t%•%—%š%œ%ž% %¢%«%´%¶%¹%Å%Ö%Ù%Ü%Þ%á&&&& & & &&&'&)&,&6&G&J&M&O&R&s&u&x&z&|&~&€&ˆ&‘&“&–&ž&©&²'…'ˆ'Š'''’'”'–'˜'š'œ'ž' '¢'¤'¦'©'¬'®'°'²'µ'·'¹'¼'¾'À'Â'Å'Ç'Ê'Í'Ð'Ò'Ô'Ö'Ø'Ú'Ý'ß'â'å'ç'ê'ì'î'ñ'ô'÷'ù'û'þ(((( ( (((((((((!($(&(((*(-(0(3(5(7(:(<(>(@(C(F(I(K(N(P(S(U(X([(^(`(b(e(h(k(m(p(r(u(w(y({(~((ƒ(†(¯(¹(Â(Å(Ç(Ê(Ì(Î(Ð(Ò(Õ(æ(é(ì(ï(ò(þ) ))')*),).)1)4)7):)=)?)H)M)U)^)k)n)p)s)u)x){)})†)))˜)Ÿ)¡)¤)¦)¨)Ñ)ß)á)ã)å)æ)è)ê)ì)í)ü** * **&*(***-*/*1*3*5*7*9*b*d*f*h*i*k*m*o*p*v**–*˜*›** *£*¦*¨*ª*¬*¯*±*³*Ü*Þ*à*â*ã*å*ç*é*ê++++++++ +!+J+L+O+R+T+V+X+Z+]+f+w+z+}+€+ƒ+Œ+Ž+—+˜+š+¬+Õ+×+Ù+Û+Ü+Þ+à+â+ã, ,,,,,,,,,',2,;,F,I,L,N,Q,T,V,,,ƒ,†,ˆ,Š,Œ,Ž,‘,˜,¡,¨,ª,¬,®,°,Ù,Û,Ý,à,â,ä,æ,è,ë,ð,ù,þ---- ----4-6-8-;->-@-B-D-F-I-K-M-O-x-z-|---ƒ-…-‡-Š-–-Ÿ-¡-ª-­-¯-±-Ê-ó-õ-÷-ù-ú-ü-þ...*.,...0.1.3.5.7.8.a.d.f.i.k.m.o.q.t.}.‚.„...’.”..¦.·.º.½.À.Ã.Æ.É.Ì.Ï.Ñ.ú.ý.ÿ///// / /6/9/;/>/@/B/D/F/I/r/u/w/z/|/~/€/‚/…/®/±/³/¶/¸/º/¼/¾/Á/ê/í/ï/ò/ô/ö/ø/ú/ý0&0)0+0.00020406090E0N0S0\1/111316181;1=1?1B1D1F1I1K1M1O1Q1S1U1W1Z1\1^1`1c1e1g1i1l1n1p1r1t1v1x1z1|1~1€1‚1„1†1ˆ1‹111‘1“1•1—1š1œ1Ÿ1¡1£1¥1¨1ª1­1¯1±1³1µ1·1¹1»1½1À1Â1Ä1Æ1È1Ê1Ì1Ï1Ñ1Ó1Õ1Ø1Ú1Ü1Þ1à1â1å1ç1é1ë1í1ð1ó1õ1÷1ù1û1þ222222 2 222222Œ22‘2“2•2˜2š2œ2ž2¡2£2¥2§2©2«2­2°2³2µ2¸2º2½2¿2Â2Å2È2Ê2Ì2Ï2Ò2Ô2Ö2Ù2Û2Ý2à2â2ä2æ2é2ë2í2ï2ò2ô2ö2ø2ú2ý2ÿ3333 3 33ƒ3†3‰3Œ33’3•3˜3›3ž3¡3¤3§3ª3­3°3³3¶3¹3¼3¿3Â3Å3È3Ë3Î3Ñ3Ô3×3Ú3Ý3à3ã3æ3é3ì3ï3ò3õ3ø3û3þ4444 4 4444444"4%414=4F4H4J4S4U4W4`4b4d4j4t44Š4Œ4•4—4 4£4¥4®4°4²4¾4Ç4É4Ë4Ô4Ö4Ø4ã4ð4ù4û55555'5)5+50595F5H5Q5S5U5_5c5l5m5p5y5z5}5†6Å6Ç6É6Ë6Í6Ð6Ó6Ö6Ù6Ü6Þ6à6â6å6ç6é6ë6í6ï6ò6õ6ø6ú6ü6þ77777 7 7 777777777 7"7%7'7*7,7.707275787:7=7?7A7C7E7G7I7K7M7O7Q7S7U7X7Z7\7_7a7c7e7h7k7m7o7q7s7u7x7z7|777ƒ7†7ˆ7‹7Ž7‘7“7•7—7š7œ7Ÿ7¡7£7¦7©7¬7®7±7³7¶7¹7¼7¾7Á7Ä7Ç7Ê7Ì7Î7Ð7Ó7Õ7×7Ù7Û7Ý7ß7â7ä7æ7è7ê7í7ï7ñ7ô7ö7ø7û7ý888888 8 8888888 8"8%8(8*8,8.8184878:8=8F9…9ˆ9‹9Ž9‘9”9—9š99 9£9¦9©9¬9¯9²9µ9¸9»9¾9Á9Ä9Ç9Ê9Í9Ð9Ó9Ö9Ù9Ü9ß9â9å9è9ë9î9ñ9ô9÷9ú9ý:::: : :::::::!:$:':*:-:0:3:6:9:<:?:B:E:H:K:N:Q:T:W:Z:]:`:c:f:i:l:o:r:u:x:{:~::„:‡:Š:::“:–:™:œ:Ÿ:¢:¥:¨:«:®:±:´:·:º:½:À:Ã:Æ:É:Ì:Ï:Ò:Õ:Ø:Û:Þ:á:ä:ç:ê:í:ð:ó:ö:ù:ü:ÿ;;;; ;;;;;;; ;#;&;);,;/;2;5;8;;;>;A;D;G;J;M;P;S;V;Y;\;_;b;e;g;i;l;n;q;s;v;x;{;};;;ƒ;…;‡;‰;‹;;;“;•;˜;š;œ;Ÿ;¢;¤;§;©;«;­;¯;±;³;µ;·;¹;»;½;À;Â;Ä;Ç;É;Ë;Í;Ð;Ò;Ô;Ö;Ø;Û;Ý;ß;â;ä;ç;é;ì;î;ð;ò;ô;ö;ø;û;ý<<<<< < <<<<<<<<< IBDocumentLocation 99 102 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/Median.nib/keyedobjects.nib010064400017500000012000000173071134276106000215100ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯½ 156<=AERZrstuy}…œ·¸ÀÁÄÈÉÊËÐÖÝÞæçèïðúûÿ  !%(+23>?HIJNPUVY\`ghpqvwz€‡ˆŸ¢¤¦»ÀÁÆÇÈÌÐÑÒÔ×ÞçÑèñÑòüÑý  #$(-.349:?@EFINOTUTZ_`rt†—¨©ª«¬­® ŠÒ¯°±^²µ¸Õòóôõö÷Çøùúûüýþ¯°ÿ U$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€Š€¹€œ€€‹€›€»€ž€€¼€€Œ€ˆ€º€€"€Ò234[NSClassName€€YPRCMedianÒ789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FQªGHIJKLMNOP€ €u€w€y€{€}€€€‚€„€†€eÔSTUVWX0]NSDestinationWNSLabelXNSSource€ €s€t€Ü[\]^_`abcdefghijklmnopq_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€p€ € € €o€q€ÿÿÿÿðx€r€_{{73, 365}, {339, 152}}VMedianWNSPanelÒvwxYNS.stringTView€Ò78z{£{|;_NSMutableStringXNSStringÔ~€.ƒ„ZNSSubviews_NSNextResponderWNSFrame€€€m€nÒ>†Q¨‡ˆ‰Š‹ŒŽ€€€$€+€2€@€I€i€eב€’“”nn—˜™š›[NSSuperviewYNSEnabledXNSvFlagsVNSCell€€€ €€_{{217, 12}, {84, 32}}ÝžŸ ¡¢£¤¥¦§¨©ª«¬­‡¯°±²³´µ¶_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2€€€€€ÿÿÿÿ†‚@ÿ€Èþ€8VFilterÔ¹º»¼½¾¿VNSSizeVNSNameXNSfFlags"AP€€\LucidaGrandeÒ78ÂâÃ;VNSFontÔ¹º»¼Å¾Ç€€YHelveticaPQ Ò78ÌÍ¥ÍÎÏ”;\NSButtonCell]%NSButtonCell\NSActionCellÒ78ÑÒ¥ÒÓÔÕ;XNSButtonYNSControlVNSView[NSResponderב€’“”nnÙ˜™šÜ€€€ €€!_{{128, 12}, {84, 32}}ÝžŸ ¡¢£¤¥¦§¨©ß«¬âˆ¯°±²³´µ¶€#€€€"€€€VCancelQב€’“”nn똙šî€€€% €€&_{{237, 72}, {84, 18}}ÝžŸ ¡¢£¤¥¦§¨©µò¬ô‰g°ö²³´µù€€(€€'€$Hÿÿÿÿ„1þA@Q3Õ@ABCDEFGWNSColor[NSColorName\NSColorSpace]NSCatalogName€9€8€7€:VSystem_textBackgroundColorÓKBLfGWNSWhiteB1€:Ò78O@¢@;Õ@ABCQRFG€=€<€7€:YtextColorÓKBWfGB0€:Ò78Z[¤[Ï”;_NSTextFieldCellÒ78]^¦^_ÓÔÕ;[NSTextField\%NSTextFieldב€’“”nnc˜™0f€€€A €?€B_{{17, 115}, {53, 17}}Ø45 ¡¢§©ij¬lŒ;´o€D€G€€C€@€>@USize:Õ@ABCrsFG€F€E€7€:\controlColorÓKBxfGK0.66666669€:Õ@ABCQ|FG€=€H€7€:_controlTextColorב€’“”nnƒ˜™…†€€€J €h€K_{{72, 67}, {128, 26}}ߟ§£¥‰Š‹¨Œ¦©¢ž ޤ‘¯’“”g•f–—˜˜›¬˜ž¯VNSMenuZNSMenuItem_NSSelectedIndex_NSPreferredEdge]NSAltersState_NSUsesItemFromMenu_NSArrowPosition€Lÿÿÿÿ„Aþ@‚@ÿ€P€O€M€g €I€N€ KÔ¹º»¼½¾Ç€€ÒvÉx€ÒvÉx€Ü‰§¨©ª«¬­®¯°“²³¯´µµ†¸¹fº]NSMnemonicLoc_NSKeyEquivModMaskWNSStateWNSTitleYNSOnImageZNSKeyEquivXNSTarget\NSMixedImageUNSTagXNSAction€Pÿÿÿ€Q€R€€K€V€Y€XÓª¼½¾¿[NSMenuItems€Z€f€[UCrossÓÂ2ÃÄÅ^NSResourceName€T€U€SWNSImage_NSMenuCheckmarkÒ78ÉÊ£ÊË;_NSCustomResource_%NSCustomResourceÓÂ2ÍÄÅ€W€U€S_NSMenuMixedState__popUpItemAction:Ò78ÓŠ¢Š;ÒvÕxZOtherViews€Ò>ØQ¤Ùڔ܀\€_€O€b€eÛ‰§¨ª«¬­®¯°“²³àµµ†¸¹¯æ€P€]€R€€K€V€Y€^ZHorizontalÛ‰§¨ª«¬­®¯°“²³êµµ†¸¹gð€P€`€R€€K€V€Y€aXVerticalÛ‰§¨ª«¬­®¯°“²³ôµµ†¸¹úû€P€c€R€€K€V€Y€dSBoxÒ78þÿ£ÿ;^NSMutableArrayWNSArrayÒ78‰¢‰;Ò78§ÍÎÏ”;_NSPopUpButtonCell^NSMenuItemCellÒ78 ¦ ÒÓÔÕ;]NSPopUpButtonב€’“”nn ˜™0€€€j €?€k_{{17, 73}, {58, 17}}Ø45 ¡¢§©ij¬Ž;´o€D€G€€l€i€>VForm: _{{1, 1}, {339, 152}}Ò78Ô£ÔÕ;_{{0, 0}, {1440, 938}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò78!"¢";_NSWindowTemplate\medianWindowÒ78%&£&';_NSNibOutletConnector^NSNibConnectorÔSTUŠ*X0€+€v€t€ZsizeSliderÔSTU‹0X0€2€x€t€YsizeFieldÔSTU‰6X0€$€z€t€^separableCheckÔSTU<X0€I€|€t€ZformSelectÔSTU0BCŠ€€~€€+[changeSize:Ò78GH£H';_NSNibControlConnectorÔSTU0KC‡€€€€YfilterOK:ÔSTU0QC‰€€ƒ€€$_parametersChanged:ÔSTU0WC€€…€€IÔSTU0\Cˆ€€‡€€\filterCancelÒ>aq¯“VÜŒn‰”ŽÙ‡ˆÚŠ‹€P€ €b€@€€$€O€i€I€\€€€_€+€2€‰Ò78s¢;Ò>uq¯0“nVn“nn“nn“nn€I€€P€€ €€P€€€P€€€P€€€‰Ò>‡q®“V0Œ‰”ŽÙ‡ˆÚŠ‹€P€ €€@€$€O€i€I€\€€€_€+€2€‰Ò>˜q®™š›œžŸ ¡¢£¤¥¦€€Ž€€€‘€’€“€”€•€–€—€˜€™€š€‰YPopUpListUPanel\File's Owner\NSTextField2YNSButton4[NSMenuItem2]NSTextField21YNSButton1[NSMenuItem1YNSSlider2Ò>³q €‰Ò>¶q €‰Ò>¹q¯PGŠÜVH”ŽOˆ‡I‹0LÙNJMÚ“nKŒ‰€†€ €+€b€ €u€I€O€i€„€€€w€2€€}€\€‚€y€€€_€P€€{€@€$€‰Ò>Öq¯×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïð€Ÿ€ €¡€¢€£€¤€¥€¦€§€¨€©€ª€«€¬€­€®€¯€°€±€²€³€´€µ€¶€·€¸€‰!      Ò> Q €eÒ> q €‰Ò>q €‰Ò78¢;^NSIBObjectData#,1:LQVdfãé4Fbt‹™µÂÕÜêø ,:DKMOQSUWY[]_acegikmox„†ˆ’›¤¯´ÃÌßèóôöÿ"79;=?ACEGIKM^lt}ƒ…¶ÊÜæô&3=IKMOQSUWY[dfh‚‰‘𤩫´»ÍÖçò .02468:<>@]is|ƒ…‡‰Š‘©Þð &5JXjvŒ™›Ÿ¡£¥§°²´¹»ÀÇØßæïôöøû.024>?AJUbp}†‘𤫷ÔÖØÚÛÝß÷ , . 0 2 4 6 8 : A C ` b d f g i k ƒ ¸ º ¼ ¾ À Â Ç É Ë Í × à ì î ð ù    : < > @ A C E ^ — ¬ º Ð í ø   ! # % ' ( 1 : < = B K M ^ c e g p y † š £ À Â Ä Æ Ç É Ë ä   % ' ) + - / 1 : ? A V ^ j w … ‡ ‰ ‹ ” ª · ¿ Â Ä Í Ò ç é ë í ï ù    / 8 E Q ^ { }  ‚ „ † ž ¿ Á Ã Å Ç É Ë Ð Ö ë í ï ñ ó 02468Khjlnoqs‹Úáìþ3EGPUWY[^`efhjlmo€‚„˜šËÙíõý(.79>CEGIKMOQ^jlnpvƒ’”–˜ ²»ÂÕéöøúü#,1:EGPY[]_ac’”–˜šœž «ØÚÜÞàâäæèñ "$&(*,.04=DS[dir•¤­ºÈåçéëìîð(*,.024;R[bz…¢«°ÃÐÙà÷*;=?ACM^`bdfu†ˆŠŒŽ™ª¬®°²¾ÇÎæ÷ùûýÿ  "7HJLNPacegiv ¢¤¦¨ª¬®°²´¶¸º¼¾ÀÉÎ×øúüþ  !>@BDFHJLNPRTVXZ\e‚„†ˆŠŒŽ’”–˜šœž ª°½ÊÔàîø#$&/fhjlnprtvxz|~€‚„†ˆŠŒŽ’”–˜šœ¥ÜÞàâäæèêìîðòôöøúüþ   "$&(*,.02468:<>GHJSTV_`bkpPRICE-1.3.0/English.lproj/Median.nib/objects.nib010064400017500000012000000053631134276076100204740ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCMedian†…†„i–„„„NSMenuÌ”„i@@@„„„NSMutableString˜˜ OtherViews†„„„NSMutableArray„„NSArray”™’„„„ NSMenuItemŸ”’™„ i@@IIi@@@@:i@„˜˜ Horizontal†„˜˜†‚‚ÿÿÿ…„„„NSCustomResource)”–„˜˜NSImage†„˜˜NSMenuCheckmark††…„¥–¦„˜˜NSMenuMixedState††„_popUpItemAction:…’„„„NSPopUpButtonCell1„„NSMenuItemCellÒ„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚„Aþ@‚„@@@@…„„„NSFont”™$„[36c]þÿLucidaGrande„f „c­­­†……„i:…’…’„„„ NSPopUpButtonÌ„„NSButton„„ NSControl)„„NSView)„„ NSResponder”’„¶’…™„ @@@@ffffffff„ž™’„´’¸™‚€´…………Ù T T ’¸’…’…’…„icc@„­¨‚þ‚8©„˜˜Filter†°……®…’…’º„ ssii@@@@@È‚†‚@ÿ£„˜˜ †…„±™„[28c]þÿHelvetica¬ ­­­­†…††’„´’¸™‚€´…………€ T T ’¸’…’…’…µ„­¨‚þ‚8©„˜˜Cancel†°……®…’…’¿¶È‚†‚@ÿ£„˜˜†…¾…††’„´’¸™‚€´…………íHTT’¸’…’…’…µ„­¨‚þ©„˜˜ Separable†°……®…’…’öÈ‚H®¨‚„1þA‚@©„˜˜3†°……®…’…’Ï„c@@„„„NSColor”­„@@@„˜˜System†„˜˜textBackgroundColor†„Õ­„ff††„Õ­ÀÖ„˜˜ textColor†„Õ­Á†††’…„:…†’„Ð’¸™‚€´…………s55’¸’…’…’…µ„Ò¨‚þ‚@©„˜˜Size:†°……®…’…’ܾ„Õ­ÀÖ„˜˜ controlColor†„Õ­Áƒ?*ª«††„Õ­ÀÖ„˜˜controlTextColor†Û††’…Â…†’²’„Ð’¸™‚€´…………I::’¸’…’…’…µ„Ò¨‚þ‚@©„˜˜Form: †°……®…’…’ä¾ß→…Â…††………S˜S˜’…’…’…’…†™‚€´…………HC€€’¸’…’…’…µª†¶K‚‚@ÿ„œ˜†„œ˜†…„±™$«þÿLucidaGrande¬ ­­­­†…–„¡’™ „˜˜Cross†£‚‚ÿÿÿ…¤…¨¢…’ª’…†…„i@i‚=™†’…†’„¡’™ „˜˜Vertical†£‚‚ÿÿÿ…¤…¨¢…’ª’…†’ê’„¡’™ „˜˜Box†£‚‚ÿÿÿ…¤…¨¢…’ª’…††…†²–„„„NSWindowTemplateø”„ iiffffi@@@@@cImS˜‚ðx„˜˜Median†„˜˜NSPanel†„œ˜View†¸…„ffff ª­ÁÕ’…­Áƒÿîƒÿ–ܸ–¸ð–ø–Ꙗ世²¸– ™–º¸–¿¸–왖ɸ–ϸ™–™„˜˜ PopUpList†–ð„˜˜Panel†–•„˜˜ File's Owner†–Ü„˜˜ NSTextField2†–Ę˜ NSButton4†–ꄘ˜ NSMenuItem2†–䄘˜ NSTextField21†–²„˜˜ NSPopUpButton†– „˜˜ NSMenuItem†–º„˜˜NSButton†–¿„˜˜ NSButton1†–섘˜ NSMenuItem1†–É„˜˜ NSSlider2†–Ï„˜˜ NSTextField†’„„„ NSMutableSet„„NSSet”„I†’„ž™ ’„„„NSNibOutletConnectorÏ„„NSNibConnector”À•ð„˜˜ medianWindow††’„À•É„˜˜ sizeSlider††’„À•Ï„˜˜ sizeField††’„À•Ę˜separableCheck††’„À•²„˜˜ formSelect††’„„„NSNibControlConnectorÏ ÀÉ•„˜˜ changeSize:††’„Àº•„˜˜ filterOK:††’„ÀÕ„˜˜parametersChanged:††’„À²•„˜˜parametersChanged:††’„À¿•„˜˜ filterCancel†††’…™„@i!ÍÍÉ ÍîÍðÍ ͲÍêÍäÍ Í¿ͺÍ ÍÏ Í•ÍÍ ÍÍÍÍì Í™͸ÍÍÜ Íà ™"™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/PRWindow.nib004075500017500000012000000000001245331715400166005ustar00multixusersPRICE-1.3.0/English.lproj/PRWindow.nib/classes.nib010064400017500000012000000022231205100445200207660ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = MyDocument; LANGUAGE = ObjC; SUPERCLASS = NSDocument; }, {CLASS = MySound; LANGUAGE = ObjC; SUPERCLASS = Sound; }, {CLASS = PRImageView; LANGUAGE = ObjC; SUPERCLASS = NSImageView; }, { ACTIONS = { changeSaveType = id; scaleFromMenu = id; scalePanelCancel = id; scalePanelOk = id; setCompressionLevel = id; }; CLASS = PRWindowController; LANGUAGE = ObjC; OUTLETS = { fileTypePopUp = NSPopUpButton; imageInfoLine = NSTextField; jpegCompressionField = NSTextField; jpegCompressionSlider = NSSlider; saveOptionsView = NSView; scalePanel = NSPanel; scalePanelScaleField = NSTextField; scalePopUp = NSPopUpButton; view = PRImageView; }; SUPERCLASS = NSWindowController; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/PRWindow.nib/info.nib010064400017500000012000000012241205100445200202640ustar00multixusers IBDocumentLocation 166 142 356 240 0 0 1440 938 IBEditorPositions 103 282 374 496 130 0 0 1440 938 IBFramework Version 489.0 IBOldestOS 1 IBOpenObjects 103 5 59 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/PRWindow.nib/keyedobjects.nib010064400017500000012000000303431205100445200220100ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯; 156<=AEX`vwxyz‚‰•–¦§¯°³½¾¿ÄÆËÌÏÓÚëñÿ !"#$/36:;>IJKNVJWX[bc†ŠŽ¤©ˆª¯°±µ¹º»½ÀÏÙºÚäºåîºïøºùººº#º$.º/9º:DºEGMQXYbghkpqrtuvyz~ƒ„‰•–—˜šŸ¦­®©¹¾ÅÆÐÑÔÕÖØÚáâêëíïö÷þÿt #$)*/05<DEXZ^adejqr{€‡ˆ”—™¢¦º§©­®³´¹º¿ÆÍÎÖרÙØÛÜ&?XwOYZÕÕO[\]h^ÕPh_YZ`aeižÓÔÕºÖרÙÚÛÜÝÞßàáâãäåæçèéêëìí€îïðñòóôõ)ö÷øùúûüýþÿç U$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€ê7€ë9€:€€ì€è8€€t€Ò234[NSClassName€€_PRWindowControllerÒ789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FW¯GHIJKLMNOPQRSTUV€ €ˆ€Š€¯€±€³€¶€¸€º€¼€¾€È€Ì€Ù€Û€Ý€4ÔYZ[0]^_]NSDestinationWNSLabelXNSSource€€†€‡€ Ûabcdefghijklmnopqrstu_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRect\NSWindowViewYNSWTFlags[NSViewClass€„€ € € €ƒ€ x€…€_{{161, 142}, {507, 405}}VWindowXNSWindowTViewÔ{|}~.€ZNSSubviews_NSNextResponderWNSFrame€€€€‚Ò>ƒW¤„…†‡€€"€@€y€4×|Š}‹Œrr‘’“”[NSSuperviewYNSEnabledXNSvFlagsVNSCell€€€ €!€_{{119, 187}, {269, 22}}Ø—˜™š›œžŸ ¡„£¤¥_NSBackgroundColor[NSTextColorYNSSupportZNSContents]NSControlView[NSCellFlags\NSCellFlags2€€€€€€ þ@_Your document contents hereÔ¨©ª«¬­®VNSSizeVNSNameXNSfFlags"A€€\LucidaGrandeÒ78±²¢²;VNSFontÕ´µ¶·¸¹º»¼WNSColor[NSColorName\NSColorSpace]NSCatalogName€€€€VSystem\controlColorÓÀ¶Á¼WNSWhiteK0.66666669€Ò78Å´¢´;Õ´µ¶·ÇȺ»¼€€€€_controlTextColorÓÀ¶ͼB0€Ò78ÐѤÑÒ;_NSTextFieldCell\NSActionCellÒ78ÔÕ¦ÕÖרÙ;[NSTextField\%NSTextFieldYNSControlVNSView[NSResponderÛ{|ŠÛ}ÜŒÝÞßàrrãäåæçèãê]NSNextKeyView[NSHScrollerXNSsFlags[NSVScroller]NSContentView€#€€€$€>€;2€7€$€?Ò>ìW£ãèå€$€7€;€4Ú{|ŠÛòóô}Œõ……øžøûüýþYNSBGColorYNSDocViewYNScvFlags€%€"€"€&€€&€5 €6Ò>W¡ø€&€4Û|Š‹Œ2ãã ‘’ ‘[NSFrameSize_NSOriginalClassName[NSDragTypesZNSEditable€0€$€$€( €3€1€) €'[PRImageView[NSImageViewÒ>@¦€*€+€,€-€.€/€_Apple PDF pasteboard type_1NeXT Encapsulated PostScript v1.2 pasteboard type_NeXT TIFF v4.0 pasteboard type_NSFilenamesPboardType_Apple PICT pasteboard type_Apple PNG pasteboard typeZ{438, 313}×%&'(œ)*+*,-.WNSScaleWNSStyleZNSAnimatesWNSAlign€2þÒ7801¤12;[NSImageCell\%NSImageCellÒ7845¢5;^NSClassSwapperÒ7878£89;^NSMutableArrayWNSArray_{{1, 1}, {490, 363}}Ò78<=¤=ØÙ;ZNSClipViewØ|Š?@}ŒA……D…F’GHZNSCurValueXNSTargetXNSAction€"€""?T¦Ú€"€8€:€9_{{491, 1}, {15, 363}}\_doScroller:Ò78LM¥MרÙ;ZNSScrollerÙ|Š?@}ŒÝA……Q…S’)GU€"€""; %€"€<€:€=_{{1, 364}, {490, 15}}_{{0, 26}, {507, 380}}Ò78YZ¤ZØÙ;\NSScrollView×|Š}‹Œrr^‘’`a€€€A €x€B_{{2, 1}, {128, 22}}ßdœefghijklm›n™opqrs)tuvûwÂxyz‘†}r‘€)_NSAlternateImage^NSButtonFlags2]NSButtonFlagsVNSMenuZNSMenuItem_NSSelectedIndex_NSAlternateContents_NSPreferredEdge_NSPeriodicDelay]NSAltersState_NSKeyEquivalent_NSUsesItemFromMenu_NSPeriodicInterval_NSArrowPosition€Cÿÿÿÿ„Aþ@‚@ÿ€H€G€D€w €@€F€C KÔ¨©ª‚¬­…"A0€€ Ò‡ˆ‰YNS.stringP€EÒ78‹Œ£Œ;_NSMutableStringXNSStringÒ‡ˆ‰€EÜg‘’“”•–@—˜Auš›)œža ¡¢£]NSMnemonicLoc_NSKeyEquivModMaskWNSStateWNSTitleYNSOnImageZNSKeyEquiv\NSMixedImageUNSTag€Hÿÿÿ€I€K€J€B€O€Rd€QÓ”¥¦§¨[NSMenuItems€S€v€TS100Ó«2¬­®^NSResourceName€M€N€LWNSImage_NSMenuCheckmarkÒ78²³£³´;_NSCustomResource_%NSCustomResourceÓ«2¶­®€P€N€L_NSMenuMixedState__popUpItemAction:Ò78¼h¢h;Ò‡¾‰ZOtherViews€EÒ>ÁW¬ÂÃÄÅvÇÈÉÊËÌÍ€U€X€[€^€G€a€d€g€j€m€p€s€4Ûg‘’”•–@—˜Auš›Ñža ¡×Ø€H€V€K€J€B€O€R €WT12.5Ûg‘’”•–@—˜Auš›Üža ¡âã€H€Y€K€J€B€O€R€ZR25Ûg‘’”•–@—˜Auš›çža ¡çí€H€\€K€J€B€O€R€]R50Ûg‘’”•–@—˜Auš›ñža ¡€÷€H€_€K€J€B€O€R€`R75Ûg‘’”•–@—˜Auš›ûža ¡€H€b€K€J€B€O€R–€cS150Ûg‘’”•–@—˜Auš›ža ¡  €H€e€K€J€B€O€RÈ€fS200Ûg‘’”•–@—˜Auš›ža ¡x€H€h€K€J€B€O€R€iS400Ûg‘’”•–@—˜Auš›ža ¡!"€H€k€K€J€B€O€Rÿÿÿÿÿÿÿÿ€l^Fit verticallyÛg‘’”•–@—˜Auš›&ža ¡,-€H€n€K€J€B€O€Rÿÿÿÿÿÿÿþ€o_Fit horizontallyÛg‘’”•–@—˜Auš›1ža ¡78€H€q€K€J€B€O€Rÿÿÿÿÿÿÿý€rSFitÛg‘’”•–@—˜Auš›<ža ¡BC€H€t€K€J€B€O€Rÿÿÿÿÿÿÿü€ugCustom &Ò78Fg¢g;Ò78HI§IJKLÒ;_NSPopUpButtonCell^NSMenuItemCell\NSButtonCell]%NSButtonCellÒ78NO¦OPרÙ;]NSPopUpButtonXNSButton×|Š}‹ŒrrT‘’“W€€€z €!€{_{{144, 7}, {254, 14}}Ø—˜™š›œZ[rž‡£`a€|€€C€J€y€ ÿÿÿÿ„þ@Õ´µ¶·cdº»¼€~€}€€_textBackgroundColorÓÀ¶i¼B1€Õ´µ¶·Çmº»¼€€€€€YtextColor_{{1, 9}, {507, 405}}Ò78sØ£ØÙ;_{{0, 0}, {1440, 938}}Y{94, 108}Ò78wx¢x;_NSWindowTemplateXdelegateÒ78{|£|};_NSNibOutletConnector^NSNibConnectorÔYZ[ø€^0€&€‰€‡€TviewÔYZ[…†^0€‹€®€‡€ÛacdefgŠhij‹ŒŽ‘’t”YNSMaxSize€¬€€Ž€Œ€«€­€0x€…€_{{389, 370}, {213, 107}}TZoomWNSPanelÒ‡y‰€EÔ{|}›.€‘€€ª€‚Ò> W¤¡¢£¤€’€—€ €¦€4×|Š}‹Œ‘‘©‘’“¬€€€“ €!€”_{{107, 68}, {86, 22}}Ù—˜™š›¯œZ[²³¡‘£·¸_NSDrawsBackground€|€€–€•€’ € ÿÿÿÿ”qþA@Ô¨©ªº¬­½"AP€€×|Š}‹Œ‘‘Á‘’ÃÄ€€€˜ €Ÿ€™_{{115, 12}, {84, 32}}Ýnd™š›epflœjÇȲʢ)âÌÍ ¤žÏ€€›€–€š€—ÿÿÿÿ†‚@ÿ€ž€J8SSetÔ¨©ªºÒ­®€œ€YHelveticaQ Ò78×K¥KLÒ;Ò78ÙP¥PרÙ;×|Š}‹Œ‘‘Ý‘’Ãà€€€¡ €Ÿ€¢_{{31, 12}, {84, 32}}Ýnd™š›epflœjãȲæ£)âÌÍ ¤éÏ€¥€›€–€£€ €ž€¤VCancelÒ‡ˆ‰€EÒ‡ˆ‰€E×|Š}‹Œ‘‘ò‘’“õ€€€§ €!€¨_{{17, 70}, {78, 17}}Ø—˜™š›œžŸ²û¤£¤a€€€–€©€¦€ VZoom: _{{1, 1}, {213, 107}}Z{213, 129}_{3.40282e+38, 3.40282e+38}ZscalePanelÔYZ[¡^0€’€°€‡€_scalePanelScaleFieldÔYZ[‡ ^0€y€²€‡€]imageInfoLineÔYZ[0†€€´€µ€@^scaleFromMenu:Ò78£};_NSNibControlConnectorÔYZ[0¢€€·€µ€—]scalePanelOk:ÔYZ[0 £€€¹€µ€ _scalePanelCancel:ÔYZ[†&^0€@€»€‡€ZscalePopUpÔYZ[_,^0€ €½€‡€VwindowÔYZ[024€€Ç€µ€¿×|Š}‹Œ668‘’:;€À€À€Á €Æ€ÂÖ={|2>?.ABC[NSExtension€å€Þ€€ã€æ€ä_{{150, 9}, {128, 26}}ÞFG™š›HIJKLMœ)NOP4û+STUN+W*_NSTickMarkPosition]NSAltIncValue_NSNumberOfTickMarks_NSAllowsTickMarkValuesOnlyZNSMaxValueWNSValueZNSMinValueZNSVertical#€Ä€Ã€¿#@Y#@RÀ€ÅÿÒ‡ˆ‰€EÔ¨©ª[Ò­®"A@€œ€Ò78_`¤`Ò;\NSSliderCellÒ78bc¥cרÙ;XNSSlider_setCompressionLevelÔYZ[02i€€Ç€µ€É×|Š}‹Œ66m‘’“p€À€À€Ê €!€Ë_{{320, 16}, {61, 22}}Ù—˜™š›¯œZ[²ži‘£·z€|€€–€J€É € @ÔYZ[|}^0€Í€Ø€‡€×|Š}‹Œ66ƒ‘’`†€À€À€Î €x€Ï_{{18, 51}, {141, 26}}ßdœefghjklm›n™opq‰s)tŠ‹žÂxyŽ‘|‘²‘€)€Ð€Ó€Ò€J€w €Í€Ñ€– Ô¨©ªº¬­®€€Ò‡ˆ‰€EÛg‘’“”•–@—AŠš›)›ž† ¡¡€Ó€Ô€K€J€Ï€O€R€ÕÓ”¥£§¥€Ö€v€×UItem1Ò‡¾‰€EÒ>ªW¡‹€Ò€4]fileTypePopUpÔYZ[4°^0€¿€Ú€‡€_jpegCompressionSliderÔYZ[i¶^0€É€Ü€‡€_jpegCompressionFieldÔYZ[6¼^0€À€ç€‡€Ò>ÀW¤4|Ãi€¿€Í€ß€É€4×|Š}‹Œ66É‘’“Ì€À€À€à €!€á_{{18, 18}, {114, 17}}Ø—˜™š›œžŸ²Òã¤Õ€€€–€â€ß€ @VLevel:Y{476, 88}Ò78ÙÚ¤ÚØÙ;\NSCustomView_saveOptionsViewÒ>Ýÿ¯!£̇u4Ë„¡‘6øŠ‹i¢Ãr¤Ê_ÅÈÍÂ…|…ÃÄv†ÉÇ€ €p€y€H€¿€m€€’€€À€&€Ó€Ò€É€—€X€€¦€j€ €^€d€s€U€‹€Í€"€ß€[€G€@€g€a€éÒ789¢9;Ò>ÿ¯!‘ur†6ur‘…0…|Š6‘u_‘u0uuuu06r6uuruu€€H€€@€À€H€€€‹€€"€Í€Ó€À€€H€ €€H€€H€H€H€H€€À€€À€H€H€€H€H€éÒ>'ÿ¯Ã_r|ÄŠi‡†460‹£¡¢ÂĤu…€X€ €€Í€ß€€Ó€É€y€@€¿€À€€Ò€ €’€—€U€[€¦€H€‹€éÒ>@ÿ¯ABžDEžGHIJKLMNOPQRSTUV€í€î€J€ï€ð€J€ñ€ò€ó€ô€õ€ö€÷€ø€ù€ú€û€ü€ý€þ€ÿ€é[NSMenuItem1\NSTextField2YPopUpListYNSSlider2[SaveOptions\File's OwnerYNSButton1[NSMenuItem2YZoomPanelÒ>bÿ¡ø€&€éÒ>fÿ¡€'€éÒ>jÿ¯2ÍO4rÊ…QV‹N£ŠÂ|i6_‡†S‘HT…u„GJPIøÈ¤ÇÅvK0ÉËÃÄÃMULR¡Ì¢€s€º€¿€€j€‹€¾€Ý€Ò€¸€ €Ó€U€Í€É€À€ €y€@€Ì€€ˆ€Ù€"€H€€ €¯€¼€Š€&€d€¦€a€^€G€±€€g€m€X€[€ß€¶€Û€³€È€’€p€—€éÒ>Ÿÿ¯2 ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑ      !"#$%&'()*+,-./0123456€é3Jh0;nskI?j)img4'p<q%&DA.@-+,E/1(*lHrFo=>Ò>W €4Ò>ÿ €éÒ>ÿ €éÒ78  ¢ ;^NSIBObjectData#,1:LQVdfàæ1C_q|ˆ–²¿ÒÙçõ)7AHJMPSUX[^`cegilnprt}‰‹¢«´¿ÄÓÜïø#)2UWY[]_acegikmoqsuwˆ–ž§©«­¯Üð (5BOYegikmoqsuz|~™ ©®¿ÊÜäæèêìõþ%1;DKMOQRUWYs”¨´¾É×ãðòôöøúü$5<CLQSUWdmryŽ–¢¯½¿ÁÃÅÇÎÛèðüþ  # % ' ) + > K N P Y b t Š — £ ° º Á Í ú    ) 7 9 ; = ? A C F H J L N W ^ ` b d f ™ £ ­ ¯ ± ³ µ · ¹ » ½ À Â Ë Î Ð Ò ÿ ! - 8 : < > @ A C E G H J V b k x z | ~ € ‚ „ † ¢ Ö ÷  , H S p x € ‹ “ • — ˜ š Ÿ ¤ ­ ¶ Â Ï Ø Ý ì õ ü  * 3 < G h s | … ‡ ‰ Ž ’ ” – ® » Ä Ï Ú ÿ  (@IR_|~€‚ƒ…‡ìÿ#.@Vhzˆš¯ÄÖØáæèêìïñö÷ùûýþ&013<CU^giš¨¼ÄÌÖáîôöû  )+-/3@OQSU]ox’¦³µ·¹Ìàéî÷ &(*,.02468:<>@moqsuwy{}„±³µ·¹»½¿ÁÃÆóõ÷ùûýÿ3579;=?ACFsuwy{}ƒ…‰¶¸º¼¾ÀÂÄÆÈÌùûýÿ  :<>@BDFHQSb‘“•—™›¦¨»èêìîðòôöÿ2468:<>@IKZchq€”£°¾ÇÔâë  +LNPRTVXaf{}ƒ™¦©«ÀÂÄÆÈÒéòù$)<ENUl{ŒŽ’”™ª¬®°²ßéëíïñóõ÷üþ (13DFHJLU^`bdfh…‡‰‹ŒŽ¨Íáãåçéëìî÷ü 68:<=?AYŽ’”–˜¡£¥ª®¿ÁÃÍÏØãì÷6kmoqsuwy€‰‹”–³µ·¹º¼¾Õöøúüþ  +HSdfhjlƒ”–˜šœª»½¿ÁÃÒÛâú  !2468:N_acegrƒ…‡‰‹’£¥§©«ÈÊÌÎÏÑÓìøúüþUjxŽ«¶¾ÉÔÝßáãäíöøùþ !#,5BKV_u†ˆŠŒŽ«­¯±²´¶Îóõ÷ùûýþ;=?ABDF^©«­¯±³¸¹»½¿ÀÑÓÕÞà         * , . 0 6 ? A J M O Q _ p r t v x ¡ £ ¥ § © À Ñ Ó Õ × Ù â ë í ï ñ ó õ!!!!!!!!5!V!X!Z!\!^!`!b!g!n!x!!Š!—!©!²!÷!ù!û!ý!ÿ""""" " " """"""""""!"#"%"'")"+"-"/"1"3"5"7"9";"D"I"R"—"™"›""Ÿ"¡"£"¥"§"©"«"­"¯"±"³"µ"·"¹"»"½"¿"Á"Ã"Å"Ç"É"Ë"Í"Ï"Ñ"Ó"Õ"×"Ù"Û"ä########!###%#'#)#+#-#/#1#3#5#7#9#;#=#?#A#J#y#{#}###ƒ#…#‡#‰#‹###‘#“#•#—#™#›##Ÿ#¡#£#¦#¨#´#Á#Ë#Õ#á#î#ø$$$$$$$'$*$,$.$7$ž$ $¢$¤$¦$¨$ª$¬$®$°$²$´$¶$¸$º$¼$¾$À$Â$Ä$Æ$È$Ê$Ì$Î$Ð$Ò$Ô$Ö$Ø$Ú$Ü$Þ$à$â$ä$æ$è$ê$ì$î$ð$ò$ô$ö$ø$ú$ü$þ%%%% %t%w%z%}%€%ƒ%†%‰%Œ%%’%•%˜%›%ž%¡%¤%§%ª%­%°%³%¶%¹%¼%¿%Â%Å%È%Ë%Î%Ñ%Ô%×%Ú%Ý%à%ã%æ%é%ì%ï%ò%õ%ø%û%þ&&&& & &&&&&&&&&& &"&$&&&(&*&,&.&0&2&4&6&8&:&<&>&@&B&D&F&H&J&L&N&P&R&T&V&X&Z&\&^&`&b&d&f&h&q&r&t&}&~&€&‰&Š&Œ&•&š &©PRICE-1.3.0/English.lproj/PRWindow.nib/objects.nib010064400017500000012000000112711205100445200207650ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+PRWindowController†…†„i!–„„„NSButton„„ NSControl)„„NSView)„„ NSResponder”’„œ’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’„„„ NSTextField›’ž™‚€ž…………kDVV’ž’…’…’…„icc@„„„NSTextFieldCell>„„ NSActionCell„„NSCellA”„ii‚”qþA‚@„@@@@„˜˜100†„„„NSFont”™$„[36c]þÿLucidaGrande„f „c«««†……„i:…’…’¢„c@@„„„NSColor”«„@@@„˜˜System†„˜˜textBackgroundColor†„¬«„ff††„¬«¯­„˜˜ textColor†„¬«°†††’…„:…†’„š’ž™‚€ž…………s T T ’ž’…’…’…¢„„„ NSButtonCell?¦¦‚þ‚8§„˜˜Set†©……¬…’…’³„ ssii@@@@@È‚†‚@ÿ„˜˜†„˜˜ †…„ª™„[28c]þÿHelveticaª ««««†…††’™’„£’ž™‚€ž…………FNN’ž’…’…’…¢„¥¦‚þ‚@§„˜˜Zoom: †©……¬…’…’º­„¬«¯­„˜˜ controlColor†„¬«°ƒ?*ª«††„¬«¯­„˜˜controlTextColor†²††’…±…††………ÕkÕk’…’…’…’…†™‚€ž………… T T ’ž’…’…’…¢„µ¦‚þ‚8§„˜˜Cancel†©……¬…’…’™³È‚†‚@ÿ„„„NSMutableString˜˜†„؆…¹…††ž–„„„ NSMenuItemŸ”’„„„NSMenuÌ”„i@@@„Ř OtherViews†„ ™ ’„È’É„ i@@IIi@@@@:i@„˜˜12.5†·‚‚ÿÿÿ…„„„NSCustomResource)”–„˜˜NSImage†„˜˜NSMenuCheckmark††…„Жф˜˜NSMenuMixedState††„_popUpItemAction: …’„„„NSPopUpButtonCell1„„NSMenuItemCellÒµ¦‚„Aþ@‚§…„ª™$©þÿLucidaGrandeª «««« †……¬…’…’„„„ NSPopUpButtonÌš’„œ’…™ž„ ™’„£’Û™‚€ž…………w»  ’Û’…’…’…¢„¥¦‚þ‚@§„˜˜Your document contents here†„ª™$©þÿLucidaGrandeª««««†……¬…’…’Ý­½À†’…±…†’„„„ NSScrollView✒ۙ‚€ž„ ™’„„„ NSClipView:œ’ᙂÀž„ ™’„„„NSClassSwapper*”„@#„˜˜ PRImageView†„„ NSImageView›’䙂€ž………„„„ NSMutableSet„„NSSet”„I’„˜˜Apple PDF pasteboard type†’„˜˜1NeXT Encapsulated PostScript v1.2 pasteboard type†’„˜˜NeXT TIFF v4.0 pasteboard type†’„˜˜NSFilenamesPboardType†’„˜˜Apple PICT pasteboard type†’„˜˜Apple PNG pasteboard type††¶9¶9’ä’…’…’…¢„„„ NSImageCell)§¦‚þ‚§…………„iii†«††………êkêk’á’…’ç’…’ç„@@ccc½…†’„„„ NSScrollerÓ›’ᙂ€ž…………ëkk’á’…’…’…¢…’á„ff:ƒ?T¦Ú„ _doScroller:««†’„÷’ᙂ€ž…………lêê’á’…’…’…¢…’á˃; %Ì««††………û|û|’Û’…’ä’…’ö’ø’ä’…’…„ffffi ‚Ć’Ù’„£’Û™‚€ž…………þþ’Û’…’…’…¢„¥¦‚„þ‚@§·Ø……¬…’…’ù­«°†’…±…††……… û•û•’…’…’…’…†™‚€ž…………€€’Û’…’…’…¢Õ†³K‚‚@ÿ„؆„؆…Ø…–„Ȓɹ„˜˜100†·‚‚ÿÿÿ…Ï…Ó»d…’Õ’…†…„i@i‚=Ɇ’…†’„Ȓɹ„˜˜25†·‚‚ÿÿÿ…Ï…Ó»…’Õ’…†’„Ȓɹ„˜˜50†·‚‚ÿÿÿ…Ï…Ó»2…’Õ’…†’„Ȓɹ„˜˜75†·‚‚ÿÿÿ…Ï…Ó»K…’Õ’…†’ý’„Ȓɹ„˜˜150†·‚‚ÿÿÿ…Ï…Ó»–…’Õ’…†’„Ȓɹ„˜˜200†·‚‚ÿÿÿ…υӻȅ’Õ’…†’„Ȓɹ„˜˜400†·‚‚ÿÿÿ…Ï…Ó»…’Õ’…†’„Ȓɹ„˜˜Fit vertically†·‚‚ÿÿÿ…Ï…Ó»ÿ…’Õ’…†’„Ȓɹ„˜˜Fit horizontally†·‚‚ÿÿÿ…Ï…Ó»þ…’Õ’…†’Ç’„Ȓɹ„˜˜ Custom…†·‚‚ÿÿÿ…Ï…Ó»ü…’Õ’…††…†¹„˜˜Fit†·‚‚ÿÿÿ…Ï…Ó»ý…’Õ’…†É–ùÛ–ÉÙ–„„„NSSlider›’„„„ NSCustomView)œ’…™ž„ ™’’„Ú’™‚€ž…………3’’…’…’…¢„Ö¦‚„Aþ@‚§…©……¬…’…’³K‚‚@ÿ·„؆…„ª™$©þÿLucidaGrandeª ««««†…–„È’„ʸ„Ř OtherViews†„ ™’†…†¹„˜˜Item1†·‚‚ÿÿÿ…Ï…Ó»…’’…†…΂=††’„£’™‚€ž…………rr’’…’…’…¢„¥¦‚þ‚@§„˜˜Level:†©……¬…’…’ ­½À†’…±…†’„£’™‚€ž…………@==’’…’…’…¢„¥¦‚”qþA‚@§·©……¬…’…’#­«°†’…±…††………ÜXÜX’…’…’…’…–„˜˜NSView†„˜˜ NSResponder††™‚€ž…………– €€’’…’…’…¢„„„ NSSliderCell⦦‚ÿ§„؆„ª™´þÿHelveticaª ««««†……¬…’…’„ddddiiidK††– É–ÝÛ–¢ž–ž„„„NSWindowTemplateø”„ iiffffi@@@@@c…rÕk‚0x„˜˜Zoom†„˜˜NSPanel†„ŘView†ž…„ffff ª«°Õ’…«°ƒÿîƒÿ•–çá–––#–³ž–ÿÉ–Û„,Ô¡Žû•‚ x„˜˜Window†„˜˜NSWindow†„˜˜View†Û…Õ ª«°^l’…«°†–ºž– É–0•–É–É–É–ÍÉ–+•––áÛ– –É–ýÉ–ÙÛ– É–É™–ÿ„˜˜ NSMenuItem1†–0„˜˜Window†–Û·–„˜˜ NSPopUpButton†– „˜˜ NSTextField2†–Ý·–„˜˜ PopUpList†–#„˜˜ NSTextField†–ù„˜˜ NSTextField†–Ù„˜˜ NSPopUpButton†–„˜˜ NSSlider2†–„˜˜ SaveOptions†–•„˜˜ File's Owner†–„˜˜ NSMenuItem†–™„˜˜ NSButton1†–¢„˜˜ NSTextField†–³„˜˜NSButton†–Í„˜˜ NSMenuItem†–„˜˜ NSMenuItem2†–º„˜˜ NSTextField2†–É„˜˜ PopUpList†–+„˜˜ ZoomPanel†’„ìÆ†’„ ™’„„„NSNibOutletConnectorÏ„„NSNibConnector”¯0•„˜˜delegate††’„K¯•焘˜view††’„K¯•+„˜˜ scalePanel††’„K¯•¢„˜˜scalePanelScaleField††’„K¯•ù„˜˜ imageInfoLine††’„„„NSNibControlConnectorÏL¯Ù•„˜˜scaleFromMenu:††’„W¯³•„˜˜ scalePanelOk:††’„W¯™•„˜˜scalePanelCancel:††’„K¯•Ù„˜˜ scalePopUp††’„K¯•0„˜˜window††’„W¯•„˜˜setCompressionLevel††’„W¯#•b†’„K¯•„˜˜ fileTypePopUp††’„K¯•„˜˜jpegCompressionSlider††’„K¯•#„˜˜jpegCompressionField††’„K¯•„˜˜saveOptionsView†††’…™2„@i3Ù]JÙhÙÛÙ 0Ù+;ÙanÙjsÙkÙ[IÙ™?ÙjÙÍ)ÙiÙ#mÙgÙ0Ùù4ÙÙ'ÙdpÙž<ÙNÙfqÙá%ÙÉ&ÙÝÙJÙRDÙ_KÙPAÙçÙ.Ùº@Ù-Ù+Ùý,ÙTEÙ•Ù /Ù 1Ùÿ(Ù*Ù lÙYHÙhrÙVFÙcoÙ¢=ÙÇ2Ù³>™t™–çé’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/Preview.nib004075500017500000012000000000001245331715400165105ustar00multixusersPRICE-1.3.0/English.lproj/Preview.nib/classes.nib010064400017500000012000000020411237374162700207170ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { CLASS = PRFilterController; LANGUAGE = ObjC; OUTLETS = { buttContinuous = NSButton; buttPreview = NSButton; preview = NSWindow; view = NSImageView; }; SUPERCLASS = NSObject; }, {CLASS = PRImageView; LANGUAGE = ObjC; SUPERCLASS = NSImageView; }, { ACTIONS = {cleanPreview = id; scaleFromMenu = id; updatePreview = id; }; CLASS = PRPreviewController; LANGUAGE = ObjC; OUTLETS = { activityDescription = NSTextField; buttContinuous = NSButton; previewWindow = NSPanel; progressBar = NSProgressIndicator; scalePopUp = NSPopUpButton; view = PRImageView; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/Preview.nib/info.nib010064400017500000012000000007631237374162700202260ustar00multixusers IBDocumentLocation 119 213 356 240 0 0 1440 938 IBFramework Version 489.0 IBOldestOS 1 IBOpenObjects 20 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/Preview.nib/keyedobjects.nib010064400017500000012000000212641237445717700217520ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯Î 156<=AEQYstuvz~†›œ¶·¿ÀÃÄÆËÑØÙæçìíîòíöù "234=>?@ABCDMQTXYcdejlo|}~‰}Ћޖ—¢§¨«®²½¿ÂÃÆÍÎåéëÿ   *+45>?HIST^_ijlpstvwxyz}~‚‡ˆŽ“”—œ¢£¨©®¯´µÊÌáïýþÿrÍÐ  ,KL¯MNOPQRSTUVWXYZ[\]^_`abc®dehknU$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€œ€Ê€«€¬€€ª€Ì€­€€Í€€ž€š€Ë€€0€Ò234[NSClassName€€_PRPreviewControllerÒ789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FP©GHIJKLMNO€ €‰€‹€€€’€”€–€˜€:ÔRSTUVW0]NSDestinationWNSLabelXNSSource€ €‡€ˆ€ÝZ[\]^_`abcdefghijklmnopqr_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass_NSFrameAutosaveName€ƒ€ € € €‚€„€`x€†€€…_{{510, 434}, {456, 345}}WPreviewWNSPanelÒwxyYNS.stringTView€Ò78{|£|};_NSMutableStringXNSStringÔ€‚.„…ZNSSubviews_NSNextResponderWNSFrame€€€€€Ò>‡P¦ˆ‰Š‹Œ€€€(€K€S€X€:×€‘’“nn–—˜™š[NSSuperviewYNSEnabledXNSvFlagsVNSCell€€€ €€_{{14, 37}, {85, 32}}ÝžŸ ¡¢£¤¥¦§¨©ªª¬ˆ®¯°±²³´µ_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2€€€€€ÿÿÿÿ†‚@ÿ€Èþ€VUpdateÔ¸¹º»¼½¾VNSSizeVNSNameXNSfFlags"AP€€\LucidaGrandeÒ78Á¢Â;VNSFontPÒwÃy€Ò78ÇÈ¥ÈÉÊ“;\NSButtonCell]%NSButtonCell\NSActionCellÒ78ÌÍ¥ÍÎÏÐ;XNSButtonYNSControlVNSView[NSResponder×€‘’“nnÔ—˜™×€€€ €€_{{18, 12}, {95, 18}}ÞžÚŸ ¡¢£¤¥¦§¨´Üݪ߉g¯á±²ã´å]NSNormalImage€€%€!€€ €H P£€*€B€F€:Ú€ú’ŠŠYNSBGColorYNSDocViewYNScvFlags€+€(€(€,€<€,€; €AÒ>P¡€,€:Û#€$‘’“%&2'*—,-./—1[NSFrameSize_NSOriginalClassName[NSDragTypesZNSEditable€6€*€*€. €9€7€/ €-[PRImageView[NSImageViewÒ>5@¦6789:;€0€1€2€3€4€5€_Apple PDF pasteboard type_1NeXT Encapsulated PostScript v1.2 pasteboard type_NeXT TIFF v4.0 pasteboard type_NSFilenamesPboardType_Apple PICT pasteboard type_Apple PNG pasteboard typeZ{216, 123}×EFGH¦¨®åIåJKLWNSScaleWNSStyleZNSAnimatesWNSAlign€8þÒ78NO¤OP“;[NSImageCell\%NSImageCellÒ78RS¢S;^NSClassSwapperÒ78UV£VW;^NSMutableArrayWNSArray_{{1, 1}, {439, 253}}ÕZ[\]^_`abWNSColor[NSColorName\NSColorSpace]NSCatalogName€?€>€=€@VSystem\controlColorÓf\ghbWNSWhiteK0.66666669€@Ò78kZ¢Z;Ò78mn¤nÏÐ;ZNSClipViewÙ€pq’rsŠŠvŠx,yz{ZNSCurValueXNSTargetYNSPercentXNSAction€(€("?€€(€C€E"?sƒ€D_{{440, 1}, {15, 253}}\_doScroller:Ò78€¥€ÎÏÐ;ZNSScrollerÙ€q’ürsŠŠŠ…,®y‡ˆ€(€(€(€G€E"?s¶F€H_{{1, 254}, {439, 15}}_{{0, 75}, {456, 270}}Ò78Œ¤ÏÐ;\NSScrollView×€‘’“nn‘—“”•€€€L €R€M_{{293, 13}, {146, 17}}ؘ™Ÿ ¡¦¨›ª´‹Ÿ ¡_NSBackgroundColor[NSTextColor€<€N€€€K€Qþ@@ÕZ[\]£¤`ab€P€O€=€@_controlTextColorÓf\©hbB0€@Ò78¬­¤­Ê“;_NSTextFieldCellÒ78¯°¦°±ÎÏÐ;[NSTextField\%NSTextFieldØ€³´’µnn¸¹vº»¼YNSpiFlagsZNSMaxValue\NSDrawMatrix€€€V€T€WѾ€UÒ78ÀÁ¢Á;ZNSPSMatrix_{{294, 43}, {152, 20}}Ò78ÄŤÅÏÐ;_NSProgressIndicator×€‘’“nnÉ—˜ËÌ€€€Y €€Z_{{132, 41}, {130, 26}}ßž¦¢¤ÏÐѧÒ¥¨Ó¡ŸÔ£ÕÖ×®ØÙÚh´hÜÝÞ—᪗ä®VNSMenuZNSMenuItem_NSSelectedIndex_NSPreferredEdge]NSAltersState_NSUsesItemFromMenu_NSArrowPosition€[ÿÿÿÿ„Aþ@‚@ÿ€^€]€€~ €X€\€ KÔ¸¹º»¼½è€€ÒwÃy€ÜÏìíîïðñqòósÙõö®÷ø´Ìûüýþ]NSMnemonicLoc_NSKeyEquivModMaskWNSStateWNSTitleYNSOnImageZNSKeyEquiv\NSMixedImageUNSTag€^ÿÿÿ€_€`€€Z€b€ed€dÓï[NSMenuItems€f€}€gS100Óè2êë€a€$€"_NSMenuCheckmarkÓè2 êë€c€$€"_NSMenuMixedState__popUpItemAction:Ò78ТÐ;ÒwyZOtherViews€Ò>P¨Ú€h€k€n€]€q€t€w€z€:ÛÏìíïðñqòósÙõö"ø´Ìûü()€^€i€`€€Z€b€e €jT12.5ÛÏìíïðñqòósÙõö-ø´Ìûü¯3€^€l€`€€Z€b€e€mR25ÛÏìíïðñqòósÙõö7ø´Ìûü=€^€o€`€€Z€b€e€pR50ÛÏìíïðñqòósÙõöAø´Ìûü²G€^€r€`€€Z€b€e€sS200ÛÏìíïðñqòósÙõöKø´ÌûüQR€^€u€`€€Z€b€eÿÿÿÿÿÿÿÿ€v^Fit verticallyÛÏìíïðñqòósÙõöVø´Ìûü\]€^€x€`€€Z€b€eÿÿÿÿÿÿÿþ€y_Fit horizontallyÛÏìíïðñqòósÙõöaø´Ìûügh€^€{€`€€Z€b€eÿÿÿÿÿÿÿý€|SFitÒ78kÏ¢Ï;Ò78mn§noÈÉÊ“;_NSPopUpButtonCell^NSMenuItemCellÒ78qr¦rÍÎÏÐ;]NSPopUpButton_{{1, 1}, {456, 345}}Ò78uÏ£ÏÐ;_{{0, 0}, {1440, 938}}Z{213, 129}_{3.40282e+38, 3.40282e+38}\PreviewPanelÒ78{|¢|;_NSWindowTemplate]previewWindowÒ78€£€;_NSNibOutletConnector^NSNibConnectorÔRST„W0€,€Š€ˆ€TviewÔRST‰ŠW0€€Œ€ˆ€^buttContinuousÔRST0‘ˆ€€Ž€€^updatePreview:Ò78•–£–;_NSNibControlConnectorÔRST‹™W0€K€‘€ˆ€_activityDescriptionÔRSTŒŸW0€S€“€ˆ€[progressBarÔRST¥W0€X€•€ˆ€ZscalePopUpÔRST0«‘€€—€€X^scaleFromMenu:ÔRST0±WU€€™€ˆ€ XdelegateÒ>¶ɯÙ‹ˆÚŒU‰nŠ€,€^€K€€]€S€ €€n€w€z€k€h€€(€t€q€X€›Ò78ËW¢W;Ò>ÍɯŠnnÙn0nÙÙÙÙÙUnÙÙn€(€X€€€^€€€€^€^€^€^€^€ €€^€^€€›Ò>âÉ«‹ˆUÙ‰0Œ€z€K€w€X€€ €t€^€€€S€›Ò>ðÉ«ñòóôõö÷øùúû€Ÿ€ €¡€¢€£€¤€¥€¦€§€¨€©€›[NSMenuItem2\NSTextField2[NSMenuItem1UPanelYPopUpListYNSButton4\File's OwnerQ1Ò>É¡€,€›Ò> É¡1€-€›Ò>ɯˆHLMÚGNÙJIŒOŠnU‰K0‹€€,€‰€n€’€w€”€]€q€ €–€^€z€€‹€k€S€˜€X€h€t€(€€ €€€€K€›Ò>-ɯ./0123456789:;<=>?@ABCDEFGHI€®€¯€°€±€²€³€´€µ€¶€·€¸€¹€º€»€¼€½€¾€¿€À€Á€Â€Ã€Ä€Å€Æ€Ç€È€É€›*"&-().$'+!/#,% Ò>fP €:Ò>iÉ €›Ò>lÉ €›Ò78op¢p;^NSIBObjectData#,1:LQVdf Vh„–¡­»×ä÷þ (BN\fmoqsuwy{}ƒ…‡‰‹‘š¦¨ªÀÉÒÝâñú !"$-4AGPcegikmoqsuwˆ–ž§©«­¯äø "0=JTakw‘“•—™›Ÿ¤¦¨ªÅÍÕÞèíïøÿ+6HPRTVXanprtvxz|™¥¯¸¿ÁÃÅÆÉËÍä+>HSap…“¥±ÇÔÖØÚÜÞàâëíïôöû!*/136CLQXYbdmx…“ ©´½ÇÎÚ÷ùûýþ   R ` b d f h j l q s | ~ € ‹ ˜ § © « ­ µ ¾ Ç Î á õ þ    2 _ m y ‚ Ž œ ž   ¢ ¤ ¦ ¨ « ­ ¯ ± ³ ¼ Ã Å Ç É Ë ô þ         " % ' 0 3 5 7 d p † ’ Ÿ ¡ £ ¥ ¦ © « ­ ¯ ° ² ¾ Ê Ó à â ä æ è ê ì î > _ w ” ° » Ø à è ó û ü þ     & 3 < A P Y ` o w Ž £ « · Ä Ò Ô Ö Ø Ú Ü ã ð ý#,5@epyƒŒŽ•—™› ¢ºÇÐÛæ  4LU^kˆŠŒŽ’”–¯Ðäðòôöøúü!#6CFHQZlu‚Ž›¼ÆÑÞàâäæéëíòôý &/8NkmoqrtvÞåð"7IKTY[]_bdijlnpqs„†ˆŠ“•ÆÔèðø  "',.02468:<IUWY[_lnpr„‘“•—ª¾ÇÌÕàâëüþ  ;=?ACEGIKMRƒ…‡‰‹’¿ÁÃÅÇÉËÍÏÒÿ   @BDFHJLNWYh•—™›Ÿ¡£¬®Áîðòôöøúü "1ET]jx˜Ÿ·Âßìõú $+BQbdfhjo€‚„†ˆ—¨ª¬®°¿ÈÏçøúüþ')+-/;LNPRT_prtvx‡˜šœž ©²ÙÛÝßáãåçéëíïñóõ÷ùûýÿ =?ACEGIKMOQSUWY[]_aclƒ…‡‰‹‘“•—™›¤»½¿ÁÃÅÇÉËÍÏÑÓßìøþ!*-/1:=?AJ…‡‰‹‘“•—™›Ÿ¡£¥§©«­¯±³µ·¹»½¿È   !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqz{}†‡‰’“•ž£q²PRICE-1.3.0/English.lproj/Preview.nib/objects.nib010064400017500000012000000062031237445717700207240ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+PRPreviewController†…†„i–„„„NSClassSwapper*”„@#„˜˜ PRImageView†„„ NSImageView„„ NSControl)„„NSView)„„ NSResponder”’„„„ NSClipView:ž’„„„ NSScrollViewâž’„ž’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’„„„NSButton’¤™‚€¢…………%U U ’¤’…’…’…„icc@„„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚þ‚„@@@@„˜˜Update†„„„NSFont”™$„[36c]þÿLucidaGrande„f „c¯¯¯†……„i:…’…’¨„ ssii@@@@@È‚†‚@ÿ„˜˜†„„„NSMutableString˜˜†…¯…††’„©’¤™‚€¢………… __’¤’…’…’…¦„«ª‚„þ«„˜˜ Continuous†¯……°…’…’´±È‚H¬ª‚þ@‚@«±¯……°…’…’¾„c@@„„„NSColor”¯„@@@„˜˜System†„˜˜ controlColor†„ï„ffƒ?*ª«††„ï¹Ä„˜˜controlTextColor†„ﺆ††’…„:…†’„„„NSProgressIndicatorÜž’¤™‚A€¢…„„„ NSPSMatrix”„[12f]¯¯¯†……&+˜˜’¤’…’…’…„ccddc†’„„„ NSPopUpButtonÌ©’¤™‚€¢…………„)‚‚’¤’…’…’…¦„„„NSPopUpButtonCell1„„NSMenuItemCellÒ«ª‚„Aþ@‚«…¯……°…’…’αK‚‚@ÿ±„³˜†…„°™$­þÿLucidaGrande® ¯¯¯¯†…–„„„ NSMenuItemŸ”’„„„NSMenuÌ”„i@@@„³˜ OtherViews†„¦™’„֒ׄ i@@IIi@@@@:i@„˜˜12.5†±‚‚ÿÿÿ…„¸–¹„˜˜NSMenuCheckmark††…„¸–¹„˜˜NSMenuMixedState††„_popUpItemAction: …’Ð’…†’„֒ׯ„˜˜25†±‚‚ÿÿÿ…Ý…ßÇ…’Ð’…†’„֒ׯ„˜˜50†±‚‚ÿÿÿ…Ý…ßÇ2…’Ð’…†’Õ’„֒ׯ„˜˜200†±‚‚ÿÿÿ…Ý…ßÇÈ…’Ð’…†’„֒ׯ„˜˜Fit vertically†±‚‚ÿÿÿ…Ý…ßÇÿ…’Ð’…†’„֒ׯ„˜˜Fit horizontally†±‚‚ÿÿÿ…Ý…ßÇþ…’Ð’…†’„֒ׯ„˜˜Fit†±‚‚ÿÿÿ…Ý…ßÇý…’Ð’…††…†Æ„˜˜100†±‚‚ÿÿÿ…Ý…ßÇd…’Ð’…†…„i@i‚=׆††………ÈYÈY’…’…’…’…†™‚€¢„¦™’ ’„„„ NSScrollerÓ’¢™‚€¢…………¸ýý’¢’…’…’…¦…’¢„ff:ƒ?sƒ„ _doScroller:¯¯†’„ð’¢™‚€¢…………þ··’¢’…’…’…¦…’¢Êƒ?s¶F˯¯††………KÈÈ’¤’…’ ’…’ï’ñ’ ’…’…„ffffi ‚Ć™‚À¢„¦™’™†………·ý·ý’¢’…’™’…’™„@@cccÂ…†™‚€¢………„„„ NSMutableSet„„NSSet”„I’„˜˜Apple PDF pasteboard type†’„˜˜1NeXT Encapsulated PostScript v1.2 pasteboard type†’„˜˜NeXT TIFF v4.0 pasteboard type†’„˜˜NSFilenamesPboardType†’„˜˜Apple PICT pasteboard type†’„˜˜Apple PNG pasteboard type††Ø{Ø{’ ’…’…’…¦„„„ NSImageCell)­ª‚þ‚«…………„iii†¯†¢–×Ζ¾¤–¨¤–Õזʤ–„„„NSWindowTemplateø”„ iiffffi@@@@@cþ²ÈY‚`x„˜˜Preview†„˜˜NSPanel†„³˜View†¤…„ffff ª¯ºÕ’„˜˜ PreviewPanel†¯ºƒÿîƒÿ–´¤–ã×–é×–ë×–á×–Û×–¤þ–¢¤–ç×–åזΤ™ –넘˜ NSMenuItem2†–¾„˜˜ NSTextField2†–鄘˜ NSMenuItem1†–΄˜˜ NSPopUpButton†–¨„˜˜NSButton†–þ„˜˜Panel†–焘˜ NSMenuItem†–ׄ˜˜ PopUpList†–´„˜˜ NSButton4†–•„˜˜ File's Owner†–Ê„˜˜1†’„ôІ’„¦™ ’„„„NSNibOutletConnectorÏ„„NSNibConnector”¹•þ„˜˜ previewWindow††’„¹•™„˜˜view††’„¹•´„˜˜buttContinuous††’„„„NSNibControlConnectorϹ¨•„˜˜updatePreview:††’„¹•¾„˜˜activityDescription††’„¹•Ê„˜˜ progressBar††’„¹•΄˜˜ scalePopUp††’„¹Î•„˜˜scaleFromMenu:††’„¹þ•„˜˜delegate†††’…™„@i¨Ù™ÙÙã*Ù"Ùé&Ù -ÙÕ(Ùå)ÙÙ".Ù×$Ùë'ÙÙÙá+ÙÊ!Ù$/ÙÎ#ÙÛ,Ùç%٢٤Ùþٴ٠ٕپ™0™–™›’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/ProgressPanel.nib004075500017500000012000000000001245331715400176535ustar00multixusersPRICE-1.3.0/English.lproj/ProgressPanel.nib/classes.nib010064400017500000012000000007371006656154600220710ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {showProgress = id; }; CLASS = PRCProgress; LANGUAGE = ObjC; OUTLETS = { activityDescription = NSTextField; progressBar = NSProgressIndicator; progressPanel = NSWindow; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/ProgressPanel.nib/info.nib010064400017500000012000000007031006656154600213600ustar00multixusers IBDocumentLocation 74 193 356 240 0 0 1152 848 IBFramework Version 283.0 IBOpenObjects 5 IBSystem Version 6R73 PRICE-1.3.0/English.lproj/ProgressPanel.nib/objects.nib010064400017500000012000000021261006656154600220570ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCProgress†…†„i–„„„NSWindowTemplateø”„ iiffffi@@@@@c^õk‚px„˜˜ Progress…†„˜˜NSPanel†„„„NSMutableString˜˜View†„„„NSView)„„ NSResponder”’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’„„„NSProgressIndicatorÜ ’Ÿ™‚@Ÿ…„„„ NSPSMatrix”„[12f]„c¥¥†……CÑÑ’Ÿ’…’…’…„ccddc†’„„„ NSTextField„„ NSControl) ’Ÿ™Ÿ…………ÍÍ’Ÿ’…’…’…„icc@„„„NSTextFieldCell>„„ NSActionCell„„NSCellA”„ii‚„þ‚@„@@@@„˜˜†„„„NSFont”™$„[36c]þÿLucidaGrande„f ¥¥¥¥†……„i:…’…’©„c@@„„„NSColor”¥„@@@„˜˜System†„˜˜textBackgroundColor†„´¥„ff††„´¥µµ„˜˜ textColor†„´¥¶†††’…„:…††………õkõk’…’…’…’…†…„ffff€P¥¶Õ’…¥¶ƒÿîƒÿ–Ÿ™–¥Ÿ–©Ÿ™–¥„˜˜1†–•„˜˜ File's Owner†–™„˜˜Panel†–©„˜˜ NSTextField†’„„„ NSMutableSet„„NSSet”„I†’„£™’„„„NSNibOutletConnectorÏ„„NSNibConnector”µ•™„˜˜ progressPanel††’„ĵ•¥„˜˜ progressBar††’„ĵ•©„˜˜activityDescription†††’…™„@i•¾™¾Ÿ¾¥¾Ã¾© ¾Ç ¾É ™™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/Scale.nib004075500017500000012000000000001245331715400161165ustar00multixusersPRICE-1.3.0/English.lproj/Scale.nib/classes.nib010064400017500000012000000020031134446122100203050ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { changePercentX = id; changePercentY = id; changePixelsX = id; changePixelsY = id; }; CLASS = PRCScale; LANGUAGE = ObjC; OUTLETS = { methodSelect = NSPopUpButton; percentXField = NSTextField; percentYField = NSTextField; pixelsXField = NSTextField; pixelsYField = NSTextField; scaleWindow = NSWindow; uniformToggle = NSButton; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/Scale.nib/info.nib010064400017500000012000000007601146636206200176230ustar00multixusers IBDocumentLocation 51 81 356 240 0 0 1440 938 IBFramework Version 489.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.3.0/English.lproj/Scale.nib/keyedobjects.nib010064400017500000012000000212531146636206200213430ustar00multixusersbplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯Û 156<=AEW_wxyz~‚Šš¦§xÁÉÊÍÑÒÓØÞåæîïð÷ø #'./7>?GNOW^_lmrstxs|†‡•–™žŸ¦§®¯¶·¾¿ÆÇÎÏÖ×îñóõ  %./359<CDKLMOPQRUVZ_`efinotuz{€†‡Œ’“˜™žŸ¤¥ª«ª°ÅÇÜñ;%   Ú Ù ?defghijk lmnoº¹pqrstuvwxyz{Ð|}~€‚…ˆ‹U$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€œ€×€²€³€€±€Ù€´€€Ú€€ž€š€Ø€€+€Ò234[NSClassName€€XPRCScaleÒ789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FV¯GHIJKLMNOPQRSTU€ €}€€‚€„€†€ˆ€Š€Œ€Ž€€’€”€–€˜€mÔXYZ[\]0]NSDestinationWNSLabelXNSSource€ €{€|€Ü`abcdefghijklmnopqrstuv_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€x€ € € €w€y€px€z€_{{105, 324}, {272, 232}}UScaleWNSPanelÒ{|}YNS.stringTView€Ò78€£€;_NSMutableStringXNSStringÔƒ„…†.ˆ‰ZNSSubviews_NSNextResponderWNSFrame€€€u€vÒ>‹V­ŒŽ‘’“”•–—˜€€€#€0€3€6€9€D€M€Q€U€Y€q€mׄ›…œžss¡¢£¤¥[NSSuperviewYNSEnabledXNSvFlagsVNSCell€€€ €€_{{174, 12}, {84, 32}}ݨ©ª«¬­®¯°±²³´µ¶·Œ¹º»¼½¾´À_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2€€€€€ÿÿÿÿ†‚@ÿ€Èþ€8ÔÂÃÄÅÆÇÈVNSSizeVNSNameXNSfFlags"AP€€\LucidaGrandeÒ78ËÌ¢Ì;VNSFontÔÂÃÄÅÎÇЀ€YHelveticaPÒ78ÔÕ¥ÕÖמ;\NSButtonCell]%NSButtonCell\NSActionCellÒ78ÙÚ¥ÚÛÜÝ;XNSButtonYNSControlVNSView[NSResponderׄ›…œžssᢣ¤ä€€€ €€ _{{90, 12}, {84, 32}}ݨ©ª«¬­®¯°±²³çµ¶ê¹º»¼½¾´À€"€€€!€€€VCancelQׄ›…œžssó¢£õö€€€$ €/€%_{{78, 165}, {78, 22}}Ùùúª«¬û±³üý¶´Ž¢_NSBackgroundColor[NSTextColor_NSDrawsBackground€&€+€€€# €.ÿÿÿÿ”qþA@Õ     WNSColor[NSColorName\NSColorSpace]NSCatalogName€)€(€'€*VSystem_textBackgroundColorÓkWNSWhiteB1€*Ò78¢;Õ   €-€,€'€*YtextColorÓkB0€*Ò78!"¤"מ;_NSTextFieldCellÒ78$%¦%&ÛÜÝ;[NSTextField\%NSTextFieldׄ›…œžss*¢£õ-€€€1 €/€2_{{78, 125}, {78, 22}}Ùùúª«¬û±³üý¶´¢€&€+€€€0 €.ׄ›…œžss:¢£õ=€€€4 €/€5_{{174, 165}, {78, 22}}Ùùúª«¬û±³üý¶´¢€&€+€€€3 €.ׄ›…œžssJ¢£õM€€€7 €/€8_{{174, 125}, {78, 22}}Ùùúª«¬û±³üý¶´‘¢€&€+€€€6 €.ׄ›…œžssZ¢£¤]€€€: €€;_{{172, 94}, {73, 18}}Þ¨©`ª«¬­®¯°±²³´bc¶e’lºg¼½i´k]NSNormalImage€€A€=€€<€9HWNSImageXNSSwitchÒ78uv£vw;_NSCustomResource_%NSCustomResourceÒyz{[NSImageName€B€CÒ78}~¢~;_NSButtonImageSourceׄ›…œžss‚¢£õ…€€€E €/€F_{{75, 195}, {84, 17}}Øùúª«¬±³ˆ‰¶‹“¾Ž€H€K€€G€D€.@]Pixels x els Õ ‘’  €J€I€'€*\controlColorÓ—kK0.66666669€*Õ ›  €-€L€'€*_controlTextColorׄ›…œžss¢¢£õ¥€€€N €/€O_{{171, 195}, {84, 17}}Øùúª«¬±³ˆ‰¶«”¾Ž€H€K€€P€M€.XPercent ׄ›…œžss²¢£õµ€€€R €/€S_{{17, 167}, {51, 17}}Øùúª«¬±³ˆ‰¶»•¾Ž€H€K€€T€Q€.VWidth ׄ›…œžss¢£õÅ€€€V €/€W_{{17, 127}, {56, 17}}Øùúª«¬±³ˆ‰¶Ë–¾Ž€H€K€€X€U€.WHeight ׄ›…œžssÒ¢£ÔÕ€€€Z €p€[_{{93, 56}, {162, 26}}ß©±­¯ØÙÚ²Û°³ܬ¨ªÝ®Þßà¹áâã¹äkåæ碗ê¶¢í¹VNSMenuZNSMenuItem_NSSelectedIndex_NSPreferredEdge]NSAltersState_NSUsesItemFromMenu_NSArrowPosition€\ÿÿÿÿ„Aþ@‚@ÿ€`€_€]€o €Y€^€ KÔÂÃÄÅÆÇЀ€Ò{Ò}€Ò{Ò}€ÜØö÷øùúûüýþÿâ¹´Õ¹ ]NSMnemonicLoc_NSKeyEquivModMaskWNSStateWNSTitleYNSOnImageZNSKeyEquivXNSTarget\NSMixedImageUNSTagXNSAction€`ÿÿÿ€a€b€€[€d€g€fÓù   [NSMenuItems€h€n€iXBilinearÓn2pq€c€@€>_NSMenuCheckmarkÓn2pq€e€@€>_NSMenuMixedState__popUpItemAction:Ò78Ù¢Ù;Ò{}ZOtherViews€Ò>!V¢"ã€j€_€mÚØö÷ùúûüýÿâ'´Õ-€`€k€b€€[€d€g€l_Nearest neighbourÒ7801£12;^NSMutableArrayWNSArrayÒ784Ø¢Ø;Ò7867§78ÕÖמ;_NSPopUpButtonCell^NSMenuItemCellÒ78:;¦;ÚÛÜÝ;]NSPopUpButtonׄ›…œžss?¢£õB€€€r €/€s_{{17, 62}, {114, 17}}Øùúª«¬±³ˆ‰¶H˜¾Ž€H€K€€t€q€.XMethod: _{{1, 1}, {272, 232}}Ò78NÜ£ÜÝ;_{{0, 0}, {1440, 938}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò78ST¢T;_NSWindowTemplate[scaleWindowÒ78WX£XY;_NSNibOutletConnector^NSNibConnectorÔXYZŽ\]0€#€~€|€\pixelsXFieldÔXYZ0bcŽ€€€€€#^changePixelsX:Ò78gh£hY;_NSNibControlConnectorÔXYZ0kc€€ƒ€€0^changePixelsY:ÔXYZ0qc€€…€€3_changePercentX:ÔXYZ0wc‘€€‡€€6_changePercentY:ÔXYZ’}]0€9€‰€|€]uniformToggleÔXYZƒ]0€3€‹€|€]percentXFieldÔXYZ‘‰]0€6€€|€]percentYFieldÔXYZ]0€0€€|€\pixelsYFieldÔXYZ—•]0€Y€‘€|€\methodSelectÔXYZ0›cŒ€€“€€YfilterOK:ÔXYZ0¡c€€•€€]filterCancel:ÔXYZ0§c—€€—€€Y_parametersChanged:ÔXYZ0­c’€€™€€9Ò>±į—Ž•┌’"˜[s“ã‘–€Y€0€#€Q€€`€M€€9€j€q€ €3€€D€_€6€U€›Ò78Æ2¢2;Ò>Èįsssss—sssâs0s[sâss€€€€€€Y€€€€`€€€€ €€`€€€›Ò>Ýį—Ž0•┌’"˜[“ã‘–€Y€0€#€€Q€€`€M€€9€j€q€ €3€D€_€6€U€›Ò>òįóôõö÷øùúûüýþÿ€Ÿ€ €¡€¢€£€¤€¥€¦€§€¨€©€ª€«€¬€­€®€¯€°€›\NSTextField1\File's Owner]NSTextField22YNSButton1YPopUpList^NSTextField211YNSButton4]NSTextField24UPanel\NSTextField2]NSTextField21[NSMenuItem1]NSTextField11]NSTextField23Ò>Ä €›Ò>Ä €›Ò>į"L[UŒJãsQHâM“0R–O•N”˜’‘KPIG—"STŽ€†€ €˜€€€‚€0€_€€€}€`€ˆ€D€€’€U€Œ€Q€Š€M€q€9€6€„€Ž€3€€ €Y€j€”€–€#€›Ò>@į"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab€µ€¶€·€¸€¹€º€»€¼€½€¾€¿€À€Á€Â€Ã€Ä€Å€Æ€Ç€È€É€Ê€Ë€Ì€Í€Î€Ï€Ð€Ñ€Ò€Ó€Ô€Õ€Ö€›*   &!'%#$() Ò>ƒV €mÒ>†Ä €›Ò>‰Ä €›Ò78Œ¢;^NSIBObjectData#,1:LQVdf%p‚ž°»ÇÕñþ&4B\hv€‡‰‹‘“•—™›Ÿ¡£¥§©«´ÀÂÄÍÖßêïþ#./1:ANT]~€‚„†ˆŠŒŽ’”–˜šœž¯½ÅÎÐÒÔÖ-7ES`mw„Žšœž ¢¤¦¨ª¬±³µÐÖÞçñöø#4?QY[]_aj…‡‰‹‘“•—™›Ÿ¡¾ÊÔÝäæèêëîðò ?Qdny‡–«¹Ë×íúüþ!29@INPRUbkpwˆŠŒŽ˜™¢­ºÈÕÞéòü   , . 0 2 3 5 7 N ƒ … ‡ ‰ ‹ ‘ ˜ š · ¹ » ½ ¾ À Â Ú ÿ   3 5 7 9 ; = > @ I N c k w „ ’ ” – ˜ š œ £ ¹ Æ Î Ñ Ó Ü á ö ø ú ü þ     # , > G T ` m Š Œ Ž ‘ “ • ­ Ò Ô Ö Ø Ú Ü Ý ß ü þ     E G I K M O P R o q s u v x z “ ¸ º ¼ ¾ À  à Šâ ä æ è é ë í  > L N P R T V X ] _ h j l t ’ ” – ž § ° · Ê Þ ç ó õ ÷8:<>?AC[|~€‚„†ˆ›°²´¶¸ÅÒÞàõ÷ùûý-/13468Qrtvxz|~‡¤¦¨ª«­¯Çèêìîðòôû!#;\^`bdfhp‘“”–˜°ÿ#5CXjluz|~€ƒ…Š‹‘’”¥§©²´½¿ðþ",7@MS\^chjlnprtvƒ‘“•ž«­¯±ÃÐÒÔÖéý !*/135^`bdfhjln‚‹’¡©²·ÀÏãòû3579:<>Vwy{}ƒŒ£¬³ËÖóü )0GVgikmo|‘“•¤­´ÌÝßáãåô   02468J[]_acq‚„†ˆŠ˜©«­¯±¿ÐÒÔÖØåöøúüþ  "$.?ACEGUfhjlnƒ”–˜šœ¥ÌÎÐÒÔÖØÚÜÞàâäæèêìîðòû 02468:<>@BDFHJLNPRTV_†ˆŠŒŽ’”–˜šœž ¢¤¦¨ª¬µÜÞàâäæèêìîðòôöøúüþ*4>MWekx†’ ®·¸ºÃÄÆÏ "$&(*,.02468:<>@BDFHJLNPRTVXZ\e¬®°²´¶¸º¼¾ÀÂÄÆÈÊÌÎÐÒÔÖØÚÜÞàâäæèêìîðòôöøúüþ   "$&(*,.78:CDFOPR[`ŽoPRICE-1.3.0/English.lproj/Scale.nib/objects.nib010064400017500000012000000063671146636206200203320ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+PRCScale†…†„i–„„„ NSPopUpButtonÌ„„NSButton„„ NSControl)„„NSView)„„ NSResponder”’„’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™ ’„›’Ÿ™‚€Ÿ…………® T T ’Ÿ’…’…’…„icc@„„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚þ‚8„@@@@„˜˜Scale†„„„NSFont”™$„[36c]þÿLucidaGrande„f „c«««†……„i:…’…’£„ ssii@@@@@È‚†‚@ÿ„˜˜†«…„ª™„[28c]þÿHelveticaª ««««†…††’„›’Ÿ™‚€Ÿ…………Z T T ’Ÿ’…’…’…¢„¥¦‚þ‚8§„˜˜Cancel†©……¬…’…’­­È‚†‚@ÿ«„˜˜†…¬…††’„„„ NSTextFieldœ’Ÿ™‚€Ÿ…………N¥NN’Ÿ’…’…’…¢„„„NSTextFieldCell>¦¦‚”qþA‚@§«©……¬…’…’±„c@@„„„NSColor”«„@@@„˜˜System†„˜˜textBackgroundColor†„¶«„ff††„¶«³·„˜˜ textColor†„¶«´†††’…„:…†’„²’Ÿ™‚€Ÿ…………N}NN’Ÿ’…’…’…¢„´¦‚”qþA‚@§«©……¬…’…’½±µº†’…µ…†’„²’Ÿ™‚€Ÿ…………®¥NN’Ÿ’…’…’…¢„´¦‚”qþA‚@§«©……¬…’…’¿±µº†’…µ…†’„²’Ÿ™‚€Ÿ…………®}NN’Ÿ’…’…’…¢„´¦‚”qþA‚@§«©……¬…’…’Á±µº†’…µ…†’„›’Ÿ™‚€Ÿ…………¬^II’Ÿ’…’…’…¢„¥¦‚„þ§„˜˜uniform†©……¬…’…’íÈ‚Hrr’Ÿ’…’…’…¢„´¦‚þ‚@§„˜˜Method: †©……¬…’…’Þ±ÐÓ†’…µ…††………èè’…’…’…’…†™‚€Ÿ…………]8¢¢’Ÿ’…’…’…¢„„„NSPopUpButtonCell1„„NSMenuItemCellÒ¥¦‚„Aþ@‚§…©……¬…’…’™­K‚‚@ÿ„„„NSMutableString˜˜†„嘆…„ª™$©þÿLucidaGrandeª ««««†…–„„„ NSMenuItemŸ”’„„„NSMenuÌ”„i@@@„å˜ OtherViews†„¡™’„é’ê„ i@@IIi@@@@:i@„˜˜Nearest neighbour†«‚‚ÿÿÿ…„Ç–È„˜˜NSMenuCheckmark††…„Ç–È„˜˜NSMenuMixedState††„_popUpItemAction:…’á’…†’膅†¾„˜˜Bilinear†«‚‚ÿÿÿ…ð…ò¿…’á’…†…„i@i‚=ꆆŸ–½Ÿ–±Ÿ–ØŸ–­Ÿ–ê™–ÕŸ–£Ÿ–ß–îê–ÞŸ–„„„NSWindowTemplateø”„ iiffffi@@@@@ciDè‚px„˜˜Scale†„˜˜NSPanel†„å˜View†Ÿ…„ffff ª«´Õ’…«´ƒÿîƒÿ–¿Ÿ–Ÿõ–ÍŸ–èê–ÁŸ–ÛŸ™–™„˜˜ NSPopUpButton†–½„˜˜ NSTextField1†–±„˜˜ NSTextField†–•„˜˜ File's Owner†–Ø„˜˜ NSTextField22†–­„˜˜ NSButton1†–ꄘ˜ PopUpList†–Õ„˜˜NSTextField211†–£„˜˜NSButton†–Ę˜ NSButton4†–˜ NSMenuItem†–Þ„˜˜ NSTextField24†–õ„˜˜Panel†–¿„˜˜ NSTextField2†–Í„˜˜ NSTextField21†–脘˜ NSMenuItem1†–Á„˜˜ NSTextField11†–Û„˜˜ NSTextField23†’„„„ NSMutableSet„„NSSet”„I†’„¡™’„„„NSNibOutletConnectorÏ„„NSNibConnector”³•õ„˜˜ scaleWindow††’„³•±„˜˜ pixelsXField††’„„„NSNibControlConnectorϳ±•„˜˜changePixelsX:††’„³½•„˜˜changePixelsY:††’„³¿•„˜˜changePercentX:††’„³Á•„˜˜changePercentY:††’„³•Ę˜ uniformToggle††’„³•¿„˜˜ percentXField††’„³•Á„˜˜ percentYField††’„³•½„˜˜ pixelsYField††’„³•™„˜˜ methodSelect††’„³£•„˜˜ filterOK:††’„³­•„˜˜ filterCancel:††’„³™•„˜˜parametersChanged:††’„³Ã•„˜˜parametersChanged:†††’…™"„@iÊõÊ/*Ê­ Ê£Êʽ Êè ÊŸÊ'&ÊÊê!ÊÊÍÊ•Ê)'ÊÛÊ#ÊØÊ!ÊÕÊÞ%ÊÃÊÁÊÊ%Ê¿ÊÊÊ™#Êî$Ê+(Ê-)ʱ ™+™’„˜˜IBCocoaFramework††PRICE-1.3.0/English.lproj/TraceEdges.nib004075500017500000012000000000001245331715400170755ustar00multixusersPRICE-1.3.0/English.lproj/TraceEdges.nib/classes.nib010064400017500000012000000017311134331762600213030ustar00multixusers{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { changeThreshold = id; filterTypeToggle = id; showEdges = id; thresholdToggle = id; }; CLASS = PRCTraceEdges; LANGUAGE = ObjC; OUTLETS = { edgeWindow = NSWindow; filterType = NSPopUpButton; thresholdCheck = NSButton; thresholdField = NSTextField; thresholdSlider = NSSlider; zeroCrossCheck = NSButton; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.3.0/English.lproj/TraceEdges.nib/objects.nib010064400017500000012000000056421134331762600213040ustar00multixusers typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCTraceEdges†…†„i–„„„NSButton„„ NSControl)„„NSView)„„ NSResponder”’„œ’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’„š’ž™ž…………Ö T T ’ž’…’…’…„icc@„„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚þ‚8„@@@@„˜˜Trace†„„„NSFont”™$„[36c]þÿLucidaGrande„f „cªªª†……„i:…’…’¢„ ssii@@@@@È‚†‚@ÿ„˜˜†„˜˜ †…„©™„[28c]þÿHelvetica© ªªªª†…††’™’„„„NSSlider›’ž™ž…………<¡¡’ž’…’…’…¡„„„ NSSliderCell⥥‚$ÿ¦„„„NSMutableString˜˜†„©™­þÿHelvetica© ªªªª†……«…’…’­„ddddiiiƒ?É™™™™™š ††’„š’ž™ž…………Ã|cc’ž’…’…’…¡„¤¥‚þ¦„˜˜ Threshold†¨……«…’…’´¬È‚H¥¥‚¤!þ‚@¦„˜˜0.2 †¨……«…’…’º„c@@„„„NSColor”ª„@@@„˜˜System†„˜˜textBackgroundColor†„Àª„ff††„Àª·Á„˜˜ textColor†„Àª¸†††’…„:…†’„„„ NSPopUpButtonÌš’ž™ž…………t££’ž’…’…’…¡„„„NSPopUpButtonCell1„„NSMenuItemCellÒ¤¥‚„Aþ‚¦…¨……«…’…’ǬK‚‚@ÿ„²˜†„²˜†…„©™$¨þÿLucidaGrande© ªªªª†…–„„„ NSMenuItemù”’„„„NSMenuÌ”„i@@@„²˜ OtherViews†„ ™ ’„Ð’Ñ„ i@@IIi@@@@:i@„˜˜Pixel Difference†ª‚‚ÿÿÿ…„„„NSCustomResource)”–„˜˜NSImage†„˜˜NSMenuCheckmark††…„ؖل˜˜NSMenuMixedState††„_popUpItemAction:…’É’…†’„Ð’ÑÀ„˜˜Separated PixDiff†ª‚‚ÿÿÿ…×…ÛÂ…’É’…†’„Ð’ÑÀ„˜˜Roberts†ª‚‚ÿÿÿ…×…ÛÂ…’É’…†’Ï’„Ð’ÑÀ„˜˜Sobel†ª‚‚ÿÿÿ…×…ÛÂ…’É’…†’„Ð’ÑÀ„˜˜Abdou†ª‚‚ÿÿÿ…×…ÛÂ…’É’…†’„Ð’ÑÀ„˜˜ Laplacian (4)†ª‚‚ÿÿÿ…×…ÛÂ…’É’…†’„Ð’ÑÀ„˜˜ Laplacian (8)†ª‚‚ÿÿÿ…×…ÛÂ…’É’…†’„Ð’ÑÀ„˜˜Laplacian (Prewitt)†ª‚‚ÿÿÿ…×…Û …’É’…††…†À„˜˜Prewitt†ª‚‚ÿÿÿ…×…ÛÂ…’É’…†…„i@i‚=ц†’„š’ž™ž…………Ãf[[’ž’…’…’…¡„¤¥‚þ¦„˜˜ Zero Cross†¨……«…’…’ì¬È‚H int main(int argc, const char *argv[]) { return NSApplicationMain(argc, argv); } PRICE-1.3.0/price128.icns010064400017500000012000001455511023614753100141010ustar00multixusersicnsËiit32‹Yí†MéˆMÆßîôü€ÿMÞˆM¼Öëñù‡ÿýøýÿMÔ‡M³ÏçïöˆÿúôæÖÊ»®œŠ~tbÐÿMɈMÃÛìñú‡ÿþûñäØÊ¼ªœohebb^UNLLUP¼ÿM¾ˆMºÓéî÷ˆÿ ûõæÕÇ·§—‡€…‚}wla\]€\ _cdd`YTRX[¹ÿM³ˆM°Ëãìôü‡ÿ/þùèÙǰŸ’‰~tipqkb]mfQ[is~„„{tkfc^]]_ba\US_t„ÉÿM¨ˆMÀØéîøˆÿ9üñæÙÏŹ¬Ÿ‘qWQI;63?OVUU_ldl–u^[blw…„zsjd`][[]^[ZnŽ©µÖÿçMˆMµÐäëôþ‡ÿDüôæÛÐż¯£™‡€}zxuph`VLX]gVNTNIT[^YX[TwuRW[]enzƒ…„€|tkd`\[[Zaƒ«ÁÉÇÕÿñM›MMªÈÞéðù‡ÿOþùìßÒÆ»¬Ÿ„xrqqrpmnqwxy{{zxrh\_YW_gh_Z[XMSXYSRO`}`QRUSTZh|„…ƒ€|tjd^ZZd”ÀÏÑÌ»¸ÿ÷M›M…ÿ(þ÷êÒ室˜ƒyqlga_aabhjoruwxy{pje`rzh\]a]]€[,^Z_WXKNQQMKGnmUKPVWUTSj}‚ƒ‚xric^e˜ËÙÖÍ·‘‡úþM›aM÷ÿÙÕáëõ÷ðàÄ•plprrtspmjhhiggfilmqvxyvoTVSOVmi\cc]b\UTWWTQQHIJKIEWt[MINSTUQRZlw€€|xpghšÓàÝϰwy÷ÿM›aMòÿ ¤ÍÙêôóëÛÀŽqrsqpokhdceddfggjlqfbiWbihc[UNffef]a[iYSOMIKHEFDDEidRDHOQRONWX[Yi…‚wnÌââÕ³‡“òÿM›Mëÿ¡ÔÚÞìòîå×´{hjlkhdc€`HbddghhmiQXifiefc_[S`daf[[W{zcJJFGFDFC@NkSHBHMLMMLORSMRZƒ’‰zÉÝáÖ´›¡­²¬ëÿM›aMÔÿ£ˆÓÜÖáððéáÑ jdfea_`^__YdjigmejS`^^de`fe`U`a\`bSq„€~lI@IDAFG@baQDFHJLFAEILPPSPI£ÐçâÖ¸¥³ÆÌʲàÿM›2Mºÿ«mÁØÔßóøïåÞŇ`_^\\^`_PSR`hR__^Rlaa`eedgg][a]e\b„€€+~€YAFADEKiWOGCCFB@EFJOQRUZISòíêܺ³ÂÒÙ×Ì¥ÏÿMœ1Mÿ¹aªÒÓàõøêÜÜ×®lYZ[\ZbVKURR[^al\KVV]afc`dd`T`]`V}‚€€+„…mKCB@]fTKBAC?EIGGKKORNMI8ëþܵ®ÌÜàßÕÀ‹¹ÿMœ0MÿÉY“ÇÒ×ÜØÇÁÏØÆŒ\YZ[dKFY]T_`]dXSbXQVY\b`b^^Ta_Vp…ƒ€*x|€]@HjXSB<@?AFDFHLNKNROON,2ü¦ÏäìæÛÌ­s¥ÿM›2MÿÚ\ŽÆÕÁœ’ŸÁÕШjXX{¢W4LZTZ^Z_XRq`NX]Ya^b_aWYZ`ƒ€€‚€*„srbbTJ=B=BD@HGFECITPSZPFµÒÆîùïàÒ»šl˜ÿìM›5Mÿëp¤ÌÏ­oar‘¾×Ø¿ˆ^Xƒ¦wKALTVXYXZ[TQVYV^`hfeVYW{ƒyky‚€€({y„kWED>EFCGCB@AHMPPQMMI:zðèûóæÑ»„n”ÿóM›aMÿõ‰³Ã³‘bXs¡ÊßàÔ•Tb? |§p^POTTUV\bRSVSRV^`ce^Nm„€~p„g~ˆ€€…t~tR@CHCDFIDGKLJILJHLQLsöò÷çÓ¬‹wrmŠþúM›aMþû›«Ÿlm“¿Ùçêâ@4V]T@htpsYROUVXTUSSYV?ACioiqdTNTVVZWYXBZ¡€zxÃùa%‰•ak‡ƒ€€ƒ|w„sWV\chjkf`cbmjfe`i]w±©’ƒmÑÿM›2M²ÿ¬CPQLLg“¹Þ½c`TUPMLD>=?HrkmwfTPUWYYb]>•~rªþÿí,€+>€‡ÿÑ’w]}‡€€„z~wgcnrhcefliggeabeq¥¹–ƒeÈÿMœ-Mÿ¹ENPPJPx¤Ðe&WOROMONKF?;Deuh}ƒ~n^¸ uƒrƒó‹ÿûf8¤k‡]zƒ‚€€‚vvabcd_^[YXYWNeW}ÿöM›Mÿø`PS€R!SPcûÿJ›MïÿT_`__ag([od]€YXXYZVQPPG;;CIkpeáiaÍ™ÿÙ}…g„™…~€…|kˆ‹RJNPIGHAFSQ?ðÿL›MÝÿŸVbaa_`>:‹\WXX€WXXZ\ZWTOF@>IZGÂÇgzx’›ÿ÷›l?Sˆ†€nppgMGCFA=JXUF×ÿL›MÅÿ°[ca`^`8^iA[YVY[[_^€]\_[NE@FKŽç~r}†ù›ÿí\"Vª8qŽ„€yqtMDEDGKadYÄÿM›&M«ÿ¼_da`]bYUPZUZ^ccgd_a_]\_a`VCE]â¡f}΋ÿüî®|‰ÿŠ 0ŠVR‰ˆ€€ƒ{tqiIHFVsrdºÿMœMÿÉ`c_]\^WFJ\SZadjmhcfh€e b^adB¿Òez|”ˆÿþù¿š¡ñþùþ‡ÿ»ƒC“Bqˆ€~~…~wspbnŒŒ€m³ÿMœ$MÿÖ_]YVVU`¡xeefddfifgkihjjhoV‡írzˆô…ÿ ûØ£âüþþ÷ñüã†ÿñ…ZTˆŽ…~‚{uq|°ž}­ÿM›Mÿä[UNNMK=@%>R[\__e‚i jnrrnRìªa}‚ÿüﱋ³ûþþüÃn/Qþ²†ÿú®U €-C–Õ†ŽZ\ŽŒ€€„}uqv™žŒ¨ÿñM›8Mÿò[NKJJFSM=GINOOQWZcjpqorx~AÄÝexy™þÿÿõÀ›œñýþþòw!Nx°¶:ùΉÿ¦–ÃÃÚ€ÿ¬7*‚1.q‰ƒ€„~uq‚•£ÿöM›MÿùbJGFDCVWZYWS€T'X]`din|ˆc~ôlw‰ìÝœˆÖüþþú™Z@XçæN™³¼€ÍÝïŒÿàšM*€3¡a\€ˆ€ƒ}xtp˜ýýM›9MúþmCBBHEELMSTVWUTRZbeijn}‰@ò¬cy©±úýÿþÐc&{¶ðæ}—¡ÄÁÄØ­©êÖŠÿô“„w[r†ƒ€„„{toˆþM›9Môÿy:>=Q]^]Z[VY_^]XX\Z]elp1Çäeyz’ýýø‡6Bo¶ÎåEayŒ^}©ÊÊÕšëLjÿÙm)ˆD•ne}„€‚~ynif›Mìÿ‡388]`bheb`]abfddgg€b!Jsø}lz†¶T1H¢Úè¹…”™®³µ·Ñɽ»Å­ÛÒú…ÿ0ˆgq~€€…u„ŸOš MÖÿ™224NV\\[^€_*\^`_aSaªâ6õ·\x’F‹âÉÚÚ¦¯®¯½¢¤Ž±ŸoM_kS±…¼ãá„ÿæF ZŠo„~€€s•×’›:M»ÿ§312IPX]ZWXXWXUM€ìþþû1Âïeww‡™ŸŽdcYac\^U^StdeŽr‘seƒjšðÑ„ÿõ[ 0ƒÅƒ}y¼²I›;M¢ÿ²2/-HSWXYWYOhÃüþþûÉ~Ohù„g{†‰—zpi†v‡‘u”‰‡€q™~tŒ¨}„{utyëÊþƒÿã0€Œ =§«}}¢½¥M›;M‹ÿÀ/++KVQIT™øþþüë‘XIOb*òÀ\}}™ŒŽ›•ޤ˜‹žŽš˜’£Š„…¢Ž ˜}ŒZØØóƒÿü¢H ‰ À~µ‡üM›:MÿÐ,+0Q€Þýÿþû³d?DZlv|(¹óguw‘‹’rŽ™“•‹†Ž‘¢˜– žwq‰‡~|c¯èÜ„ÿë›0D: ˆ e¿•{‰©Ÿ–ÿM ›:Mì¬d±ùþÿüàƒ8%>bszzwwd]ù‹e{ˆ’•ŸŒ’ŠŠŒ’“¨œ€€—‡ˆ‡„~§i‡òÍ…ÿø¾L(F;‡ =¤®{ƒ›¨v¦ÿM˜>HPl‘çüÿþú¥K!Glzzwusttr*ðÅZ|w—€ŽŽ”‡‘¢ˆ“ŠŠ˜•‡{™ˆoœ€Œ~¶§…dèÍü‡ÿ±B1‡ |Áƒ~«†‚œÿùM”B?Ui‚ÃûþýüÏf(azvqrqsstss8²ôivx‹‡´‚œ‘Ÿ›”– ¡¨€~‚“™’›¢œš™œYÌÝè†ÿñ£KFG ‚L½˜{~ˆ¤žy†üÿM‘Yc©ïýþýò“/S„zspnn€p,qpoa\øŒdx|™¤ˆ‡œ–‰Ž ŸŽ§s’®‡v›vš™ƒ€œœY î׆ÿùê”YP&ƒ& ±|š¬{ˆ‚‚öÿMIi_v–Ëúþýú¹Z>i{z^NE@BAEFLQ[cjmp2æÉS‰‹žŒ„p©u{ŒˆŽ›“…~‚·wš‚˜¡“’’›Ž“œozïɉÿݲrP6uÁ…}€Ž³‡„€ypéÿM‰f_j…·ò€ýÙx()Of`A) €3 !1;òpt›‹z–ˆ„Ч‹–•ƒƒœ¶œ„Ÿ–’—†}Š‘‰ŠWáÓö‰ÿ´Œ»¶#€H¼™{~†«£~wmaÙÿM†QUazŸîýÿþø:A`_C\ó—Z—Œâ©wkŒž…€‡…–¯œ„€‹•‹“‘‘™”ƒW¿äáˆÿþÌ’´®€#œ´|›¿jvl`SÈÿM‚NZl‹Èü€ÿ ò,^}v?€6 ;ÏÐ]‚“„b±æí̽ˆ‹ž£‰‘{•›ƒ{¤Ž˜’ŽŒ˜•”•†–\‘ñφÿþ€ÿ:ûÂÙ½9p‡}Œ»”~wl`WHµÿMHw…°ðüþýóz µŠM€6.íui¡‚n%P®©¼¨”™›Š”‹ˆœŽƒ˜”‰‘•Žˆœ‡ˆ‡˜œ|lëŤ݄ÿ3ûéúÿÿÜÛך)D¹ž{‚©¶z{pdXP@¦ÿMˆñûü÷¥C a«×¹~0‚ƒ7 !_ä¢]©p•¹³ƒX3c¯Õ™“™ŒŸ™ˆ“˜¢€•’”…”˜”‰PÖÔ2¤û„ÿ4í÷Òâì×Òµu˜·}€—ÆyuiXNI8•ÿMùÐGz‚{r#€‚3;¾Îa}ªŠ•£ˆžª”j>W³ëÏ™Œ˜”–šƒ–—Š•œ“Šš–Œœ‡•’ŸY¬êHlêú„ÿ6úÄ4@ûþì|Á‰}~‹¹£}sg]_gbI…ÿM ^æõ‰~hfdml== -Šá}g£Ÿ{š’‘‹’¡œ‹a1lèæ­¢…—{‹ž‹“šŒ“¡ŒŠ“–’‹‹—_ò‚‹Áûÿ.üÿÿÐfMéþœ´ {…¥ºw~vmˆ¯À¸›§ÿME³ûLGg`c`A‚B  ![Õ£_‹«p˜{“”“‘¬‚,G·ðØ•¤‰––’š‹‡‘‘‚”ž‘‘‚^æ¼GÆ‚ÿ+øâö×’œe¦Ô˜§€•Â{±ÂĺÇÙÞØÐÔÿúM‹ý.hbR*„x%R†¬‰¢ãò¾l·’™E¶Ék{§|Ž‹–ŠŒ‰‘Œ‹‘˜„²WiçܳŒ–›˜’ŽŠ…œ“•š…–—’‹PÊÝ•ßùþÿ÷üÿöÉÀ^+T–š{}º¡ÁßïïãÜÝÝØÑØÿÿMpôÚ$qH|"<^‚¹ªÚßõW²Îˆ‰KËrnƒÙkŸ¢‹GTm¢”‰‰‚‘…Œ’“žˆ2$Ýó¥|ŒŒ“†•“”‰Š’‹– Ž•—^›îŽÍåüÿåìÿÿö“Wfl›ƒ†šŠµØñòêßÜÝÛÐÍýÿMbÓú.'€y4qž«µÁã!¼e†sT€;jVt`XÒ¨^ލ„ï–¬(>o±™•‘‘Ž—›Q&qù´†œ””•’’‘‘’‘‘Ÿ”’“–muð¬ëþûõïöùî¿Í„I4•|€›™vŒˆ¶æìçÝÛßßÖÌ÷ÿMHŸÿJ‚n1{§´ÆŠ§œÅ&=°.qYxt’]C²Ëlwª‘ÕÈ·æùÞ \¡Œœ’’‡ˆ“’–©p%§ø´c’–›šŸ˜Ž”˜Ž•˜‘ˆWàÑðÿíØ¸ÍÙÏtx«b}›}€Ž¡€¤ž—¦ÉÑÐÍËÎÏËÂïÿM€uþËq-‹¶Ç°À¡NU:fÓtjUY_nhX{݆hœ¤'>>ÿþö38o¢¥‹…Œ…™Ÿ’{$„íÒq}¡ŠŽŒ‰’£”—’Rºç¿é«ÂæÓËÍŸw‡œ„†¡‹–´²¯©­°±¯­©¨©¤àÿM€|Vûýp·—±¤^Û¨P}}Ve]Q=S`oqdiRÓ¯cˆ¬‹•ÇÝjS%÷ù¿N9|¢´”¡‚™“uŒøÅ|‰’†”“š’•š˜Œ‡‘_ó¿É\ÌÞÀ–Y¦Ð“‘|€~–šx¯°°®ª«©¨¦¥¡Ÿž×ÿM€|$Æþ1 ³¼pž‹zˆnsasYuxgbZag]F«Õls©“¨»Ã¿gî÷öŸØZëÃS}º‡¢—Š‘…6w÷²““’’•¢–›‘‘˜”‹–qjêÀŠdg²ŒxLVâš}€Ÿ©©¬¨¥¥£¡ ¡Ÿž ¡žÑÿM|ˆþ†W©‹±±¶cŽŸoV;O]lr[]lW\[YPtèŠf˜£ŠJwk’ž„Ÿ&sqË Jr÷[抗›ž‰Ž”z?øÅl™†‹‰‹Š›“‹›ž–ŠOÓÙ–Ë[e)Y콆~…¢†ž £¢¡¡Ÿ¡Ÿž ¢¢¤žÈÿM€|Yÿòw£­O¸X‹„mf`aYUTTVTVWTSQIÛº_‡«’f†o‡Ž_£¯º‚|²¬nõV u•Çx‰‘“y@”ñ²r§ƒŠ’•‰—‘‰‰™X¨ì…Œc,3àà“”|€€˜œy›—–˜›œššž¡žŸ Ÿ¡žÂÿM €P3øý{«£Ó…5z‹t"foS]RTRQQNLIBE;­çhr§•ˆ¢{Ÿ¤ž‰‰Šd‹‰·›lŸ¥“Þ£mÃv¹‰—…•”s:›÷ƒqž¦‹Œ‘“€Ž(•›]|ò«Z&w­Ýùœ~€~Œ¢‚‡˜››–˜š–‘••˜œž¢ŸºÿM{³ÿ9‚ƒ¤ {+e?QY[LPMRNDCA><:@hób›§nƒ}‹•ˆŒŽ„§ž˜¤fŸ•¡´‰¬÷» 2µ·—¼}Ž’šqKÀç¡€}ªš“™…‡““™~_ãÅ ®ïíÿÀœ‡~~„¢{h\eyŒ‘•™œ˜’ޕ𠣲þüMnÿ•‡ kª‰Qn‰0WOJGI€JeDA>;:6?7éÁVƒ¯„FBEHYhy‚~Ž–…¨Z|±éí P‚ ƒšˆ›‹bIåÍi©œ¤’—”––›™–ŒHÆáãô ðå••|€—›yu\HBCN[ksˆŠ‰Ž’šž¦ûÿMEýî;‹@bw`„oaVHJ€HgD@==:71,,ªñgq«—­±²ŸkllCCQhv}‘Œ‘‹x|a˜†Þñ.†¤·£‹„—PŠô«h`š•’Œ‰’–‘Y˜ðÊ^äúŸœ€~Š£}bK>8868@FRd|Œ¥·ÇÔÚâþÿMq$æþ%˜wtmsrRBONHEFA>=:94/8TiT÷Ž]—¥}ƒvjUbª ¨pY;Lix‹–€¨|r±qžûI$§aŠœЦzA¸à®›•Ššš†‰‹”jrÿÀ›ˆ~ ~tfdo€’¥²ÂÑàðü†ÿM‚f˜ýY®iS‘Q_RIEAEECA>9763Iw¢®&ïÍV‚®ŠÛâÖ̸³¬lc`u¿§]CCX|ˆ‚–±–±~£ü4œÝ™~™ŸlYíÁ€©¦„“Š”‘—˜‡YÛ×÷æ’—|€}–žzãîøþ‡ÿøóîåÉ­M‚b_ÿ­seLEG=C@ADA?>:7-Gz¨¼ÆP¦õgk¦™W[U]]d³¼ßÑ…S¤ñ¸ƒA@o“†‰‡–r”‘‹û?Gd£¯„ˆŠQŠÓuÈ”…—£–“R¸èÚ•ƒ~‰¥†ä€ÿýùôðß»ˆM† 4üü\KVKCyš|‹‘~œ¤±÷C¢•‹‘˜``ëÀw™—™¡–Ž‘‘nhÕu€€~•¡yNœ_€ÿ† <>BHBCFF?89|ÀÊéöÌkX˜òto«˜F;Ž4A¤Dµe¥ÈÎŽ1…‚ bnšÂpBrŒ“…qr©…ö bˆ¬œz˜‹R¡Ù±¬~¥šƒ—›—PŒ{€~ˆ¢…u^SþëIALI@BF@=M Ïãï²V„ëQ‚¸xƒ€|x{u‰eœ4ŸpT”Zc`Y¼m•Ì›dyì±*¦’:k‘’–¨ÕSýXFg¼“{•—Z“ã´‘µ˜¥Œ…˜“o€€~¡wUž]U¬þJBB?@A=K Ñä䙎õû‰»cHˆ‚}yy–KdgcZ…aN® Zh"ŠØ¤J*ÀÌ=£|>n’Ž‹—†®Xü Z½~|‘ž~T¿·‡‘‹}Ÿ…”zz€}…¨‡x ký¨ C>CB?G›Ðæã¤ó{Ì96š“Mh†€={yv¹n6TlV}2‘Tx o´{P+·Ó.¬y:ƒ£‡Z¤e˜î z¹£}˜“_ŠÐ©§“‡††t€€¡—u¡[?ýøHHFAA”Ôæá¬œ~Ì öj¹Wƒ×n_{ƒ€}x}°·dZ­ÂSh½ÚåÍ=µ1C玟³ÈŠÞ͵xezƒ€~y|š²áAw¡-•·‹n?Z¿~ƒPéxgŽ4|¨„¦v­@øØ¿^Ó¥¡ZY·´™’’„u€€~ƒªH£YWþÁ"DN­ÑÞÉÂ×”?‚ 㵗Ü©x«ÈÇ¡en€{y|˜_àŒÂƒSuYMµE¼¤agìW oN”ˆ¨¨—ƒóE(qh®¥•FÄ›¥Žt~€€~zž˜ð‰£Y#úø-DÒÚÕÊñîhäôÏVj­âµâ¯gwªŸÒºÂzdzƒ€~y|–³’#4}ŽD§XY¶­‰KºÂI½5£z{—h¾ò/g‹ï`¾¥Nº­¯wy€€x‘¦‚÷ª¤XÂýTG½âÞÏçò!É­^i›À½ºÐ‚‡q°}¤Ñ«fl‚€{y‚EŠkXPqŸ4§1`N-Oíg‰zM–ˆ²ŒtyÁ†mª‚l¦f‰Ât€€{®ˆgìѤYzþ‚|âçØÝøîQSLFeÇÚØœ§®·â´¸™°®Éй|cxƒ€xzª¦6C·V¹™Ÿ®°–.¡ÐM¸:€™‡’¤Uú_„êZ‚µa´v~€€~{¡ eKÍé_£YGü¼›êâ¤dtÈÒS²Â}—⯬³´Ö×®’xÒÅÌàêìè¯gl‚ƒ€|t€Ä¾ŠŠngƒ{w{]Oèi`Wž•ŸŒœ˜_—s8‘Ì”‹”V‡x€€{’œ_X. ò’¤Kîê‘ëѸÁmœi‚¤~tÕÎΩ¤Å¼°´oÊï¢ÊÞïéÞÝ_w‡ƒve[’\c›;d©™F±¹UŒC’€›Ž…{p†îcœÂnŒ’s€€ }„ wYChôµ¤Y¯÷‘×ÕêõbXœk˜u¥·QO©ž´âÂÄÍxšµ¾³Ñ¼²\bƒ…ƒ„{u‚%‹qETH¤ŽtläU›;|’›“ˆ¡vàRˆ±{v}€~}š‡]U6!Bä×f£Vnû¦¶àìì° f‘–d<|Á¯{YÞ Ëષ°€¤¢®ÆŽpˆèçzOuŽ„ƒ…u¡¬¬Ôx»”ˆKër—k]}†wqÁè Õ–¶v‚€€}ŒœcCÿÿþÿ›þ¬‡W>÷È–òñ‡—25Jµë†Z¤×µº¬Š—´£Ïº¤×Ǭhhºûö©MVŠŠ‰ƒ5-3€¼šPµºkrN¡¡¤´•~tpÊ[>ift‚€€}„œ„?*ÿÝÈÊÑ‚ÒÑ‚ÒÑÑÐÏψÇÕ»š‡VUÓí‘ññs-œÆ“Š“ÁÈ’[Œ†mtíkÌÀ“‘®öí¶¥¼ÌÔáâËv7o“‡}}‚Œƒp_Æ¡XœÎW¤E‰¢—~Œ—n€ÛN·_{…€€““;"FÿêÍÆŽÇ‡ÅÆÊ¸›ˆU’ø™ßì°M;{¬·b8j°jQ—ˆ¾å’™ÎÀšS££¯Â“Ì®«b‡›ŠÓ§AK‰‘€z‰ˆ¨[0wëu¬Cx±‡|Ÿ‡t‹r‹Lb@}…€|‹šW þèÍÆ˜ÇÈ˳šˆU\ùªÇÏWcrÕ[Tª—ŒˆXUv™˜ÖÕœ‘Ž·äíèÏÄÆÔÄ´Žz€€z‚ŒˆM†‹–‡‹€›fEg—€{|¥Œ -[’ÈþÜÎÆÈÈɽ7̃ÇÌ7ÅÉ‚ÇÉÅ7Ì€Ç0ÿùK ™š”­Èz:Žb8’lO~QqT=“º¡–ƒžÅÇìâ×ÞÚÉÜèÁgŸ‚w|€€&~„ŒPpˆ–’™¬Z]M‘‚€t›œV·áóðÜþÜÎÆÈÈι;ÑË‚ÇÌ7ÅÉ‚ÇÉÅ7Ì€Ç2ÿÿJ“p=Mƒ¸™OŒ`)O@,,vceXP¨âކy™±¸ÝÒ¸ÀáÔŒK >~{€€&ƒˆx¤¸¤¦‚tjGŽ€rЍ”îôåϹ« þÜÎÆÉÍ—=+mÅÏÈ€ÇÌ7ÅÉ‚ÇÉÅ7Ì€Ç3ïÿޝ¥7!PX¨Ãœk\=C;C3;a£z~uz“v{ƒwšÅ¥¨ÅÅš³Ç¤C@s¤w†y|€€‡Ž£¦~XOf’€z|§•Ô¿­ €þÜÎÆÌ°€vÛË€ÇÌ7ÅÉ‚Ç ÊÁ7ÐÈÇÇHÿŸXŒ™´Œb„W‰R.MCQ''&A}”Œ€twˆz}}‰”ºÊ“ŒÇÃÏÔÏI ;i{|ƒ€€~ƒˆb@BcUŒ„}v˜¤Ž›„þÜÍÈÑŒ :ÕÐÈÇÇÌ7ÅÉÇ Èʨ:ºËÉÇEÿû qdSQ7<@al2VL#e‚ŠŠ…ƒƒ€z{†ty›¼[v…’5;ŽœBP]Ar„ssu‚}ƒ¡°Gz‡€y…¤††þÜÍÉÏ  4ÏÐÈÇÇÌ7ÅÉ€Ç ÈÉŽ-9ÑÊþþ?€?!Sa+-Ri/3Dc74g€}‰†yNk»•„œ”`¼€wiM@]ɽFIº®·‚w|€|„†hˆ€}}¡•f†þÜÍÉËÉoš×ÌÈÇÆÌ7ÅÉ€ÇË´/€7ÈÑÅ®™‹Dcþ•[_J`°”Œx€¡ylhkTTI6+(QjsmT;EGDNtš_ªÚ¤Ïá˶D¤ÃÞéìÝůœ™Hžªzy€€~™’wˆ þÜÎÆÇÇÉËÚ‚ÇÌÀ¡ÊÉ€Ç ËŸ:"˜ÙËį™Œ1ÐúžÇCŸ²Ù­Ã«rG5OTBA\+'€##39Fl‚„††‚~yrkfa`__f}• ¢›¶ÿñM›MMªÈÞéðùˆÿNúîáÕɾ±¤–Š~yyz|zww{‚……‡„~`6&' Z†…†„ƒxqjda^gЧ¯«¤šÿøM›M…ÿXþ÷êÕÇ¿³©ž”‰ztohhihjmqwz}~€‡ˆgNGCq}< ]‡†…„„}vphdi“¶¾¸ª”x}úþM›MM÷ÿØÕàêòóìÛÚxtxyyzzxtrpnomklnsux‚†‡yP +\&!!  dy€…}vno“¿Ëű•u}øÿM›aMòÿ¡¢ÊØçñðçÖ½“xyxwwvspkjjijjkkov‚QF/ !#&(/ !#'TV&  L‰Ž‡‡}u޹Í;‹’”ñÿM›Mëÿ¤šÌÕÛêïêßѲo€r2okjfejkmkl€z@&("#% *!#DYzr> € +†ŸŒ’µÉÌÁ¦š¦±³©êÿM›9MÔÿ§ˆËÕÒÞìëãÛË qimligfdlT0\Œ‚U"!"$%(#)$!"6Ur…€~[!#  ˜¸‘ÂÐÉ¿©¦·ÆÉůßÿM›Mºÿ¯s¼ÐÎÜîòçÜ×ÀŠ€ededg` "$#"$$(&"$#!,Sc„€€+z:  —ðÙÕÅ©¯ÄÑÕÓȤÏÿMœ1Mÿ»h§ÊÍÙîñáÔÕЬq^`acjs !##"#%! #HX}‚€ …ƒ_  €€Óüã®ÏÙÝÛÒ¾ŒºÿMœ0MÿÌa“¿ÊÎÔÏ¿»ÊÒÁŒc_af`5*  "!##!&0Xp„ƒ€*xz{< ÷®¤ÒäæâØÈªt§ÿM›MÿÛb¿Ì¸•‰Œ¿Ò̦q_da €?+" #%"$Pa„€€‚€€ …vd&  €“ÒÊêðçÝ̳’h–ÿìM›"MÿìuŸÃÇ£mct”¿ÕÔ½ŒgyE)2€"$&#CY|‚xky‚ƒ€€(‚xy~9 Zøâðôß˲‘zfÿóM›6Mÿ÷Œ©¸¬Œe`z¥ËÜÝÒŠL$ &! $$0Om„~mu{f~‡€€ „v€d€AõéïãÆž~nlg‡þúM›aMþû˜ž•‡}nu™À×äçß  !'/p†€p tgm‰ƒ€€zyB#—öëÖ¯„\\fmiwúÿM›EM÷ÿ—|nlv€–ºÔßèù©   0]£‚yvQ*gX~‰€€…y}i%!#6|Ž´³ziZ\ovppôÿM› MòÿWUXi…£Â×äîü1  € %?š~qv€ }Zgˆ…€€"ywD!'% cŸeKi„…ypèÿM›0Mäÿ•GPMZv—µÎßûÁ"! /}œ|‚s…ƒgX„€€!…yj0 #'% ukQ„›~oÛÿM›/MÌÿ£FSPL_€¤ÃÛó#  \¢€zu\†u`m‡‚€€}y‚P"&('",%"!l}™Ÿˆ|hÏÿM›M²ÿ­HTUNMh‘¶â¤'$ € '<—~qƒˆ&t]~‡€€ƒy}h1"&)# #&$#!G²¯Šz|cÇÿMœ.Mÿ¼IRUSKTx£Ñ<-   NŸš|‚ty`‰ndh„„€€‚|y{S(# %%'$#!P¯€kyN¾ÿMœ.MÿÍLQRTQK`ˆ½%   5›½~€{vS‚YŠ"yW}…€€ƒ{ys)€"!€]|VkF­ÿJ›0MÿÝMPRRSNPp¹    oŇ|m…'“²5$‰oem†„€€ƒ~wyT+iO`I–ÿïM›0MÿîTOQRSSMbq&   E¹ vƒq~(‘äÿÄ_‹ $‚\z‡€€ƒuw~  >Z[Nyÿ÷L›,MÿøbQSSRUS^7  $‰Áv€zj`Ý€ÿê †!uli„„€…‹€T%#WUL]ÿýL›,MüýoPUWVXZf    >Å™t†dŠ&³ÿ¾^{&e …"B…Uu€‚€€~u~„ "LXNHýÿK›Mõÿ}OY#_l+ 1–âkt=XšåƒÿÅ®"‚$  —Pu‹l„‚}€sy}d;^P8ûÿL›Mïÿ‹P€\#ZaO2-"!,eäžg^`~ûø…ÿØ| 5't׉€$|m‡•ƒ€€ƒzl†‡#\P8ïÿL› MÝÿR]]\\_U€!<ÆÌgzz‰WŠÿ*4 ÙÞÿü[FAW…Ž€€ƒtprSU[GÕÿM›MÅÿ¬S]\[\Z-.&"!" 2ézq}„ Rõ‰ÿR $¨ÿý˜%‚ §2p„€€†~vsq€ ck[ÄÿM›*M«ÿ¸V]\ZZ`,% "%&%'%""  '^å¥hz~{çí‡ÿüîwk±´‚ÿådƒ iPR‡‹€€{vqZ9xi¼ÿMœ(MÿÅW[YXYb "&')*(%&'%#"!(;ÃÓe{{:—õ„ÿþú¹‘¢òýùþ‚ÿûY„’Brˆ€…}zqo#l–ˆt¶ÿMœ&MÿÔWYVTT^NWR(&&%&%%'&')'&&$#,6ˆîzqyˆ’ƒÿ ûÒ›Œàýþýøöüá‚ÿÅ*‡]WU‰Š…~ƒ€|vq^s¦˜‚®ÿM›8MÿãURPPOQam-""!"!#$'('('&(*:Sð¨b€§…éÿÿü䨆·úþÿýÊl#Gþ±‚ÿÚ£‰ƒX\‰Š€†}vqs £Ž¨ÿñM›8MÿòXNKKO]:  &))&).77ÇÞdyy•pÿžØ²Š–ñüþþòp Aq­¸0ûË‚ÿþNŒT1(s‹„€€{yp‚˜¥ÿöM›9Mÿù`HIHQ/#" #!!"#-39?€öl{ˆâÏŠ„ÑýÿþûO.RåæVš¶½~Îßïÿß ˜`Y€†€ƒzuošýýM›MúþkDFH6€-%%$%(5O=ñ­a}}Ÿ°úþþýÚ_ k£ñ耛 ÂÀÃÖ«¨ëÔÿzZZq†‚{tpˆþM›9Môÿw>CC( ! $ !#(.'Éåb{x•ýþø…+/i¶ÏêKdxŒ_|©ÊÊÔšëÇÿÑåyƒof†€€…znie›:Mìÿ„5<;&%%# !!##$$# !!5wù~j}„»B!@ŸØêº‡—˜«´µ·Ñɽ»Å­ÜÐú‚ÿN Zƒfo~€€‚€w†Oš MÖÿ•065€, #O¦â2õ·^|z‹9ÞÌÜܦ®®¯½¢¤Ž±ŸoM_kS²}¼ãâÿÕ’ ,tn…~€u”Ô‘›:M»ÿ£.32/}èýÿý3Èðbzz… ‚ŽecY`b[^U^StdeŽr‘seƒd–ñÑÿo” ~Æ…~x·±I›M¢ÿ¯€.4%(`Àýÿþüèˆ?hù‚g{„~šzpi†v‡‘u”‰‡€q™~tŒ¨}„{uu‹qíÉþ€ÿz• /©¬}€¸¦M›;M‹ÿ½+,+# B–÷þÿÿ÷©P (ôÃ^~|•’›•ޤ˜‹žŽš˜’£Š„…¢Ž ˜}ŒOÚÖó€ÿÚ>“ Â~€Ž²ˆüM›:MÿÏ*+1=~×ýÿþýÝm  ½òhqwƒŒ’rŽ™“•‹†Ž‘¢˜– žwq‰‡~}W­éÛÿl‘ TÁ•{‡¥Ÿ–ÿM ›Mì®a°ùýþþ÷›' €&*_ù‰e~‚ƒ–Ž•ŸŒ’ŠŠŒ’“¨œ€€—‡ˆ‡„~¨a~ôÌ‚ÿs‘ /¦¯{‚™¦w¦ÿM˜>HPl’ãýþþüÐS'ñÆ^}{”†ŽŽ”‡‘¢ˆ“ŠŠ˜•‡{™ˆoœ€Œ~¶§XêÌüÿò }Ã~€¨†„žÿùM”B?Ug€¾ûþþýð  ±õkty‰µ‚œ‘Ÿ›”– ¡¨€~‚“™’›¢œš™œ‘HÌÜç€ÿìV ŽL¿˜{‡£{‰’üÿM‘Ycy©ëýþýù­/€/$Yø’a{~•™¤ˆ‡œ–‰Ž ŸŽ§s’®‡v›vš™ƒ€œžM›ïÕ€ÿã&¢²{‚—«|‹††öÿMNZ_v”Ëùþþü×^-æÎT‰Œ—“„p©u{ŒˆŽ›“…~‚·wš‚˜¡“’’›Ž“œgmòÅÿîÏâcŽvÃ…}€Ž±ˆ‡„€zêÿM‰f_m…µñüþüðŠ €: / ômpœ‡€—‰„Ч‹–•ƒƒœ¶œ„Ÿ–’—†}Š‘‰ˆHãЋ& I¾›{}„©Ÿƒ…}wmÜÿM†fav¤êýþþû¶@ €€0[ö˜[“‚…îÁ§ul‹ž…€‡…–¯œ„€‹•‹“‘‘™”ƒ“E½ä:9—#Ÿ¶|€™¾lƒ}vmbÌÿM‚ NZl‹Âûÿþþüb% ƒ5:ÒÏ]‚”‚s¬åìɼ‰‹ž£‰‘{•›ƒ{¤Ž˜’ŽŒ˜•”•†—QŠólÿ.Œpć}~Œ¸–ƒ|tkcX»ÿMHw„²ñýþýú§‚!! €€‚7-‘ïrhžŒnR¬©¼§•™›Š”‹ˆœŽƒ˜”‰‘•Žˆœ‡ˆ‡˜u\>‹D»ž{ƒ¦µ{wmd]O­ÿMˆðúýü¼F€ "(!€€‚0 ^ç¡Z‘¥p–¸³ƒW4c¯ÖÄœ’™‹Ÿ™ˆ“˜¢€•’”…”˜”ˆ>×ÒŽ' ›¸}€•Æzƒ{re\WGžÿMùÝ  ‚5;¿Îa{©ˆ–£Œ‰Ÿª“j=W²ëј˜~”–šƒ–—Š•œ“Šš–Œœ‡•’¡E©êI‹'Y©Ÿpĉ}ˆ¸Ÿ‚{qihljTŽÿM ^äù  €5,‹å}jžœz™’‘Œ ‰a2kë嬢†•|‹ž‹“šŒ“¡ŒŠ“–’‹‹˜Tuô‹*vþ¶¡zƒ¥¶|ypxžš† ÿME³ü; ‚€<   ]Ù¥^Чr˜{“”““«‚-I¼ïØ•¢‹—–’š‹‡‘‘‚”ž‘‘|K黊!¡›§~€”Á|¤¯©˜˜¬¹´©¹ÿúM‹þ—€D Oƒ¬‡¦æñÁk¶’—C¹Ìiz§|Ž‹–ŠŒ‰‘Œ‹‘˜…¬WlçÞ±Ž–œ˜’ŽŠ…œ“•š…–—’Œ;ÊÛ)Š$ˆ›{Œ·  ÄÕÑÀµ¶·±§¹ÿÿMpõé €€F":\ƒº«ÜçøW²ÐŠ…FÇml„Ûƒj›žGRm£”‰‰‚‘…“— ˆ4'Üò¤|‹“†•“”‰Š’‹– Ž•™L•ð[ŠXžƒ…œ˜sŒ¸ØØÌ¼µ¸¶¡¡ùÿM\Ñû €K2r¡¬¼Éç"¿^ƒlN1cLm[YÓ«`‰§€î—ª&@q‚±™•‘‘˜œœT'uù´‡““•’’‘‘’‘‘Ÿ”’“—bcó‰/—|€–—vŠ€ŸÍÓʽ¸¾À¯œïÿMH þS€M/y¨¹Ì¨›À!1£*lMŠmkUC³Ímw¤‘ØÉ¹èúÝ \¢‹œ’’‡ˆ”’•¨l%©÷²d—›šŸ˜Ž”˜Ž•˜’„Bâ͇ {œ|€ŒŸ¶´¬®ÄËÇÁ¾ÂÁ·¦æÿM€rþЂO,Œ¸Ï”³ÂšKI/_’Óg`MPTjeU}߉h˜Ÿ(Ž? ?ýÿ÷2:n£¦…Œ€„šŸ’|$…íÔm~’ ŠŽŒ‰’£”—”9·ç;‡Rž…~„œŠ ÉÉÇÃÅÆÆÄþ¼³ãÿM€Vûü€Pp¸™¸«]Û¦?wtP\YN9P\nmahSÕ°aˆ¨‰™ÆÛmW%øø¿O9|¤´” ˜“tŒùÆ}‹ˆ“†”“š’•š˜Œ‡‘žM„ôm† K–’|€•™zÉÈÈ€Ç ÆÅÃÿ½¶ÞÿM€Z$Çþ1¥¸Ãož‰s „jo\wWutc^V]cZF¬×kt¤’¥¹Æ»jí÷ö¤ØYêÃT|¹ˆ£–Š’ƒ8v÷±–’‘’–¢–›‘‘˜”‹˜hTeœž}€‹ÂÇÇÆÅÄÃÃÂÁÁÀÀ½²×ÿMYˆÿ‰V¬²µ´^…”eI8J[glZYiPVWUPwëdš¡Lzp• ¢%otÊ¡Guö^æ‹•žžˆŽ“x<öÂq—†Š‹Š›“‹›ž–‡7Õ׃u¾Ÿ†~ƒŒ”ÁÂÃÃÂÂÁ€ÁÂÀºªËÿM€Wýñ v§´Q´[€ƒg_^bTPPOQ;851-%(¬ódp£˜®±²ŸkllCCQhv}‘Œ‘‹x|a—‡€Üò,‡¢¸¢‹„—ŽQ‹óªidŽ™•’Œ‰’–”>òÏtõû¡€}‰ „r_RLHFLR[ddoƒŸ²ÃÐ×àþÿMr$éý)ž~qokrmP@MNGEE?:9660*1LgY÷“X– {ƒvjUbª ¨pY;Lix‹–€¨|r°pžûO$§c‹œЦzC¶áªš”Ššš†‰‹–]]ò¬µÿÈ~‘|vu~œ¬¹ÇÕãïùþ…ÿM‚f—ÿX«cK‹M\QGD?DFC?8520-Apž«&òÍY‚ªŒÛâÖ̸³¬lc`u¿§]CCX|ˆ‚–±–¯}£ý4Ü‚˜~™ŸlYëÅ}¨¦ƒ“Š”‘—š;ß×÷攘|€~•œ|åñùþ‡ÿùôðåÍ­M‚baþ³ qaGBJ>B>@C@=952)?s¥¾ÇP¨ögmŸšW[U]]d³¼ßÑ…S¤ñ¸ƒA@o“†‰‡–r”’ûANd¡­„ˆ‰QŠÑ€wÈŽ“…—£––3³èÚ–„}‡ …ä€ÿüøôñܹˆM†Z4ûýXIOICyš|‹‘~œ£¯÷B •‹‘˜_aëÆqš–™ –Ž‘“bMÚv€€|‘zNœ_ÿ† ;=AEBBCA:43u¿ÌîùÐoV˜ôtm§–F;Ž4A¤Dµe¥ÈÎŽ1…‚ bnšÂpBrŒ“…qs¨ˆõ_‡«œz˜ŒT¢Ø²§¦™ƒ—›˜ˆ1Ž{€}„¢ƒr^OþîC?HE?>@:6AŠËÜôào %WôŸg€‹yg~•\Å0¢0ºR_š<„ÑŽf‚i—A­y4f‘{©ž~Š9éÚ «¦—zŒ†n[Ý®xˆ™›€’Ž“Kv€œ”xž^<öý>BD@>:86FžÑæô¶TxëP·xƒ€|w{u‰eœ4ŸpT”Zc`Y¼m•Ì›dyì±*¦’:k‘’•¨ÔTûYKg¼”{•—Z“â´Ž´˜¥Œ…˜•p€€~yUž]U«ÿM?A?<<6CžÖçê›õü’ºaJ~Œ‚„|yy–KdgcZ…aN® Zh"ŠØ¤J*ÀÌ=£|>n’Ž‹—„¯Tü Y½|‘ž~S¾¸†’Š}Ÿ…”|{€|…£‡x [mÿ«A=?=:AšÔê税ô…Á>1–“Ke†‚€€{yv¹n6TlV}2‘Tx o´{P+·Ó.¬y:ƒ£‡Y¢e—ð |¹¤~˜“_ŠÏ¨¨ž“‡††u€ž—v¡[<ý÷ GE@<:’×êæ®œwË öj¼UÖo^{ƒ€~y}°·dZ­ÂS;Òèìb;ÞDŸËõÓÍ‹r±ì eo‚€€{yc£„™\2Éœ)Z…ÇƒŽžh+¿²EÉCa”†‰{°oPû CÛ…mXgZȦ‹›†z€€z‘™t£Y“ÿl+<9c½ÜéÏ9±26â²Æ†Ýεxdzƒ€~y}š²áAw¡-•·‹n?Z¿~ƒPéxgŽ4|¨„¦v«Cùׯ^Ò§¡ZY·´™’’„u€€|„§H£YQþÂ>I©ÑßÍÀØ”>‚ 廖—™¦u©È|Æ en‚€|y|˜_àŒÂƒSuYMµE¼¤agìW oN”ˆ¨§™…ôK$qk°¥•FÄ›¥Žu~€€~}¡—Y#úù*<€ÔÜØÌòòbßóÌXi®â²à­`q©šÐ·Àzcyƒ€~y|–³’#4}ŽD§XY¶­‰KºÂI½5£z{–h¾ô0d‰ï`¾¥Nº­¯xz€€zŽ |ø©¤XÂþP?¾æáÐêõ!È©Xd•½½¸Î}…k­xŸÎªem‚€€{y‚EŠkXPqŸ4§1`N-Oíg‰zM–ˆ²ŒtyÁ…l¦‚k¥f‰Ât€€yƒ©†JïÒ¤Yxþ‚|åéÝßöïROICbÉÙÖ™£ª´ã´¶–®ªÇšÎ¹{cyƒ€z{©¦6C·V¹™Ÿ®°–.¡ÐM¸:€™‡’¥Tû`…ì[ƒµa´w~€€| žÓçO£YLû½žîå§btÆÔP²Ây•⬪¯¯ÓÖ¬uÑÄËàèìè¯fk‚ƒ€‚|wÄ¾ŠŠngƒ{w{]Oèi`Wž•ŸŒœ™]˜q6ŒÉ’Š•Vˆy€€zŽš@¡ó¤Kïè“ðÔ¹Ãošg„¦}rÕĮ́žÁ¸­²mÈð¢ÊÝîéÜÜ€^w‡‚zf^’\c›;d©™F±¹UŒC’€›Ž…{q†ï b›ÄnŒ’u€€ }…žs  iõµ¤Y¬ø“Ü×íùfS™g—s¤¶ˆNI¥š°áÂÇÎv–±º¯Ð¼²\bƒ‡€„{xƒ$‹qETH¤ŽtläU›;|’›“ˆ wÝRŠ’±|y~€€}—ƒ0.))DäÔf£Rnû¦¹âïî² eŒ’b9xÁ¬xUÜËá§µ®~¡ž©Á‰i„çèyMuŒ…‚ƒ‡t¡¬¬Ôx»”ˆKër—k]}†wpÀç Õ–·v‚€€}‹™M#‚ÿšþ¬‡W>øÉ—ôô‰–00C³ì‡U¡ÖÁ´ºª‰‘˜³ Ì¹¡Õèc`·üôªMRˆ‹~~‹‡5-3€¼šPµºkrN¡¡¤´•~toÍ[>hftƒ€€ƒš€,'ÿÞÈËÑ‚ÒÑ‚ÒÑÑÐÏψÇÕ»š‡VUØí‘ôôt+˜Ä‡‘ÁÈ‘Y‰…lqìŽhξ’‡©öì±¢¹ÉÐÞÝÈw2q–‡~z‚Š…p_Æ¡XœÎW¤E‰¢—~Œ—o€ÙO·_{ƒ€€~’‘4&HÿêÍÆŽÇ‡ÅÆÊ¸›ˆUø›áð²M:zªµ]4g¬fL–„½æ’˜Ð¿—S  ­ÀŽÈ©¦\‡‘‚Ц?K‰Ž‚€€†‰œ¨[0wëu¬Cx±‡|Ÿ‡t‹s‹LeD~ƒ€{Š–V#ÿèÎÆ˜ÇÈ˳šˆ,^ù«ÊÒS_n“6h攀˜Ì„¡š‹¥®¤š¡žá¢E𹱆¼àx0`€€%|‚†±bZê]„F¢œy¢~h¨|¼yHlŽ€{‚™}#ÿäÎÆ˜ÇÈÆ°™ˆUùÝœÏ!V„•ÿšÅ•z~ªµªº­«¥ƒ £ÑÑž¥—”€cÇÆ¾ÇÊÙ«ru‚€|}‹ŽbKëf}Ekyž‘p‰=¬XL“…z•–>þÝÎÆÇÈ…ÇȆÇÈÇZâýRÁÕ§y® ¨ËlZƒ€>>˜©•š”x[€£Ýæñݲ‰‡ª«òäØ×ÇÄÎî¸n‚€€|Љçk–_|œƒ¯”yƒšrpA‡†€uŠž` þÜÎÆÈÈÇÅ7ȃÇÈ7†Ç7È€Ç/dþj•aj°¸Åžs±€7ŠXP¯‹‚XUvŸ™¥ÝÚ¥”‹|´ãìèÎÃÆÕÁ°{€&~ˆM†‹–‡‹€›fLg•y{¢‰ 0[’ÈþÜÎÆÈÈɼ7̃ÇÌ7ÅÉ‚ÇÉÅ7Ì€Ç/ÿùT˜—«Æšx7‹_6‘kM~ƒQnU>“¿‹©ˆÂÈîâÕÜØÉÛç½aœƒz€&|„‘Ppˆ–’™¬Z`M‚w–žV¸âóðÛþÜÎÆÈÈ̹;ÐÊ‚ÇÌ7ÅÉ‚ÇÉÅ7Ì€Ç\ÿÿI”q7F¶—MŒ_%L=+&wfd[Q©ä’†~¯Š¹ÜÒµ½ßÏ…D=z{€€€|ƒ‹y¤¸¤¦‚tjI€€v‰¢•îôåϹ©œþÜÎÆÉÍ¥l]‰ÈÎÈ€ÇÌ7ÅÉ‚ÇÉÅ7Ì€Ç3òÿ²§8IS¦Ãœi[;=5B19_¢{v{–y‚‰z˜À £¿À•¯Âž=?o txˆx~€€zŠ£¦~XQf‘€z| ’Ô¾¯ € þÜÎÆÌ¶]]`@ŽØË€ÇÌ7ÅÉ‚Ç ÊÁ7ÏÈÇÇHÿ›Y‹˜±Š^‚U…N(E=O%$#>~‘”Šuz‰}€Š“¸ÄŽ‰Ã¿ÌÓϘF 4d||€„‚€†‹b@BdU‰„€w–Ÿ›„þÜÍÈΜNhkHgÕÏÈÇÇÌ7ÅÉÇ ÈÊ­:¿ÊÉÇEÿü i\MO38=`k.SK eƒ‰Š…„‡„~|‡v}›¹ˆUq39‰š=LZ ÀÔů™ŒBÿó?paUrœ™ ;aX?:2)9ZM=9DFBKs—Z¦× ÎßÊ´œD£ÂÝèëÜÆ¯œ™B™¨}z€‚€€—‘wˆ þÜÎÆÇÇÉËÚÇÈÌÁ‰¨ÊÉ€Ç Éªb*žØËį™Œ1Ùü¡ÇB¯Ù¨Â¬mD.JT<=\9Gh"aIo^~½r±Ì¥xŒn¢Öïîäη¦—?„c®’tw‹™}‰ þÜÎÆÇÇÉÇ'ÙÆ€Ç˳nSTÉÈ€Ç ÎÁÊ×ÌÇÅ®™Œ-hý¤š J¶¦å’dP;A?iREa\rˆƒ1'^sŸ‰H—ozš­ÃàõíØ¿ª—ª‰7š®|h˜?‰þÜÎÆÇÇÉÄ2ÑÆÇÇÈÉzP]JA²Î€Ç ÉÌÞÉÇÇį™Œ)7üÆ¡­¢Ž:[–4PXx‰ZD[k]F'™u!šaM/dP~¸ÙíïåÊ«›‰e£¹ÈwŠ þÜÎÆÇÇÉÄ7Ì€ÇÉÅcO^J)¡Ó€ÇÉÌÚ€Çį™$èùo¢¡Œ Áš™_Q’wD|—w=yvNn™Øøüøßµœ„”(§o‹ þÜÎÆÇÇÉÄ7Ì€ÇÈË}:: ©Ñ€ÇÉÈ+Õ€Çï™ –üíÍEe m–_Msc°s{•Us£¿îûûôÁ© þÜÎÆÇÇÉÃ7ÌÇʼu:+wÎË€Ç ÉÅ4ÎÆÇÇî™bþ¢Ï𜩅©IV¥‹z›¦p´Ùó÷ôѧ†?¬ þÜÎÆÇÇÉÃ7Ì‚ÇËÎ4¿ÖÍÇÊÆ7Ì€Çî™úͦÿµðÃ+ u\3_ލÎíúøé¸—z° þÜÎÆÇÇÉÃ7̃ÇÑ%ÎÊ‚ÇÉÆ7Ì€Çð“ŽÛû•ÙÖñÎpi’y¸åó÷óÇŸ´ þÛÍÆÇÇÉÃ7̃ÇÌ'ÍÊ‚ÇÉÆ7Ì€Çñ‹Žtÿy°ýìÄ«‹°àîùóà´ŠU·þÙÍÆÇÆ…ÇÆË…Ç7Çò‚Ž ÿ™¸¸ÈÝóñß¾œo»þÖÌÆÇÈ…ÇȆÇÈÇñ~þþßæçÚÆ±Š¿þÔÌÆ™ÇñôÿиªÁþÒ̀ǗÃÀ¯ ­ÆþÌÀ·±¯®®¯¯®®€¯ ®®¯¯®®¯¯®®¯­£–Úþ½¤›™™š™šš€™šš™™šš€™š™™€š€™–í†MéˆMÆßîôý€ÿMÞˆM¼Öëñù‡ÿûôüÿMÔ‡M³Ïçï÷‡ÿþùñàο¯ŸˆnT:¸ÿMɈMÃÛëñú‡ÿü÷èÕÄ´¤|m`PHBAC>4( ÿM¾ˆMºÓéï÷ˆÿ#üðÞͽ¨“xiZLF@=;91+)/369=ADE?5*" ’ÿM³ˆM°Ëãìôý‡ÿ/úôèÚÍÀ°¦£ž–~kNBGWJ *06@@<2))."ŽÿM¨ˆMÀØéîøˆÿ9ûðâÔǹ¦•†yprjtoh`\kz‚†‡‹w\x‘†B&%'09=>?>=<:99:;=<97=EJ8„ÿçMˆMµÐåëõþ‡ÿDûñä×ËÀ¶§›„zsmf^QQeqqs„Ž€|xuƒˆ…„‡yzwwuka^:)7<>@A@@<<:998?Q^^ZCsÿòM›MMªÈßéñú‡ÿþùêÛ˽¯ziZW[`ca_acfg€h6d_nŠŽŽ‡†ŒŒˆˆ…v|„~zzxlvv~ˆ‡Ž„M)8>@CEB@=:97A]rukV4OþùM›M„ÿ$þòáÒȽ²¤™Œ€ti^WMCBB?@DJS^dfhgkuzsef†€‘1Žˆ…‹„ˆ…‹„uszwtqomfupvz|ЉI,9>CCDA?<:Ac€†x[6,÷ÿM›aMøÿ£y‹¥¶²“iSTWWZ\^_]XUPLJIFDCGKRX\]_mƒ‰‰‡pqžŽ’€}‚}|yoosqoln`grisz€ŠˆD76>DEFC=Ac‰“‡c2 !òÿM› Móÿ>@fŽ©¢{SNT€XPYXVNKFCEA?AAEHIIat‘•—Ž‹‚o““‹Šby|}{wrsnloklkbSjekvw{wx„މy[;>FHDE^†™’q7$ãÿM›aMëÿi$\cj”£ˆdOHKNMNOLFB><:9<><5"+-%ÎÿM›aMÔÿƒ,jkQw¥¤†aD>DDFDA>=:4PsM4]œ«®‚…†—”“••‘‡“ŒŒUr„€~zifmefiihaIZ`hnsukiqqtxy€Ž„A5TŸ“uD)0?F? ´ÿM›2Mºÿ—+_eR‚ÂË©pG;;=<;99:3Eˆ¨™…¥¦™‘‚~“™‘““—”˜˜‡|ŠŽdc„€€+ƒnbfegfdQDbgbhkfinorwz|€†Ž€N®¦J8BT]V:ÿMœ1Mÿ«-O]^‘ËÍšYD=7:6776--Žu~†‘’ˆ‹‰y|€Ž“’”’“”Šv‡uX}€€~…ƒyifb`[@Ld^agdoqmput€xvusg—»™C*RlrfH$‰ÿMœ0Mÿ¿.FRWoˆt;3>566569K\‡ƒ}~ƒˆ‹}Œ|ƒ‡Œ‰Œy‹€Xp„ƒ€*vz€p[aO5RYZ_cklhpsuwtx{xyyoW¦PQ{‰yV1yÿM›3MÿÓ8KYJ"%=71653Q“ˆnvxz†ˆƒ„~~“‚v‚‡‡Œ‘Ž‹|~eaƒ€€‚‚€€*†yxb:S]]iigomg`erx{{xwwrt^2†¢›{K/  SÿôM›6Mÿõ`\@ Dd[:?ƒdgs‚^^dmrxwz}‚ƒxy}zz~‹ŠŽ|Qm„~m‹‚g†€€'„v€t]Zeielmpjquutqttqtxƒ‹m¡„K'?ýûM›aMþûkE !BfzlHc”—œzx\Vdgpovw{}xxz~}~ƒ‚ŠŒEp†€o†¹¶‰ej‰ƒ€€†{{‚obahpqkt~uqpvv|{w“Šr„~K  *öÿM›aM÷ÿk&  8_~ˆ€RB9=JZglpOOZ]epru}{|wzz}ƒ‚ˆf]£‚yuÇ­ÊšuhU€‰€~€ƒv|lpnkxxtqqxwx{}ƒŽ‘{[ îÿM›;Mòÿm 5]~‰beC?J\]`gkLFTVgkp~}zwwxy|sCš~q¤ÿŒ;à‹S’\g‰ƒ€€"„yv„ujy|{~~yzyz|…’…‹’‘KÚÿM›IG^iqy{{}xT\¢€zuЀÿ þÄæÿô (cl„…€€…{z„†ƒŠ••—’ˆ’–•””˜•54®ÿM›/M²ÿœ ..$ 9jŠ‚||yvsh`YY``2>D@Wgty|z€vB—~q¬þ‚ÿ,ôÿö` ;x[|†€€‚z}€†Ž—™ŽŒ“–›š•–“ g0-œÿMœMÿ®$-.+ S‚‚~€yzwrnaWS\W,Oisxň|m¦þ†ÿ ï6!.‘Œ¬˜cm‡‚€€‚~tz‰‡ŽŽŽŠ†…†‚†mIÿïM›+Mÿê0+-,.--Éy€€‚{{xof[QRV_<-CDAS`¹ v„q€ô‡ÿ+ϱ…×ø÷ÿݘˆ^{‡€€ƒwx‹Ž‹Šˆ„~|Eÿ÷M›*Mÿö=+/.//( …Õa‰€}}€€{wwseUUTX]12FEF‰Áw€{iЈÿóÿ¨ ‚ÿûÏ«jjƒƒ€ƒŠ€‡ŽŠˆŒ‡ƒƒ{vv_þýM›)MýûM)1101/ ˆ~lІƒ~€||{zwoe\YY]W-8ICØu†cš‹ÿø¿ý„ÿRu€o€‡‰„…†ƒxs|qp0ýÿK›Möÿ^'€1!0-1Ôk^cw|}†ƒ„}xtuhYY\]cT-C–â~mt÷‹ÿþ‡ÿú̪‹l„†|}ƒ‚qy~‹{~xqxuoXúÿK›Mïÿn&310.'Cµu¬“‚†€…‚€~xpoeVTV\kLcãži~^Ì™ÿå „m„—ƒ|€„yn‡‰uposnipiNçÿL›'MÝÿ€#320-,}–ŒŒ„ƒ†‚ƒ‚‚~wna[XWeEÆËgzz›ÿù¾z@W‹‹€€…€tnospjflf`n$ÃÿM›'MÅÿ–#010+,”˜…d„„‚„‚„‹ˆ†‡‡ƒ†€q_WaRé{r}…öÿყ4vŒ„~€†wrrkigere ¤ÿM›M«ÿ¤'0/.(+ºcuŠ…ŠŽ‘ŠŒŠ‡…€‡ u\T]å¡g~|È‹ÿüî©zŠÿë‘S¡Å›UQ‰†€€‚‚{woqnsvO ÿMœMÿµ(.-,&$Ò°|Œ}†Ž‘—š“Ž€’ ‹…ƒƒGÁÓf{z‘ˆÿþù»–¤ðýúþˆÿ´[¯Ž¡_—Bo‹‚€„}zootwU€ÿMœMÿÈ'+**) ?ÞΪ”““‘Ž€“––“”–‘eŠí|p{Šä…ÿ ûÔÞýÿþöðüáˆÿ½z¯›"+9‘XW†ˆ„€…|uqx|'lÿM›MÿÚ''&$)g{€ƒ†ˆ•”€“ —›™‰Rï§d€Á‚ÿüꪈ¹ûþÿüÆq+Rÿ³ŠÿjCˆ]_Šˆ€~‚uqt'VÿñM›8Mÿî-"$# T˜vrqrsrt{~Š“š™–˜Ÿ¢EÆábyy—þÿÿð·“—óýÿþòu#Kx¯¶7úˉÿª…"~0+t‰…€ƒ{yoe CÿøM›9Mÿ÷8 #" S©Ž†„…€€|€‚†„†Š‘¡¤¬s€ök{ŠìÜ›ƒÖüþþû™Z>^æçQš³¾…ÌÝï†ÿú’‡<¢a\€†€€‚€zvnEùþM›9MûýG!L’qou{~~}†‘‘ =ó°`~¤±úÿþýÒh)v±ñç{—¡ÁÃÄÔ±ªëÔ†ÿá‰(ƒ\p†‚€ƒƒ{wl‡þM›9MôÿXsž‡ŠˆŠ„‰Š‰ƒƒ€‡”—4Èçay|’þþø†2@n·ÐåFdy`|€©ÊÊÔšëÆ†ÿ}€„3~œpf~†€„‚wqie›:Mìÿjv”–™‘Š‘‘“”’‹‰Uvù€j{ƒ¸A-H¤Úé·‡–›™«´´·Ñɽ»Å®ÛÏúƒÿàG‹lžÛ±•Œfq~€€„|w†ŸMšMÖÿ} r†‰‰‹‹ŒŽ€Š'Œrk¨â5õ·_~{‰<„âÊÛÛ¥®¬°¾¡¤Ž±ŸoM_kS²¼ãáƒÿ¨1*‚+1ªõøÿט•o„~€€v”Ó‘›:M»ÿ n…‰†ƒ…ˆ…„{d€êüþû3Æñdx|‡›Ÿ‚ŽfbXac\^U^StdeŽr‘seƒf˜ñÐ…ÿô¬f=%m¥p?1.R‰Áÿûÿÿö°ŠÆ†}z¶°I›;M¢ÿ¡b‚ƒ„€ƒlgÁýþþüá‡Agø‚g~‚šypi†v‡‘u”‰‡€q™~tŒ¨}„{utŒsíÈþ„ÿç¬Îñë·½áûÿèûà¡J³Öÿ  ©¬}~ž·¦M›;M‹ÿ³a‚{gcš÷þþýø«P)óÁ`€|”‘›•ޤ˜‹žŽš˜’£Š„…¢Ž ˜}PÚÖó„ÿùåô÷‡ÿßÐæ€ÿ ×…Â~´ƒüM›:MÿÈ\ƒÚýþÿýÙo !½ôgvvŒƒŒ’rŽ™“•‹†Ž‘¢˜– žwq‰‡~}Y­éÜ‘ÿþ±(uúÿø€Á•{‡¥_ÿM ›Mì«[°ù€þ1õ™+ "!/^ù‰d~‚‚–Ž•ŸŒ’ŠŠŒ’“¨œ€€—‡ˆ‡„~¨côËÿýüÿì^lÿª¦¯{‚™§CQÿM˜HSj‘ãüþÿüÌO  €*$(ñÅ]~y”†ŽŽ”‡‘¢ˆ“ŠŠ˜•‡{™ˆoœ€Œ~¶§‚ZéËüŽÿþðüÿÿ°g€Ãƒ~€¨u?ýúM”?Ue‚Àúÿÿýí„ ! ‚("°öku{‰µ‚œ‘Ÿ›”– ¡¨€~‚“™’›¢œš™œKËÜç”ÿÜp¿˜{‡£›&,÷ÿM‘ Ya~ªîüþþú­*€6*Zø’ax{ƒ”™¤ˆ‡œ–‰Ž ŸŽ§s’®‡v›vš™ƒ€œžNï×”ÿ¡¢²{‚—«OïÿMi_v“ÊùþýýØa€/&-åÎS‹˜”„p©u{ŒˆŽ›“…~‚·wš‚˜¡“’’›Ž“œhnòÉ“ÿà}Ã…}°ƒÛÿM‰f_j€¶ñýþüðˆ  ƒ0 / õjt˜‹€–‰€„Ч‹–•ƒƒœ¶œ„Ÿ–’—†}Š‘‰ˆIãÒö‘ÿû„¾›{~„©¡, ÆÿM†fav¡ìýþþû¶8€0 \ô˜[“†ìÀ¨xmŒž…€‡…–¯œ„€‹•‹“‘‘™”ƒ’E½äá‘ÿ³Ÿ¶|€˜½N °ÿM‚ NZj‹Âüÿþþü`€ # €5 :ÒÑ]’„n¯åìÉ»ˆŒž¤‰‘{•›ƒ{¤Ž˜’ŽŒ˜•”•†—RŠóÎÿæć}~‹·” •ÿMHw„²òþÿýú­ "& €3,’îrhŒ‚m#R¬©»§”™›Š”‹ˆœŽƒ˜”‰‘•Žˆœ‡ˆ‡˜u\îÇþŽÿý†»ž{ƒ¨µ" „ÿMˆñùýùÂA *+* €€€2  _ç£Y¥o–·¶‚[3b°Ö™’™ŒŸ™ˆ“˜¢€•’”…”˜”ˆ@×ÖðŽÿ º›¸}•Åi €uÿMùÚ %#€‚€€0<¾Ðb{«‰—£Ž‰žª–j>W²ëϘŒ™~”–šƒ–—Š•œ“Šš–Œœ‡•’¡F©êЋÿqÅ]{ĉ}‰¶Ÿ ^ÿM ^æù# -‹ä|kœ{™’’‹‘ŸŠ`0këä­¡†–|‹ž‹“šŒ“¡ŒŠ“–’‹‹˜Uvô»‹ÿ ÆM¶¡z‚¤µ+€(9;&\ÿME´þ=€€€<  !]צ]‹§r˜{“”“‘«‚,I¸ìÜ–£ˆ––’š‹‡‘‘‚”ž‘‘|LéËü‹ÿq´›§~”Âu0@;03HYYPpþûM‹þ•!O†­‰¨çòÁp·’—D¹Ìhy¥Œ|Ž‹–ŠŒ‰‘Œ‹‘˜„®Wmçݲ•›˜’ŽŠ…œ“•š…–—’Œ<ÊÞçŠÿõ˜›{~Œ»;eƒyaUWXTOrûÿMpóç ‚M%<_†¿©áêöU°Î‡GÆjj„݃iœ ŒFRm¢”‰‰‚‘…Œ“”¢ˆ3#Ýõ¦{‹‹“†•“”‰Š’‹– Ž•™M–ðÔŠÿr´žƒ„—>8g”’zcUTT?PóÿM\Ðû 4s¡¬½Ïê$»VuaAt+`HlXYÒªaŠ¥€î—«$=q‚²™•‘‘Ž—œ›R%r÷¶„œ’“•’’‘‘’‘‘Ÿ”’“—cdóljÿ Ù—|€•—q$'FŠvaY^bO@ßÿMHŸÿQ€P2}¨»Ð®¼.œ#hM„if‡VC´Ëjw§ÖŸæúß^¡‹’’‡ˆ“’”¨r'¥ù³b’–œ›Ÿ˜Ž”˜Ž•˜’„CãÔú‡ÿõ™œ|€~ŒŸ844@cmd[UZ[Q>ÍÿM€týÌ„M.½Ð˜¹Ä–B@(V•Òf[MQRheV~ÞˆešŸ'B Aýþ÷1;n¢¥…Œ€…š ‘~#†ñÒn‘žŠŽŒ‰’£”—”9¸è݇ÿ¹ž…~…›ŠjZYVQW^\WRQNJ>»ÿM€YVûür»œº®\ÖŸ:tvT^YG;S^ombjSÖ°`ˆ©‰šÇÚkW*øùÁM9| ·” ‚˜“žt‹ùÄ‚‹‰’‡”“š’•š˜Œ‡‘žNƒõ͆ÿÖ–’|€•˜y_^_[VVURPONHE:ªÿM€Z$Éþ 3¥»Çuœ‚j ‚ftZrSsvc^X^d^F­Õks¤‘¨¹È¼iìö÷ ÔYíÃQ~¹‰£—‹’‚:t÷±•“‘’•£–›‘‘˜”‹˜hTíÊþ„ÿ£‚ž}€‹€ROUVQOKJGGIHGH4—ÿM…ÿ…Z«²µ¶Q{gH4J[em^]iO€W9Qtë‹f˜Ÿ‹Jzn’Ÿ„Ÿ#osÈŸIqøa剕 ‰Ž’z>}öÀoš†Ž‰‹Š›“‹›ž–‡8ÔÛñ‚ÿósNŸ†~ƒŸŒ^8;FHFFEDDFNMMH+€ÿM€YYýñzªµV·yR~{f^]`SQRRUSSPOPOIܸ_ƒ©ƒ’e‡nˆ^£®º‚z²­móU t›È{Š‘“yC”ó±o©‚‹’•‰—‘‰‰œ?£ìØ‚ÿc"“”|€€–™u00.27;::?DEKIH? fÿM €P=øý¯®×x)h€rejO[MQMMOOMG?B;°èev¢•ˆ¢{Ÿ¤ž‰‰Še‰‰¸œjœ “à¥p¾u½‡—…••t:™ø„rž£ŒŒ‘“€Ž•OnôË€ÿß\ už~€}‹ !*2/,35217:<=?8PÿM{³ÿ4ˆ‰®—k%‹a?IW[JLJNKDBA=;5=lô_™¢n„}‹•ˆŒŽ„§ž˜¥d —¡µ‡¬ö½ ,³·—¼}Ž’™rL¿è¡€©š“™…‡““švFèÎûÿ¤ Mž‡~€žŽY$%+27520.03-6ùþM{rÿ‘‘©n®‚Hg€0WLGFIGJJC@863.95ïÃYƒ©€FBEHYhy‚~Ž–…¨Y}±èí O‚¡š‰›‹cJéÏg¨ž¤’—”––›™–‹0Åà¯e‘–|€~“œv #%%!  óÿM{BýìB¨¥†<]q[l`TGHGHGC>:51.'(¬ôfp¤—®±²ŸkllCCQhv}‘Œ‘‹x|a—‡Þò,‡§¶¢‹„—Pˆó¬f`š•’Œ‰’–“@ò^p€}‰¡% +?Xm‚—¡¶ûÿMq$çþ0¦{qngrpQ@ONGFG@;622,%*DaV÷‘[™£{ƒvjUbª ¨pY;Lix‹–€¨|r±pŸûL#¦bŒžЦ{D¸áª›”Ššš†‰‹•^^ò Fˆ~‚œb#)4G]v‹›®ÂÚíú†ÿM‚f—ÿ]©]L‰M[RHF@CFC@91.-'8g˜¨'òÍYƒªŒÜâÖ̸³¬lc`u¿§]CCX|ˆ‚–±–°~£ý7 Ü˜~™ lXí¾}¨¦…“Š”‘—™=ßÑ"*˜|€“{Ñç÷ü‡ÿúòïåÊ®M‚bbÿ® u`FDH>B?@B?=71.$9k¡¾ÇR¨öbj¡™X[U]]d³¼ßÑ…S¤ñ¸ƒA@o“†‰‡–r–’Œú>Mb¢«ƒˆŠQ‹Õ„sÆ”…—£–•5³éÕ”„}ˆ¢ƒä€ÿþøôñÚ¹ˆM†Z4üû[ENG??92.)2h§ÃÔùÉMú–Z–¥envssvoJA'LeŒbœw|ÑÉg/]™y·“x‘”i÷ O±´Š‚‰wSãÛmž‡Š’—’‘ŸL~ô¦v€€œ’…‡M‘YUÉþQLE@BA@C?;0.+OšÄÛùü½ì×R~§Š‹›t «À‹¬‰¡gdvz‰n§äª>Cyš|‹‘~›¤´ø@¡•‹‘™^`ë¿x™™š –Ž‘“bNÙv€€~’œwNœ_ÿ‚ <=ACABD@5,+oºËïûÑeT™ôqo¨—F;Ž4A¤Dµe¥ÈÎŽ1…‚ bnšÂpBrŒ“…qp~ªˆõd…«œz˜‹S¢×´¦{§™ƒ—›˜‰3Ž{€~…¤…u^QþíJCEC@@>608ÊÞ÷àk !Yõ h~‹yh~•\Å0¢0ºR_š<„ÑŽf‚i—A­y4f‘{©ž€‰7çÚ «§—zŒ†m[ݱzŠ˜›€’Ž“Lv€~œ•tž^<öþ CBBC@740>˜Ïèó±OzèQ€¹x„€}x{u‰eœ4ŸpT”Zc`Y¼m•Ì›dyì±*¦’:k‘’•¨×SüYIj¼“{•—Z“å´’Œ´˜¥Œ…˜•p€€|yUž]U¬þNDA@<51;™Õêë—ƒõüˆºbH}‹€‚}yy–KdgcZ…aN® Zh"ŠØ¤J*ÀÌ=£|>n’Ž‹˜…¯Uü Y¾‚|‘ž~S½¶†“Š|Ÿ…”|{€~†£…x [mþ§C?>:2:–Óì磇ôÂ=0˜’Lh†ƒ€€{yv¹n6TlV}2‘Tx o´{P+·Ó.¬y:ƒ£‡Y¢gšð }¸¤}˜“_ŠÏ¨§ž“‡††u€–u¡[<ýøFF<75Öì笓aÁ öe·V€Õn]{ƒ€~y}°·dZ­ÂSaÂÕÑ“¡¦°Ý¬³«¦Ã“ɶ{cyƒ€z{©¦6C·V¹™Ÿ®°–.¡ÐM¸:€™‡’¤’Vúcƒê[ƒµa´w~€€}|žœ#Óè_£YGý½¢ñè£`sÈÔT®¾u‘੨®®ÐÓ§sÏÁÈÝæêå®fk‚ƒ€|wÅ¾ŠŠngƒ{w{]Oèi`Wž•ŸŒœ™_—q5ŽÍ“Š”Vˆy‚€€zŽ™B ô”¤Kíé–óÕ¶¿jšg|™omÐÃÀ¢œÁ·¨­fÄï£ÊÝïéÞÝ^w†‚yg_’\c›;d©™F±¹UŒC’€›Ž…{q…ðaœÅqŒ’u€€ }„žs$mô¶¤Y­ù’ß×îøaT•[Žlž®JE¤•ªÝÀÅËp‹ª¸©ÌÀ²[a„†€„{yƒ%‹qETH¤ŽtläU›;|’›“ˆ tÞRг|w~€€—‚002>NãÓf£Roû¦ºâñí° \ˆŒX4tº¢mTݘÅᦱ©r“Ž ½z\~ææyLu‹…‚„x¢¬¬Ôx»”ˆKër—k]}†wqÃè Ö–¶x‚€€}‹™M&€ÿœþ¬‡W:øÉ–õô‡’—.(:¯é~PœÑº³¼§‹¬œÆ²˜ÒÀRR³üñ©MTŠ€€‹‡5-3€¼šPµºkrN¡¡¤´•~tpÌZ>ieuƒ€€„š€03ÿÞÊÊÑ‚ÒÑ‚ÒÑÑÐÏψÇÕ»š‡VUÕíõóo*›Â‹„ŽÂÉ‹Qˆ„eiëŒeĸ‹„¢óì­˜´ÇÍÞØÇu2o“‡|xŒ„p_Æ¡XœÎW¤E‰¢—~Œ—o€ÛO¶`}ƒ€€’‘84VþêÎÆŽÇ‡ÅÆÊ¸›ˆU‘ù›ãî­L€?=MA] ':W./gzw‚ˆxHk»”‚™˜[¸tl`I>[ŸŠ;<½¯±†w{€y…‰jˆ€|}”f†þÜÍÉÊÊ®}*žÕÌÈÇÇÌ7ÅÉ€Ç É¿”—¨£ÎÐÅ®™‹Dsÿ’QYFW©†{gs™m^^`JLA-##MholR;Brλ˜¹·›§(„/^tFÓ~5_­½¿Š©~z€‚{‡€}‘z‡þÜÎÇÈÉÍÁ’ÍØÍÈÇÇÆÌ7ÅÉ€Ç É»‰—ª”gÀÓÆ¯šŒ:ÿÁƒ{ŒYtchf85$3"&9I1"/+"Xf…έ¢ÃѼ¼P4UŒV¦¤ÈæëæÖ¹rª‘s~€{†ƒˆ þÜÎÆÇÇËÏÝÈ‚ÇÌ7¿Ê€Ç ÈÃ’ˆ…?-ÄÓÆ¯™Œ;üó?k^ M`ŠŽ)TP<4,#6RD72<@;Bq’X£Ô ÊÚ­šD¤ÂÞéëÜůŸ™Hª}x€€—’wˆ þÜÎÆÇÇÉÌÚÆ€ÇÈÈÆ—²ÊÇ ÉºH4¦×Ëį™Œ1ØúžÄ>¥Ö¿¦k9&AJ25U3AaZBl_w²n­È rŒo¡ÕïíåÏ·¦—?„cµ‘v}{Š›‰ þÜÎÆÇÇÉÈ'ÙÆ€ÇɽŸ““­ÈÈ€Ç ÌÕÎ×ÌÇÄ®™Œ-jý¤’ H´©æ‘^? 086`H;USk‚)"VfŽ…E•mt˜¬ÂâöíÚ¿ª›ª‰7–¯zh™?‰þÜÎÆÇÇÉÄ3ÐÆÇÇÈȤ˜ •¿Ì€Ç ÊÊÝÈÇÇį™Œ);üè ?d“;?bO4QaS:˜r”YA%]˜K}»ÙíïæÊ®˜‰h¤»ÈwŠ þÜÎÆÇÇÉÄ7Ì€ÇÈÆš— ”uµÏÆÇÇÉÌÚÇÇÈį™$çøp¦™ {´—’L?‚‰e7t•o0qrGi˜Üøüúݵœ”5§o‹ þÜÎÆÇÇÉÄ7ÌÇɦŒ~@²Ð€ÇÉÇ+Ö€Çį™ ˜ü’ìÆGf i—[CgS¼©bp’Js—ž¾ðúûðÀ›© þÜÎÆÇÇÉÃ7ÌÇÉæi@ƒÎÊ€ÇÉÆ4΀Çî™bý¤Òì—¥€¥LT™j’ a™|²ÛôøôÔ¡‰?¬ þÜÎÆÇÇÉÃ7Ì‚ÇÊÐ0ÈÖÌÇÉÆ7Ì€Çî™úÍ©ÿ¸ï¿-oZ/VˆªÍîúøé»—z° þÜÎÆÇÇÉÃ7̃ÇÏ%ÏÊÆÇÊÆ7Ì€Çð“Žâû—Ù×ïÅbcx¸æõøñÆ¢´ þÛÍÆÇÇÉÃ7̃ÇÌ&ÍÊ‚ÇÉÇ7Ì€Çñ‹Žqýz´þíÁ¥…°ßî÷óÜ®…U·þÙÍÆÇÆ…ÇÆÊ…Ç7Çò‚Ž !ÿ•…¹¹ÈÝôóབo»þÖÌÆÇÈ…ÇȆÇÈÇñ~þþâåçÛů¿þÔÌÆ™ÇñôÿϺªÁþÒ̀ǗÃÀ¯ ­ÆþÌÀ·±¯®®¯¯®®€¯ ®®¯¯®®¯¯®®¯­£–Úþ½¤›™™š™šš€™šš™™šš€™š™™€š€™–t8mk@ 6ÿÿÿÿÿÿÿÿÿ *ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ !ÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  1ÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ &ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ# ÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ< ÿÿÿÿÿÿÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿU#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ+%ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ] ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿGÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ` ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿh ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%ÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ=ÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿW ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿoÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ6oÝûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ%a®÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿK…Þüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ3iËõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿY£ôþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ D|âúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ-5i¹ôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿEÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_†ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿv>þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ,üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ0ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿJòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿd€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ„ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ÿÿÿÿ˜ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÿÿÿÿÿÿ1ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLzÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÔÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿWÉÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèTÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿgüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþkÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ¾ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñAÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéÀt>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôÕQÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“)ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÜÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿý ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÝÜÿÿÿÿÿÿÿÿÿÿÿÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüåžX .üÿÿÿÿÿÿÿÿû ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÀs*ªÿÿÿÿÿÿÿxÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðäÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõÝŠJ üÿÿÿÿéÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðIÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþñª\ ¦ÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüëwü·ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýúš;ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúÏ[ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüöƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþú­>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðûÿÿÿÿÿÿÿÿÿÿÿÿÿûâgÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðUÿÿÿÿÿÿÿÿÿûõ™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿÿÿÿüè§ZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿÿýÁx7ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÇ2ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôÿðððððððððððððððððððððððððððððððððáPRICE-1.3.0/PRICE-T.xcodeproj004075500017500000012000000000001245331715400146415ustar00multixusersPRICE-1.3.0/PRICE-T.xcodeproj/project.pbxproj010075500017500000012000002027021243151314700177730ustar00multixusers// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 42; objects = { /* Begin PBXBuildFile section */ 8526E92510C91A2E0072C369 /* MyDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */; }; 8526E92610C91A2E0072C369 /* PRImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = F50E085E03A8B3A001317B72 /* PRImageView.h */; }; 8526E92710C91A2E0072C369 /* PRWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = F50E086203A8B47901317B72 /* PRWindowController.h */; }; 8526E92810C91A2E0072C369 /* AppController.h in Headers */ = {isa = PBXBuildFile; fileRef = F50E086403A8B47901317B72 /* AppController.h */; }; 8526E92910C91A2E0072C369 /* PRGrayscaleFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = F568E20703B757F201A80101 /* PRGrayscaleFilter.h */; }; 8526E92A10C91A2E0072C369 /* PRTransforms.h in Headers */ = {isa = PBXBuildFile; fileRef = F568E20C03B77C9A01A80101 /* PRTransforms.h */; }; 8526E92B10C91A2E0072C369 /* PRConvolve55.h in Headers */ = {isa = PBXBuildFile; fileRef = F51A79AC03D9642D01A80101 /* PRConvolve55.h */; }; 8526E92C10C91A2E0072C369 /* PRCConvolve55.h in Headers */ = {isa = PBXBuildFile; fileRef = F52B6E0903DDC6C201A80101 /* PRCConvolve55.h */; }; 8526E92D10C91A2E0072C369 /* PRFourier.h in Headers */ = {isa = PBXBuildFile; fileRef = F551DF3203E1B5CF01A80101 /* PRFourier.h */; }; 8526E92E10C91A2E0072C369 /* PRDFTLowPass.h in Headers */ = {isa = PBXBuildFile; fileRef = F58A013E051379F90163C8F7 /* PRDFTLowPass.h */; }; 8526E92F10C91A2E0072C369 /* PRCDFTLowPass.h in Headers */ = {isa = PBXBuildFile; fileRef = F58A014205137A870163C8F7 /* PRCDFTLowPass.h */; }; 8526E93010C91A2E0072C369 /* FFT.h in Headers */ = {isa = PBXBuildFile; fileRef = F58A01490513B6E80163C8F7 /* FFT.h */; }; 8526E93110C91A2E0072C369 /* PRCDFTHighPass.h in Headers */ = {isa = PBXBuildFile; fileRef = F5DD42EB053AAEF901A80103 /* PRCDFTHighPass.h */; }; 8526E93210C91A2E0072C369 /* PRDFTHighPass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55BF70E054909D501A80103 /* PRDFTHighPass.h */; }; 8526E93310C91A2E0072C369 /* PRDFTFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = F5DC9E42056A98E601A80101 /* PRDFTFilter.h */; }; 8526E93410C91A2E0072C369 /* PRCEqualize.h in Headers */ = {isa = PBXBuildFile; fileRef = F5E238A405808FD801A80103 /* PRCEqualize.h */; }; 8526E93510C91A2E0072C369 /* PREqualize.h in Headers */ = {isa = PBXBuildFile; fileRef = F5E238A8058091EB01A80103 /* PREqualize.h */; }; 8526E93610C91A2E0072C369 /* PRHistogram.h in Headers */ = {isa = PBXBuildFile; fileRef = F54D8D5C0588ECEB01A80103 /* PRHistogram.h */; }; 8526E93710C91A2E0072C369 /* PRCHistogram.h in Headers */ = {isa = PBXBuildFile; fileRef = F54D8D660588ED9101A80103 /* PRCHistogram.h */; }; 8526E93810C91A2E0072C369 /* PRCumHisto.h in Headers */ = {isa = PBXBuildFile; fileRef = F59B4FBB0591D102011CE379 /* PRCumHisto.h */; }; 8526E93910C91A2E0072C369 /* PRCCumHisto.h in Headers */ = {isa = PBXBuildFile; fileRef = F59B4FBF0591DA41011CE379 /* PRCCumHisto.h */; }; 8526E93A10C91A2E0072C369 /* PRHisto.h in Headers */ = {isa = PBXBuildFile; fileRef = F59B4FC305921408011CE379 /* PRHisto.h */; }; 8526E93B10C91A2E0072C369 /* PRCHisto.h in Headers */ = {isa = PBXBuildFile; fileRef = F59B4FC7059214C7011CE379 /* PRCHisto.h */; }; 8526E93C10C91A2E0072C369 /* PRCTraceEdges.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B3A92205B53FF201A80101 /* PRCTraceEdges.h */; }; 8526E93D10C91A2E0072C369 /* PRTraceEdges.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B3A92905B5568F01A80101 /* PRTraceEdges.h */; }; 8526E93E10C91A2E0072C369 /* PRCCustTraceEdges.h in Headers */ = {isa = PBXBuildFile; fileRef = F59300510609F6AE01A80103 /* PRCCustTraceEdges.h */; }; 8526E93F10C91A2E0072C369 /* PRCustTraceEdges.h in Headers */ = {isa = PBXBuildFile; fileRef = F5930058060B2ED001A80103 /* PRCustTraceEdges.h */; }; 8526E94010C91A2E0072C369 /* PRCMedian.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D67DAF0612D96501A80103 /* PRCMedian.h */; }; 8526E94110C91A2E0072C369 /* PRMedian.h in Headers */ = {isa = PBXBuildFile; fileRef = F538441D0612E9BF01A80103 /* PRMedian.h */; }; 8526E94210C91A2E0072C369 /* PRCProgress.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B0F9640686C3B701A80101 /* PRCProgress.h */; }; 8526E94310C91A2E0072C369 /* PRProgressAction.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B6257006881DCE01A80101 /* PRProgressAction.h */; }; 8526E94410C91A2E0072C369 /* PRCScale.h in Headers */ = {isa = PBXBuildFile; fileRef = F59EB61D079F1C9101A80103 /* PRCScale.h */; }; 8526E94510C91A2E0072C369 /* PRScale.h in Headers */ = {isa = PBXBuildFile; fileRef = F59EB621079F1CA501A80103 /* PRScale.h */; }; 8526E94610C91A2E0072C369 /* PRCrop.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D9F4B807AD974901A80101 /* PRCrop.h */; }; 8526E94710C91A2E0072C369 /* PRCCrop.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D9F4BA07AD976001A80101 /* PRCCrop.h */; }; 8526E94810C91A2E0072C369 /* PRCBriCon.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C8A2A307EED49E01A80101 /* PRCBriCon.h */; }; 8526E94910C91A2E0072C369 /* PRBriCon.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C8A2A707EED52A01A80101 /* PRBriCon.h */; }; 8526E94A10C91A2E0072C369 /* PRImage.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D38DD508FDA41801A80101 /* PRImage.h */; }; 8526E94B10C91A2E0072C369 /* PRCGrayscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E2FA3B0B5CE7AA003E7B25 /* PRCGrayscale.h */; }; 8526E94C10C91A2E0072C369 /* PRInvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 85D196360D0A063900A80101 /* PRInvert.h */; }; 8526E94D10C91A2E0072C369 /* PRFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 85F3E8020EC5003200B9D568 /* PRFilter.h */; }; 8526E94E10C91A2E0072C369 /* PRCInvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CBE1320ECE08B200A80101 /* PRCInvert.h */; }; 8526E94F10C91A2E0072C369 /* PRCFourier.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CBE1360ECE113300A80101 /* PRCFourier.h */; }; 8526E95010C91A2E0072C369 /* PRCTransforms.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CBE13A0ECE328400A80101 /* PRCTransforms.h */; }; 8526E95210C91A2E0072C369 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */; }; 8526E95310C91A2E0072C369 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */; }; 8526E95410C91A2E0072C369 /* PRWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B4FDCFA73011CA2CEA /* PRWindow.nib */; }; 8526E95510C91A2E0072C369 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165FFE840EACC02AAC07 /* InfoPlist.strings */; }; 8526E95610C91A2E0072C369 /* Convolve55.nib in Resources */ = {isa = PBXBuildFile; fileRef = F51A79A603D95E3101A80101 /* Convolve55.nib */; }; 8526E95710C91A2E0072C369 /* README in Resources */ = {isa = PBXBuildFile; fileRef = F537CAEE0500A8B801A80103 /* README */; }; 8526E95810C91A2E0072C369 /* DFTLowPass.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58A014605138B000163C8F7 /* DFTLowPass.nib */; }; 8526E95910C91A2E0072C369 /* DFTHighPass.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5DD42E8053AAE5201A80103 /* DFTHighPass.nib */; }; 8526E95A10C91A2E0072C369 /* Equalize.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5A3DD6B058349E601A80103 /* Equalize.nib */; }; 8526E95B10C91A2E0072C369 /* Histogram.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54D8D6A0588EE6201A80103 /* Histogram.nib */; }; 8526E95C10C91A2E0072C369 /* CumulHistogram.nib in Resources */ = {isa = PBXBuildFile; fileRef = F59B4FCB05923027011CE379 /* CumulHistogram.nib */; }; 8526E95D10C91A2E0072C369 /* TraceEdges.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5B3A92605B5469C01A80101 /* TraceEdges.nib */; }; 8526E95E10C91A2E0072C369 /* CustTraceEdges.nib in Resources */ = {isa = PBXBuildFile; fileRef = F59300550609F83101A80103 /* CustTraceEdges.nib */; }; 8526E95F10C91A2E0072C369 /* Median.nib in Resources */ = {isa = PBXBuildFile; fileRef = F538441A0612E0D001A80103 /* Median.nib */; }; 8526E96010C91A2E0072C369 /* ProgressPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = F52855C60689AB0301A80101 /* ProgressPanel.nib */; }; 8526E96110C91A2E0072C369 /* Scale.nib in Resources */ = {isa = PBXBuildFile; fileRef = F59EB627079F2ED301A80103 /* Scale.nib */; }; 8526E96210C91A2E0072C369 /* Crop.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5C7F8ED07C75C6901A80101 /* Crop.nib */; }; 8526E96310C91A2E0072C369 /* BriCon.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5C8A2AB07EED94A01A80101 /* BriCon.nib */; }; 8526E96410C91A2E0072C369 /* price128.icns in Resources */ = {isa = PBXBuildFile; fileRef = F5C941A908261B5E01A80101 /* price128.icns */; }; 8526E96510C91A2E0072C369 /* Grayscale.nib in Resources */ = {isa = PBXBuildFile; fileRef = 85E2FA3F0B5CEAF3003E7B25 /* Grayscale.nib */; }; 8526E96710C91A2E0072C369 /* MyDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */; settings = {ATTRIBUTES = (); }; }; 8526E96810C91A2E0072C369 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4B0FDCFA73011CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8526E96910C91A2E0072C369 /* PRImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = F50E085F03A8B3A001317B72 /* PRImageView.m */; }; 8526E96A10C91A2E0072C369 /* PRWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F50E086303A8B47901317B72 /* PRWindowController.m */; }; 8526E96B10C91A2E0072C369 /* PRGrayscaleFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = F568E20803B757F201A80101 /* PRGrayscaleFilter.m */; }; 8526E96C10C91A2E0072C369 /* PRConvolve55.m in Sources */ = {isa = PBXBuildFile; fileRef = F51A79AD03D9642D01A80101 /* PRConvolve55.m */; }; 8526E96D10C91A2E0072C369 /* PRCConvolve55.m in Sources */ = {isa = PBXBuildFile; fileRef = F52B6E0A03DDC6C201A80101 /* PRCConvolve55.m */; }; 8526E96E10C91A2E0072C369 /* PRFourier.m in Sources */ = {isa = PBXBuildFile; fileRef = F551DF3303E1B5CF01A80101 /* PRFourier.m */; }; 8526E96F10C91A2E0072C369 /* PRTransforms.m in Sources */ = {isa = PBXBuildFile; fileRef = F568E20D03B77C9A01A80101 /* PRTransforms.m */; }; 8526E97010C91A2E0072C369 /* PRDFTLowPass.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A013F051379F90163C8F7 /* PRDFTLowPass.m */; }; 8526E97110C91A2E0072C369 /* PRCDFTLowPass.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A014305137A870163C8F7 /* PRCDFTLowPass.m */; }; 8526E97210C91A2E0072C369 /* FFT.c in Sources */ = {isa = PBXBuildFile; fileRef = F58A014A0513B6E80163C8F7 /* FFT.c */; }; 8526E97310C91A2E0072C369 /* PRCDFTHighPass.m in Sources */ = {isa = PBXBuildFile; fileRef = F5DD42EC053AAEF901A80103 /* PRCDFTHighPass.m */; }; 8526E97410C91A2E0072C369 /* PRDFTHighPass.m in Sources */ = {isa = PBXBuildFile; fileRef = F55BF70F054909D501A80103 /* PRDFTHighPass.m */; }; 8526E97510C91A2E0072C369 /* PRDFTFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = F5DC9E43056A98E601A80101 /* PRDFTFilter.m */; }; 8526E97610C91A2E0072C369 /* PRCEqualize.m in Sources */ = {isa = PBXBuildFile; fileRef = F5E238A505808FD801A80103 /* PRCEqualize.m */; }; 8526E97710C91A2E0072C369 /* PREqualize.m in Sources */ = {isa = PBXBuildFile; fileRef = F5E238A9058091EB01A80103 /* PREqualize.m */; }; 8526E97810C91A2E0072C369 /* PRHistogram.m in Sources */ = {isa = PBXBuildFile; fileRef = F54D8D5D0588ECEB01A80103 /* PRHistogram.m */; }; 8526E97910C91A2E0072C369 /* PRCHistogram.m in Sources */ = {isa = PBXBuildFile; fileRef = F54D8D670588ED9101A80103 /* PRCHistogram.m */; }; 8526E97A10C91A2E0072C369 /* PRCumHisto.m in Sources */ = {isa = PBXBuildFile; fileRef = F59B4FBC0591D102011CE379 /* PRCumHisto.m */; }; 8526E97B10C91A2E0072C369 /* PRCCumHisto.m in Sources */ = {isa = PBXBuildFile; fileRef = F59B4FC00591DA41011CE379 /* PRCCumHisto.m */; }; 8526E97C10C91A2E0072C369 /* PRHisto.m in Sources */ = {isa = PBXBuildFile; fileRef = F59B4FC405921408011CE379 /* PRHisto.m */; }; 8526E97D10C91A2E0072C369 /* PRCHisto.m in Sources */ = {isa = PBXBuildFile; fileRef = F59B4FC8059214C7011CE379 /* PRCHisto.m */; }; 8526E97E10C91A2E0072C369 /* PRCTraceEdges.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B3A92305B53FF201A80101 /* PRCTraceEdges.m */; }; 8526E97F10C91A2E0072C369 /* PRTraceEdges.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B3A92A05B5568F01A80101 /* PRTraceEdges.m */; }; 8526E98010C91A2E0072C369 /* PRCCustTraceEdges.m in Sources */ = {isa = PBXBuildFile; fileRef = F59300520609F6AE01A80103 /* PRCCustTraceEdges.m */; }; 8526E98110C91A2E0072C369 /* PRCustTraceEdges.m in Sources */ = {isa = PBXBuildFile; fileRef = F5930059060B2ED001A80103 /* PRCustTraceEdges.m */; }; 8526E98210C91A2E0072C369 /* PRCMedian.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D67DB00612D96501A80103 /* PRCMedian.m */; }; 8526E98310C91A2E0072C369 /* PRMedian.m in Sources */ = {isa = PBXBuildFile; fileRef = F538441E0612E9BF01A80103 /* PRMedian.m */; }; 8526E98410C91A2E0072C369 /* PRCProgress.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B0F9650686C3B701A80101 /* PRCProgress.m */; }; 8526E98510C91A2E0072C369 /* PRProgressAction.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B6257106881DCE01A80101 /* PRProgressAction.m */; }; 8526E98610C91A2E0072C369 /* PRCScale.m in Sources */ = {isa = PBXBuildFile; fileRef = F59EB61E079F1C9101A80103 /* PRCScale.m */; }; 8526E98710C91A2E0072C369 /* PRScale.m in Sources */ = {isa = PBXBuildFile; fileRef = F59EB622079F1CA501A80103 /* PRScale.m */; }; 8526E98810C91A2E0072C369 /* PRCrop.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D9F4B607AD972F01A80101 /* PRCrop.m */; }; 8526E98910C91A2E0072C369 /* PRCCrop.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D9F4BC07AD976F01A80101 /* PRCCrop.m */; }; 8526E98A10C91A2E0072C369 /* PRCBriCon.m in Sources */ = {isa = PBXBuildFile; fileRef = F5C8A2A407EED49E01A80101 /* PRCBriCon.m */; }; 8526E98B10C91A2E0072C369 /* PRBriCon.m in Sources */ = {isa = PBXBuildFile; fileRef = F5C8A2A807EED52A01A80101 /* PRBriCon.m */; }; 8526E98C10C91A2E0072C369 /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = F50E086503A8B47901317B72 /* AppController.m */; }; 8526E98D10C91A2E0072C369 /* PRImage.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D38DD608FDA41801A80101 /* PRImage.m */; }; 8526E98E10C91A2E0072C369 /* PRCGrayscale.m in Sources */ = {isa = PBXBuildFile; fileRef = 85E2FA3C0B5CE7AA003E7B25 /* PRCGrayscale.m */; }; 8526E98F10C91A2E0072C369 /* PRInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 85D196370D0A063900A80101 /* PRInvert.m */; }; 8526E99010C91A2E0072C369 /* PRFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 85F3E8030EC5003200B9D568 /* PRFilter.m */; }; 8526E99110C91A2E0072C369 /* PRCInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 85CBE1330ECE08B200A80101 /* PRCInvert.m */; }; 8526E99210C91A2E0072C369 /* PRCFourier.m in Sources */ = {isa = PBXBuildFile; fileRef = 85CBE1370ECE113300A80101 /* PRCFourier.m */; }; 8526E99310C91A2E0072C369 /* PRCTransforms.m in Sources */ = {isa = PBXBuildFile; fileRef = 85CBE13B0ECE328400A80101 /* PRCTransforms.m */; }; 8526E99510C91A2E0072C369 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; }; 859E918A1132DC4100C75DB0 /* PRFilterController.h in Headers */ = {isa = PBXBuildFile; fileRef = 859E91881132DC4100C75DB0 /* PRFilterController.h */; }; 859E918B1132DC4100C75DB0 /* PRFilterController.m in Sources */ = {isa = PBXBuildFile; fileRef = 859E91891132DC4100C75DB0 /* PRFilterController.m */; }; 859E918E1132DC5500C75DB0 /* PRPreviewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 859E918C1132DC5500C75DB0 /* PRPreviewController.h */; }; 859E918F1132DC5500C75DB0 /* PRPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 859E918D1132DC5500C75DB0 /* PRPreviewController.m */; }; 859E91921132DC6E00C75DB0 /* Preview.nib in Resources */ = {isa = PBXBuildFile; fileRef = 859E91901132DC6E00C75DB0 /* Preview.nib */; }; 85A1EA7D13EF0DC6003B0912 /* PRCCurves.h in Headers */ = {isa = PBXBuildFile; fileRef = 85A1EA7B13EF0DC6003B0912 /* PRCCurves.h */; }; 85A1EA7E13EF0DC6003B0912 /* PRCCurves.m in Sources */ = {isa = PBXBuildFile; fileRef = 85A1EA7C13EF0DC6003B0912 /* PRCCurves.m */; }; 85A1EA8D13EF0E92003B0912 /* PRCurvesView.h in Headers */ = {isa = PBXBuildFile; fileRef = 85A1EA8B13EF0E92003B0912 /* PRCurvesView.h */; }; 85A1EA8E13EF0E92003B0912 /* PRCurvesView.m in Sources */ = {isa = PBXBuildFile; fileRef = 85A1EA8C13EF0E92003B0912 /* PRCurvesView.m */; }; 85A1EA9613EF1013003B0912 /* Curves.nib in Resources */ = {isa = PBXBuildFile; fileRef = 85A1EA9413EF1013003B0912 /* Curves.nib */; }; 85A1EA9D13EF1075003B0912 /* PRCurves.h in Headers */ = {isa = PBXBuildFile; fileRef = 85A1EA9B13EF1075003B0912 /* PRCurves.h */; }; 85A1EA9E13EF1075003B0912 /* PRCurves.m in Sources */ = {isa = PBXBuildFile; fileRef = 85A1EA9C13EF1075003B0912 /* PRCurves.m */; }; 85B7C77813F45738005EF60D /* PRCurvesPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B7C77613F45738005EF60D /* PRCurvesPath.h */; }; 85B7C77913F45738005EF60D /* PRCurvesPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 85B7C77713F45738005EF60D /* PRCurvesPath.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MyDocument.m; sourceTree = ""; }; 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MyDocument.h; sourceTree = ""; }; 2A37F4B0FDCFA73011CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 2A37F4B5FDCFA73011CA2CEA /* PRWindow.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = PRWindow.nib; path = English.lproj/PRWindow.nib; sourceTree = ""; }; 2A37F4B7FDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = ""; }; 2A37F4BAFDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = English.lproj/Credits.rtf; sourceTree = ""; }; 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 8526E99A10C91A2E0072C369 /* Info-PRICE.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "Info-PRICE.plist"; sourceTree = ""; }; 8526E99B10C91A2E0072C369 /* PRICE.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PRICE.app; sourceTree = BUILT_PRODUCTS_DIR; }; 859E91881132DC4100C75DB0 /* PRFilterController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRFilterController.h; sourceTree = ""; }; 859E91891132DC4100C75DB0 /* PRFilterController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRFilterController.m; sourceTree = ""; }; 859E918C1132DC5500C75DB0 /* PRPreviewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRPreviewController.h; sourceTree = ""; }; 859E918D1132DC5500C75DB0 /* PRPreviewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRPreviewController.m; sourceTree = ""; }; 859E91911132DC6E00C75DB0 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Preview.nib; sourceTree = ""; }; 85A1EA7B13EF0DC6003B0912 /* PRCCurves.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCCurves.h; sourceTree = ""; }; 85A1EA7C13EF0DC6003B0912 /* PRCCurves.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCCurves.m; sourceTree = ""; }; 85A1EA8B13EF0E92003B0912 /* PRCurvesView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCurvesView.h; sourceTree = ""; }; 85A1EA8C13EF0E92003B0912 /* PRCurvesView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCurvesView.m; sourceTree = ""; }; 85A1EA9513EF1013003B0912 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Curves.nib; sourceTree = ""; }; 85A1EA9B13EF1075003B0912 /* PRCurves.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCurves.h; sourceTree = ""; }; 85A1EA9C13EF1075003B0912 /* PRCurves.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCurves.m; sourceTree = ""; }; 85B7C77613F45738005EF60D /* PRCurvesPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCurvesPath.h; sourceTree = ""; }; 85B7C77713F45738005EF60D /* PRCurvesPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCurvesPath.m; sourceTree = ""; }; 85CBE1320ECE08B200A80101 /* PRCInvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCInvert.h; sourceTree = ""; }; 85CBE1330ECE08B200A80101 /* PRCInvert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCInvert.m; sourceTree = ""; }; 85CBE1360ECE113300A80101 /* PRCFourier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCFourier.h; sourceTree = ""; }; 85CBE1370ECE113300A80101 /* PRCFourier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCFourier.m; sourceTree = ""; }; 85CBE13A0ECE328400A80101 /* PRCTransforms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCTransforms.h; sourceTree = ""; }; 85CBE13B0ECE328400A80101 /* PRCTransforms.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCTransforms.m; sourceTree = ""; }; 85D196360D0A063900A80101 /* PRInvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRInvert.h; sourceTree = ""; }; 85D196370D0A063900A80101 /* PRInvert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRInvert.m; sourceTree = ""; }; 85E2FA3B0B5CE7AA003E7B25 /* PRCGrayscale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCGrayscale.h; sourceTree = ""; }; 85E2FA3C0B5CE7AA003E7B25 /* PRCGrayscale.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCGrayscale.m; sourceTree = ""; }; 85E2FA400B5CEAF3003E7B25 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Grayscale.nib; sourceTree = ""; }; 85F3E8020EC5003200B9D568 /* PRFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRFilter.h; sourceTree = ""; }; 85F3E8030EC5003200B9D568 /* PRFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRFilter.m; sourceTree = ""; }; F50E085E03A8B3A001317B72 /* PRImageView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRImageView.h; sourceTree = ""; }; F50E085F03A8B3A001317B72 /* PRImageView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRImageView.m; sourceTree = ""; }; F50E086203A8B47901317B72 /* PRWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRWindowController.h; sourceTree = ""; }; F50E086303A8B47901317B72 /* PRWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRWindowController.m; sourceTree = ""; }; F50E086403A8B47901317B72 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = ""; }; F50E086503A8B47901317B72 /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = AppController.m; sourceTree = ""; }; F51A79A703D95E3101A80101 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Convolve55.nib; sourceTree = ""; }; F51A79AC03D9642D01A80101 /* PRConvolve55.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRConvolve55.h; sourceTree = ""; }; F51A79AD03D9642D01A80101 /* PRConvolve55.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRConvolve55.m; sourceTree = ""; }; F52855C70689AB0301A80101 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/ProgressPanel.nib; sourceTree = ""; }; F52B6E0903DDC6C201A80101 /* PRCConvolve55.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCConvolve55.h; sourceTree = ""; }; F52B6E0A03DDC6C201A80101 /* PRCConvolve55.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCConvolve55.m; sourceTree = ""; }; F537CAEE0500A8B801A80103 /* README */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = README; sourceTree = ""; }; F538441B0612E0D001A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Median.nib; sourceTree = ""; }; F538441D0612E9BF01A80103 /* PRMedian.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRMedian.h; sourceTree = ""; }; F538441E0612E9BF01A80103 /* PRMedian.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRMedian.m; sourceTree = ""; }; F54D8D5C0588ECEB01A80103 /* PRHistogram.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRHistogram.h; sourceTree = ""; }; F54D8D5D0588ECEB01A80103 /* PRHistogram.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRHistogram.m; sourceTree = ""; }; F54D8D660588ED9101A80103 /* PRCHistogram.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCHistogram.h; sourceTree = ""; }; F54D8D670588ED9101A80103 /* PRCHistogram.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCHistogram.m; sourceTree = ""; }; F54D8D6B0588EE6201A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Histogram.nib; sourceTree = ""; }; F551DF3203E1B5CF01A80101 /* PRFourier.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRFourier.h; sourceTree = ""; }; F551DF3303E1B5CF01A80101 /* PRFourier.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRFourier.m; sourceTree = ""; }; F55BF70E054909D501A80103 /* PRDFTHighPass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRDFTHighPass.h; sourceTree = ""; }; F55BF70F054909D501A80103 /* PRDFTHighPass.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRDFTHighPass.m; sourceTree = ""; }; F568E20703B757F201A80101 /* PRGrayscaleFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRGrayscaleFilter.h; sourceTree = ""; }; F568E20803B757F201A80101 /* PRGrayscaleFilter.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRGrayscaleFilter.m; sourceTree = ""; }; F568E20C03B77C9A01A80101 /* PRTransforms.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRTransforms.h; sourceTree = ""; }; F568E20D03B77C9A01A80101 /* PRTransforms.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRTransforms.m; sourceTree = ""; }; F58A013E051379F90163C8F7 /* PRDFTLowPass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRDFTLowPass.h; sourceTree = ""; }; F58A013F051379F90163C8F7 /* PRDFTLowPass.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRDFTLowPass.m; sourceTree = ""; }; F58A014205137A870163C8F7 /* PRCDFTLowPass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCDFTLowPass.h; sourceTree = ""; }; F58A014305137A870163C8F7 /* PRCDFTLowPass.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCDFTLowPass.m; sourceTree = ""; }; F58A014705138B000163C8F7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/DFTLowPass.nib; sourceTree = ""; }; F58A01490513B6E80163C8F7 /* FFT.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FFT.h; sourceTree = ""; }; F58A014A0513B6E80163C8F7 /* FFT.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = FFT.c; sourceTree = ""; }; F59300510609F6AE01A80103 /* PRCCustTraceEdges.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCCustTraceEdges.h; sourceTree = ""; }; F59300520609F6AE01A80103 /* PRCCustTraceEdges.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCCustTraceEdges.m; sourceTree = ""; }; F59300560609F83101A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/CustTraceEdges.nib; sourceTree = ""; }; F5930058060B2ED001A80103 /* PRCustTraceEdges.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCustTraceEdges.h; sourceTree = ""; }; F5930059060B2ED001A80103 /* PRCustTraceEdges.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCustTraceEdges.m; sourceTree = ""; }; F59B4FBB0591D102011CE379 /* PRCumHisto.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCumHisto.h; sourceTree = ""; }; F59B4FBC0591D102011CE379 /* PRCumHisto.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCumHisto.m; sourceTree = ""; }; F59B4FBF0591DA41011CE379 /* PRCCumHisto.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCCumHisto.h; sourceTree = ""; }; F59B4FC00591DA41011CE379 /* PRCCumHisto.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCCumHisto.m; sourceTree = ""; }; F59B4FC305921408011CE379 /* PRHisto.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRHisto.h; sourceTree = ""; }; F59B4FC405921408011CE379 /* PRHisto.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRHisto.m; sourceTree = ""; }; F59B4FC7059214C7011CE379 /* PRCHisto.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCHisto.h; sourceTree = ""; }; F59B4FC8059214C7011CE379 /* PRCHisto.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCHisto.m; sourceTree = ""; }; F59B4FCC05923027011CE379 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/CumulHistogram.nib; sourceTree = ""; }; F59EB61D079F1C9101A80103 /* PRCScale.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCScale.h; sourceTree = ""; }; F59EB61E079F1C9101A80103 /* PRCScale.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCScale.m; sourceTree = ""; }; F59EB621079F1CA501A80103 /* PRScale.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRScale.h; sourceTree = ""; }; F59EB622079F1CA501A80103 /* PRScale.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRScale.m; sourceTree = ""; }; F59EB628079F2ED301A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Scale.nib; sourceTree = ""; }; F5A3DD6C058349E601A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Equalize.nib; sourceTree = ""; }; F5B0F9640686C3B701A80101 /* PRCProgress.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCProgress.h; sourceTree = ""; }; F5B0F9650686C3B701A80101 /* PRCProgress.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCProgress.m; sourceTree = ""; }; F5B3A92205B53FF201A80101 /* PRCTraceEdges.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCTraceEdges.h; sourceTree = ""; }; F5B3A92305B53FF201A80101 /* PRCTraceEdges.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCTraceEdges.m; sourceTree = ""; }; F5B3A92705B5469C01A80101 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/TraceEdges.nib; sourceTree = ""; }; F5B3A92905B5568F01A80101 /* PRTraceEdges.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRTraceEdges.h; sourceTree = ""; }; F5B3A92A05B5568F01A80101 /* PRTraceEdges.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRTraceEdges.m; sourceTree = ""; }; F5B6257006881DCE01A80101 /* PRProgressAction.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRProgressAction.h; sourceTree = ""; }; F5B6257106881DCE01A80101 /* PRProgressAction.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRProgressAction.m; sourceTree = ""; }; F5C7F8EE07C75C6901A80101 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Crop.nib; sourceTree = ""; }; F5C8A2A307EED49E01A80101 /* PRCBriCon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCBriCon.h; sourceTree = ""; }; F5C8A2A407EED49E01A80101 /* PRCBriCon.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCBriCon.m; sourceTree = ""; }; F5C8A2A707EED52A01A80101 /* PRBriCon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRBriCon.h; sourceTree = ""; }; F5C8A2A807EED52A01A80101 /* PRBriCon.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRBriCon.m; sourceTree = ""; }; F5C8A2AC07EED94A01A80101 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/BriCon.nib; sourceTree = ""; }; F5C941A908261B5E01A80101 /* price128.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = price128.icns; sourceTree = ""; }; F5D38DD508FDA41801A80101 /* PRImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRImage.h; sourceTree = ""; }; F5D38DD608FDA41801A80101 /* PRImage.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRImage.m; sourceTree = ""; }; F5D67DAF0612D96501A80103 /* PRCMedian.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCMedian.h; sourceTree = ""; }; F5D67DB00612D96501A80103 /* PRCMedian.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCMedian.m; sourceTree = ""; }; F5D9F4B607AD972F01A80101 /* PRCrop.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCrop.m; sourceTree = ""; }; F5D9F4B807AD974901A80101 /* PRCrop.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCrop.h; sourceTree = ""; }; F5D9F4BA07AD976001A80101 /* PRCCrop.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCCrop.h; sourceTree = ""; }; F5D9F4BC07AD976F01A80101 /* PRCCrop.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCCrop.m; sourceTree = ""; }; F5DC9E42056A98E601A80101 /* PRDFTFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRDFTFilter.h; sourceTree = ""; }; F5DC9E43056A98E601A80101 /* PRDFTFilter.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRDFTFilter.m; sourceTree = ""; }; F5DD42E9053AAE5201A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/DFTHighPass.nib; sourceTree = ""; }; F5DD42EB053AAEF901A80103 /* PRCDFTHighPass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCDFTHighPass.h; sourceTree = ""; }; F5DD42EC053AAEF901A80103 /* PRCDFTHighPass.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCDFTHighPass.m; sourceTree = ""; }; F5E238A405808FD801A80103 /* PRCEqualize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCEqualize.h; sourceTree = ""; }; F5E238A505808FD801A80103 /* PRCEqualize.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCEqualize.m; sourceTree = ""; }; F5E238A8058091EB01A80103 /* PREqualize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PREqualize.h; sourceTree = ""; }; F5E238A9058091EB01A80103 /* PREqualize.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PREqualize.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 8526E99410C91A2E0072C369 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 8526E99510C91A2E0072C369 /* Cocoa.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */, ); name = "Linked Frameworks"; sourceTree = ""; }; 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */ = { isa = PBXGroup; children = ( 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */, 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */, ); name = "Other Frameworks"; sourceTree = ""; }; 19C28FB0FE9D524F11CA2CBB /* Products */ = { isa = PBXGroup; children = ( 8526E99B10C91A2E0072C369 /* PRICE.app */, ); name = Products; sourceTree = ""; }; 2A37F4AAFDCFA73011CA2CEA /* PRICE */ = { isa = PBXGroup; children = ( 2A37F4ABFDCFA73011CA2CEA /* Classes */, 2A37F4AFFDCFA73011CA2CEA /* Other Sources */, 2A37F4B8FDCFA73011CA2CEA /* Resources */, 2A37F4C3FDCFA73011CA2CEA /* Frameworks */, 19C28FB0FE9D524F11CA2CBB /* Products */, 8526E99A10C91A2E0072C369 /* Info-PRICE.plist */, ); name = PRICE; sourceTree = ""; }; 2A37F4ABFDCFA73011CA2CEA /* Classes */ = { isa = PBXGroup; children = ( F5D38DD508FDA41801A80101 /* PRImage.h */, F5D38DD608FDA41801A80101 /* PRImage.m */, F54D8D5C0588ECEB01A80103 /* PRHistogram.h */, F54D8D5D0588ECEB01A80103 /* PRHistogram.m */, F54D8D660588ED9101A80103 /* PRCHistogram.h */, F54D8D670588ED9101A80103 /* PRCHistogram.m */, F59B4FC305921408011CE379 /* PRHisto.h */, F59B4FC405921408011CE379 /* PRHisto.m */, F59B4FC7059214C7011CE379 /* PRCHisto.h */, F59B4FC8059214C7011CE379 /* PRCHisto.m */, F59B4FBB0591D102011CE379 /* PRCumHisto.h */, F59B4FBC0591D102011CE379 /* PRCumHisto.m */, F59B4FBF0591DA41011CE379 /* PRCCumHisto.h */, F59B4FC00591DA41011CE379 /* PRCCumHisto.m */, 85A1EA8B13EF0E92003B0912 /* PRCurvesView.h */, 85A1EA8C13EF0E92003B0912 /* PRCurvesView.m */, 85B7C77613F45738005EF60D /* PRCurvesPath.h */, 85B7C77713F45738005EF60D /* PRCurvesPath.m */, F52B6E0803DDC36301A80101 /* Controllers */, F568E20B03B7583A01A80101 /* Filters */, F5E238AC058091F001A80103 /* Enhance */, 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */, 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */, F50E085E03A8B3A001317B72 /* PRImageView.h */, F50E085F03A8B3A001317B72 /* PRImageView.m */, F50E086203A8B47901317B72 /* PRWindowController.h */, F50E086303A8B47901317B72 /* PRWindowController.m */, F50E086403A8B47901317B72 /* AppController.h */, F50E086503A8B47901317B72 /* AppController.m */, F5B0F9640686C3B701A80101 /* PRCProgress.h */, F5B0F9650686C3B701A80101 /* PRCProgress.m */, F5B6257006881DCE01A80101 /* PRProgressAction.h */, F5B6257106881DCE01A80101 /* PRProgressAction.m */, F59EB621079F1CA501A80103 /* PRScale.h */, F59EB622079F1CA501A80103 /* PRScale.m */, F5D9F4B807AD974901A80101 /* PRCrop.h */, F5D9F4B607AD972F01A80101 /* PRCrop.m */, ); name = Classes; sourceTree = ""; }; 2A37F4AFFDCFA73011CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( 2A37F4B0FDCFA73011CA2CEA /* main.m */, F58A01490513B6E80163C8F7 /* FFT.h */, F58A014A0513B6E80163C8F7 /* FFT.c */, ); name = "Other Sources"; sourceTree = ""; }; 2A37F4B8FDCFA73011CA2CEA /* Resources */ = { isa = PBXGroup; children = ( F5C941A908261B5E01A80101 /* price128.icns */, F537CAEE0500A8B801A80103 /* README */, 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */, 089C165FFE840EACC02AAC07 /* InfoPlist.strings */, 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */, 2A37F4B4FDCFA73011CA2CEA /* PRWindow.nib */, F51A79A603D95E3101A80101 /* Convolve55.nib */, F5C8A2AB07EED94A01A80101 /* BriCon.nib */, F58A014605138B000163C8F7 /* DFTLowPass.nib */, F5DD42E8053AAE5201A80103 /* DFTHighPass.nib */, F5A3DD6B058349E601A80103 /* Equalize.nib */, F54D8D6A0588EE6201A80103 /* Histogram.nib */, F59B4FCB05923027011CE379 /* CumulHistogram.nib */, F5B3A92605B5469C01A80101 /* TraceEdges.nib */, F59300550609F83101A80103 /* CustTraceEdges.nib */, F538441A0612E0D001A80103 /* Median.nib */, F52855C60689AB0301A80101 /* ProgressPanel.nib */, F59EB627079F2ED301A80103 /* Scale.nib */, F5C7F8ED07C75C6901A80101 /* Crop.nib */, 85E2FA3F0B5CEAF3003E7B25 /* Grayscale.nib */, 859E91901132DC6E00C75DB0 /* Preview.nib */, 85A1EA9413EF1013003B0912 /* Curves.nib */, ); name = Resources; sourceTree = ""; }; 2A37F4C3FDCFA73011CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */, 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */, ); name = Frameworks; sourceTree = ""; }; F52B6E0803DDC36301A80101 /* Controllers */ = { isa = PBXGroup; children = ( 859E918C1132DC5500C75DB0 /* PRPreviewController.h */, 859E918D1132DC5500C75DB0 /* PRPreviewController.m */, 859E91881132DC4100C75DB0 /* PRFilterController.h */, 859E91891132DC4100C75DB0 /* PRFilterController.m */, 85A1EA7B13EF0DC6003B0912 /* PRCCurves.h */, 85A1EA7C13EF0DC6003B0912 /* PRCCurves.m */, F5C8A2A307EED49E01A80101 /* PRCBriCon.h */, F5C8A2A407EED49E01A80101 /* PRCBriCon.m */, F59EB61D079F1C9101A80103 /* PRCScale.h */, F59EB61E079F1C9101A80103 /* PRCScale.m */, F52B6E0903DDC6C201A80101 /* PRCConvolve55.h */, F52B6E0A03DDC6C201A80101 /* PRCConvolve55.m */, F58A014205137A870163C8F7 /* PRCDFTLowPass.h */, F58A014305137A870163C8F7 /* PRCDFTLowPass.m */, F5DD42EB053AAEF901A80103 /* PRCDFTHighPass.h */, F5DD42EC053AAEF901A80103 /* PRCDFTHighPass.m */, F5E238A405808FD801A80103 /* PRCEqualize.h */, F5E238A505808FD801A80103 /* PRCEqualize.m */, F5B3A92205B53FF201A80101 /* PRCTraceEdges.h */, F5B3A92305B53FF201A80101 /* PRCTraceEdges.m */, F59300510609F6AE01A80103 /* PRCCustTraceEdges.h */, F59300520609F6AE01A80103 /* PRCCustTraceEdges.m */, F5D67DAF0612D96501A80103 /* PRCMedian.h */, F5D67DB00612D96501A80103 /* PRCMedian.m */, F5D9F4BA07AD976001A80101 /* PRCCrop.h */, F5D9F4BC07AD976F01A80101 /* PRCCrop.m */, 85E2FA3B0B5CE7AA003E7B25 /* PRCGrayscale.h */, 85E2FA3C0B5CE7AA003E7B25 /* PRCGrayscale.m */, 85CBE1320ECE08B200A80101 /* PRCInvert.h */, 85CBE1330ECE08B200A80101 /* PRCInvert.m */, 85CBE1360ECE113300A80101 /* PRCFourier.h */, 85CBE1370ECE113300A80101 /* PRCFourier.m */, 85CBE13A0ECE328400A80101 /* PRCTransforms.h */, 85CBE13B0ECE328400A80101 /* PRCTransforms.m */, ); name = Controllers; sourceTree = ""; }; F568E20B03B7583A01A80101 /* Filters */ = { isa = PBXGroup; children = ( 85F3E8020EC5003200B9D568 /* PRFilter.h */, 85F3E8030EC5003200B9D568 /* PRFilter.m */, F568E20703B757F201A80101 /* PRGrayscaleFilter.h */, F568E20803B757F201A80101 /* PRGrayscaleFilter.m */, F51A79AC03D9642D01A80101 /* PRConvolve55.h */, F51A79AD03D9642D01A80101 /* PRConvolve55.m */, F551DF3203E1B5CF01A80101 /* PRFourier.h */, F551DF3303E1B5CF01A80101 /* PRFourier.m */, F58A013E051379F90163C8F7 /* PRDFTLowPass.h */, F58A013F051379F90163C8F7 /* PRDFTLowPass.m */, F55BF70E054909D501A80103 /* PRDFTHighPass.h */, F55BF70F054909D501A80103 /* PRDFTHighPass.m */, F5DC9E43056A98E601A80101 /* PRDFTFilter.m */, F5DC9E42056A98E601A80101 /* PRDFTFilter.h */, 85D196360D0A063900A80101 /* PRInvert.h */, 85D196370D0A063900A80101 /* PRInvert.m */, F568E20C03B77C9A01A80101 /* PRTransforms.h */, F568E20D03B77C9A01A80101 /* PRTransforms.m */, ); name = Filters; sourceTree = ""; }; F5E238AC058091F001A80103 /* Enhance */ = { isa = PBXGroup; children = ( F5C8A2A707EED52A01A80101 /* PRBriCon.h */, F5C8A2A807EED52A01A80101 /* PRBriCon.m */, F5E238A8058091EB01A80103 /* PREqualize.h */, F5E238A9058091EB01A80103 /* PREqualize.m */, F5B3A92905B5568F01A80101 /* PRTraceEdges.h */, F5B3A92A05B5568F01A80101 /* PRTraceEdges.m */, F5930058060B2ED001A80103 /* PRCustTraceEdges.h */, F5930059060B2ED001A80103 /* PRCustTraceEdges.m */, F538441D0612E9BF01A80103 /* PRMedian.h */, F538441E0612E9BF01A80103 /* PRMedian.m */, 85A1EA9B13EF1075003B0912 /* PRCurves.h */, 85A1EA9C13EF1075003B0912 /* PRCurves.m */, ); name = Enhance; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ 8526E92410C91A2E0072C369 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 8526E92510C91A2E0072C369 /* MyDocument.h in Headers */, 8526E92610C91A2E0072C369 /* PRImageView.h in Headers */, 8526E92710C91A2E0072C369 /* PRWindowController.h in Headers */, 8526E92810C91A2E0072C369 /* AppController.h in Headers */, 8526E92910C91A2E0072C369 /* PRGrayscaleFilter.h in Headers */, 8526E92A10C91A2E0072C369 /* PRTransforms.h in Headers */, 8526E92B10C91A2E0072C369 /* PRConvolve55.h in Headers */, 8526E92C10C91A2E0072C369 /* PRCConvolve55.h in Headers */, 8526E92D10C91A2E0072C369 /* PRFourier.h in Headers */, 8526E92E10C91A2E0072C369 /* PRDFTLowPass.h in Headers */, 8526E92F10C91A2E0072C369 /* PRCDFTLowPass.h in Headers */, 8526E93010C91A2E0072C369 /* FFT.h in Headers */, 8526E93110C91A2E0072C369 /* PRCDFTHighPass.h in Headers */, 8526E93210C91A2E0072C369 /* PRDFTHighPass.h in Headers */, 8526E93310C91A2E0072C369 /* PRDFTFilter.h in Headers */, 8526E93410C91A2E0072C369 /* PRCEqualize.h in Headers */, 8526E93510C91A2E0072C369 /* PREqualize.h in Headers */, 8526E93610C91A2E0072C369 /* PRHistogram.h in Headers */, 8526E93710C91A2E0072C369 /* PRCHistogram.h in Headers */, 8526E93810C91A2E0072C369 /* PRCumHisto.h in Headers */, 8526E93910C91A2E0072C369 /* PRCCumHisto.h in Headers */, 8526E93A10C91A2E0072C369 /* PRHisto.h in Headers */, 8526E93B10C91A2E0072C369 /* PRCHisto.h in Headers */, 8526E93C10C91A2E0072C369 /* PRCTraceEdges.h in Headers */, 8526E93D10C91A2E0072C369 /* PRTraceEdges.h in Headers */, 8526E93E10C91A2E0072C369 /* PRCCustTraceEdges.h in Headers */, 8526E93F10C91A2E0072C369 /* PRCustTraceEdges.h in Headers */, 8526E94010C91A2E0072C369 /* PRCMedian.h in Headers */, 8526E94110C91A2E0072C369 /* PRMedian.h in Headers */, 8526E94210C91A2E0072C369 /* PRCProgress.h in Headers */, 8526E94310C91A2E0072C369 /* PRProgressAction.h in Headers */, 8526E94410C91A2E0072C369 /* PRCScale.h in Headers */, 8526E94510C91A2E0072C369 /* PRScale.h in Headers */, 8526E94610C91A2E0072C369 /* PRCrop.h in Headers */, 8526E94710C91A2E0072C369 /* PRCCrop.h in Headers */, 8526E94810C91A2E0072C369 /* PRCBriCon.h in Headers */, 8526E94910C91A2E0072C369 /* PRBriCon.h in Headers */, 8526E94A10C91A2E0072C369 /* PRImage.h in Headers */, 8526E94B10C91A2E0072C369 /* PRCGrayscale.h in Headers */, 8526E94C10C91A2E0072C369 /* PRInvert.h in Headers */, 8526E94D10C91A2E0072C369 /* PRFilter.h in Headers */, 8526E94E10C91A2E0072C369 /* PRCInvert.h in Headers */, 8526E94F10C91A2E0072C369 /* PRCFourier.h in Headers */, 8526E95010C91A2E0072C369 /* PRCTransforms.h in Headers */, 859E918A1132DC4100C75DB0 /* PRFilterController.h in Headers */, 859E918E1132DC5500C75DB0 /* PRPreviewController.h in Headers */, 85A1EA7D13EF0DC6003B0912 /* PRCCurves.h in Headers */, 85A1EA8D13EF0E92003B0912 /* PRCurvesView.h in Headers */, 85A1EA9D13EF1075003B0912 /* PRCurves.h in Headers */, 85B7C77813F45738005EF60D /* PRCurvesPath.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ 8526E92310C91A2E0072C369 /* PRICE */ = { isa = PBXNativeTarget; buildConfigurationList = 8526E99610C91A2E0072C369 /* Build configuration list for PBXNativeTarget "PRICE" */; buildPhases = ( 8526E92410C91A2E0072C369 /* Headers */, 8526E95110C91A2E0072C369 /* Resources */, 8526E96610C91A2E0072C369 /* Sources */, 8526E99410C91A2E0072C369 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = PRICE; productInstallPath = "$(HOME)/Applications"; productName = PRICE; productReference = 8526E99B10C91A2E0072C369 /* PRICE.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 2A37F4A9FDCFA73011CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = 8526E91910C918950072C369 /* Build configuration list for PBXProject "PRICE" */; hasScannedForEncodings = 1; mainGroup = 2A37F4AAFDCFA73011CA2CEA /* PRICE */; projectDirPath = ""; targets = ( 8526E92310C91A2E0072C369 /* PRICE */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 8526E95110C91A2E0072C369 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8526E95210C91A2E0072C369 /* Credits.rtf in Resources */, 8526E95310C91A2E0072C369 /* MainMenu.nib in Resources */, 8526E95410C91A2E0072C369 /* PRWindow.nib in Resources */, 8526E95510C91A2E0072C369 /* InfoPlist.strings in Resources */, 8526E95610C91A2E0072C369 /* Convolve55.nib in Resources */, 8526E95710C91A2E0072C369 /* README in Resources */, 8526E95810C91A2E0072C369 /* DFTLowPass.nib in Resources */, 8526E95910C91A2E0072C369 /* DFTHighPass.nib in Resources */, 8526E95A10C91A2E0072C369 /* Equalize.nib in Resources */, 8526E95B10C91A2E0072C369 /* Histogram.nib in Resources */, 8526E95C10C91A2E0072C369 /* CumulHistogram.nib in Resources */, 8526E95D10C91A2E0072C369 /* TraceEdges.nib in Resources */, 8526E95E10C91A2E0072C369 /* CustTraceEdges.nib in Resources */, 8526E95F10C91A2E0072C369 /* Median.nib in Resources */, 8526E96010C91A2E0072C369 /* ProgressPanel.nib in Resources */, 8526E96110C91A2E0072C369 /* Scale.nib in Resources */, 8526E96210C91A2E0072C369 /* Crop.nib in Resources */, 8526E96310C91A2E0072C369 /* BriCon.nib in Resources */, 8526E96410C91A2E0072C369 /* price128.icns in Resources */, 8526E96510C91A2E0072C369 /* Grayscale.nib in Resources */, 859E91921132DC6E00C75DB0 /* Preview.nib in Resources */, 85A1EA9613EF1013003B0912 /* Curves.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 8526E96610C91A2E0072C369 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 8526E96710C91A2E0072C369 /* MyDocument.m in Sources */, 8526E96810C91A2E0072C369 /* main.m in Sources */, 8526E96910C91A2E0072C369 /* PRImageView.m in Sources */, 8526E96A10C91A2E0072C369 /* PRWindowController.m in Sources */, 8526E96B10C91A2E0072C369 /* PRGrayscaleFilter.m in Sources */, 8526E96C10C91A2E0072C369 /* PRConvolve55.m in Sources */, 8526E96D10C91A2E0072C369 /* PRCConvolve55.m in Sources */, 8526E96E10C91A2E0072C369 /* PRFourier.m in Sources */, 8526E96F10C91A2E0072C369 /* PRTransforms.m in Sources */, 8526E97010C91A2E0072C369 /* PRDFTLowPass.m in Sources */, 8526E97110C91A2E0072C369 /* PRCDFTLowPass.m in Sources */, 8526E97210C91A2E0072C369 /* FFT.c in Sources */, 8526E97310C91A2E0072C369 /* PRCDFTHighPass.m in Sources */, 8526E97410C91A2E0072C369 /* PRDFTHighPass.m in Sources */, 8526E97510C91A2E0072C369 /* PRDFTFilter.m in Sources */, 8526E97610C91A2E0072C369 /* PRCEqualize.m in Sources */, 8526E97710C91A2E0072C369 /* PREqualize.m in Sources */, 8526E97810C91A2E0072C369 /* PRHistogram.m in Sources */, 8526E97910C91A2E0072C369 /* PRCHistogram.m in Sources */, 8526E97A10C91A2E0072C369 /* PRCumHisto.m in Sources */, 8526E97B10C91A2E0072C369 /* PRCCumHisto.m in Sources */, 8526E97C10C91A2E0072C369 /* PRHisto.m in Sources */, 8526E97D10C91A2E0072C369 /* PRCHisto.m in Sources */, 8526E97E10C91A2E0072C369 /* PRCTraceEdges.m in Sources */, 8526E97F10C91A2E0072C369 /* PRTraceEdges.m in Sources */, 8526E98010C91A2E0072C369 /* PRCCustTraceEdges.m in Sources */, 8526E98110C91A2E0072C369 /* PRCustTraceEdges.m in Sources */, 8526E98210C91A2E0072C369 /* PRCMedian.m in Sources */, 8526E98310C91A2E0072C369 /* PRMedian.m in Sources */, 8526E98410C91A2E0072C369 /* PRCProgress.m in Sources */, 8526E98510C91A2E0072C369 /* PRProgressAction.m in Sources */, 8526E98610C91A2E0072C369 /* PRCScale.m in Sources */, 8526E98710C91A2E0072C369 /* PRScale.m in Sources */, 8526E98810C91A2E0072C369 /* PRCrop.m in Sources */, 8526E98910C91A2E0072C369 /* PRCCrop.m in Sources */, 8526E98A10C91A2E0072C369 /* PRCBriCon.m in Sources */, 8526E98B10C91A2E0072C369 /* PRBriCon.m in Sources */, 8526E98C10C91A2E0072C369 /* AppController.m in Sources */, 8526E98D10C91A2E0072C369 /* PRImage.m in Sources */, 8526E98E10C91A2E0072C369 /* PRCGrayscale.m in Sources */, 8526E98F10C91A2E0072C369 /* PRInvert.m in Sources */, 8526E99010C91A2E0072C369 /* PRFilter.m in Sources */, 8526E99110C91A2E0072C369 /* PRCInvert.m in Sources */, 8526E99210C91A2E0072C369 /* PRCFourier.m in Sources */, 8526E99310C91A2E0072C369 /* PRCTransforms.m in Sources */, 859E918B1132DC4100C75DB0 /* PRFilterController.m in Sources */, 859E918F1132DC5500C75DB0 /* PRPreviewController.m in Sources */, 85A1EA7E13EF0DC6003B0912 /* PRCCurves.m in Sources */, 85A1EA8E13EF0E92003B0912 /* PRCurvesView.m in Sources */, 85A1EA9E13EF1075003B0912 /* PRCurves.m in Sources */, 85B7C77913F45738005EF60D /* PRCurvesPath.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 089C165FFE840EACC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 089C1660FE840EACC02AAC07 /* English */, ); name = InfoPlist.strings; sourceTree = ""; }; 2A37F4B4FDCFA73011CA2CEA /* PRWindow.nib */ = { isa = PBXVariantGroup; children = ( 2A37F4B5FDCFA73011CA2CEA /* PRWindow.nib */, ); name = PRWindow.nib; sourceTree = ""; }; 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */ = { isa = PBXVariantGroup; children = ( 2A37F4B7FDCFA73011CA2CEA /* English */, ); name = MainMenu.nib; sourceTree = ""; }; 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */ = { isa = PBXVariantGroup; children = ( 2A37F4BAFDCFA73011CA2CEA /* English */, ); name = Credits.rtf; sourceTree = ""; }; 859E91901132DC6E00C75DB0 /* Preview.nib */ = { isa = PBXVariantGroup; children = ( 859E91911132DC6E00C75DB0 /* English */, ); name = Preview.nib; sourceTree = ""; }; 85A1EA9413EF1013003B0912 /* Curves.nib */ = { isa = PBXVariantGroup; children = ( 85A1EA9513EF1013003B0912 /* English */, ); name = Curves.nib; sourceTree = ""; }; 85E2FA3F0B5CEAF3003E7B25 /* Grayscale.nib */ = { isa = PBXVariantGroup; children = ( 85E2FA400B5CEAF3003E7B25 /* English */, ); name = Grayscale.nib; sourceTree = ""; }; F51A79A603D95E3101A80101 /* Convolve55.nib */ = { isa = PBXVariantGroup; children = ( F51A79A703D95E3101A80101 /* English */, ); name = Convolve55.nib; sourceTree = ""; }; F52855C60689AB0301A80101 /* ProgressPanel.nib */ = { isa = PBXVariantGroup; children = ( F52855C70689AB0301A80101 /* English */, ); name = ProgressPanel.nib; sourceTree = ""; }; F538441A0612E0D001A80103 /* Median.nib */ = { isa = PBXVariantGroup; children = ( F538441B0612E0D001A80103 /* English */, ); name = Median.nib; sourceTree = ""; }; F54D8D6A0588EE6201A80103 /* Histogram.nib */ = { isa = PBXVariantGroup; children = ( F54D8D6B0588EE6201A80103 /* English */, ); name = Histogram.nib; sourceTree = ""; }; F58A014605138B000163C8F7 /* DFTLowPass.nib */ = { isa = PBXVariantGroup; children = ( F58A014705138B000163C8F7 /* English */, ); name = DFTLowPass.nib; sourceTree = ""; }; F59300550609F83101A80103 /* CustTraceEdges.nib */ = { isa = PBXVariantGroup; children = ( F59300560609F83101A80103 /* English */, ); name = CustTraceEdges.nib; sourceTree = ""; }; F59B4FCB05923027011CE379 /* CumulHistogram.nib */ = { isa = PBXVariantGroup; children = ( F59B4FCC05923027011CE379 /* English */, ); name = CumulHistogram.nib; sourceTree = ""; }; F59EB627079F2ED301A80103 /* Scale.nib */ = { isa = PBXVariantGroup; children = ( F59EB628079F2ED301A80103 /* English */, ); name = Scale.nib; sourceTree = ""; }; F5A3DD6B058349E601A80103 /* Equalize.nib */ = { isa = PBXVariantGroup; children = ( F5A3DD6C058349E601A80103 /* English */, ); name = Equalize.nib; sourceTree = ""; }; F5B3A92605B5469C01A80101 /* TraceEdges.nib */ = { isa = PBXVariantGroup; children = ( F5B3A92705B5469C01A80101 /* English */, ); name = TraceEdges.nib; sourceTree = ""; }; F5C7F8ED07C75C6901A80101 /* Crop.nib */ = { isa = PBXVariantGroup; children = ( F5C7F8EE07C75C6901A80101 /* English */, ); name = Crop.nib; sourceTree = ""; }; F5C8A2AB07EED94A01A80101 /* BriCon.nib */ = { isa = PBXVariantGroup; children = ( F5C8A2AC07EED94A01A80101 /* English */, ); name = BriCon.nib; sourceTree = ""; }; F5DD42E8053AAE5201A80103 /* DFTHighPass.nib */ = { isa = PBXVariantGroup; children = ( F5DD42E9053AAE5201A80103 /* English */, ); name = DFTHighPass.nib; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 8526E91A10C918950072C369 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { }; name = Development; }; 8526E91B10C918950072C369 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { }; name = Deployment; }; 8526E91C10C918950072C369 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { }; name = Default; }; 8526E99710C91A2E0072C369 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; GCC_CW_ASM_SYNTAX = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PFE_FILE_C_DIALECTS = "c objective-c"; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "Info-PRICE.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = ""; PRODUCT_NAME = PRICE; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; ZERO_LINK = YES; }; name = Development; }; 8526E99810C91A2E0072C369 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ""; GCC_CW_ASM_SYNTAX = NO; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PFE_FILE_C_DIALECTS = "c objective-c"; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "Info-PRICE.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = ""; PRODUCT_NAME = PRICE; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; ZERO_LINK = NO; }; name = Deployment; }; 8526E99910C91A2E0072C369 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_CW_ASM_SYNTAX = NO; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PFE_FILE_C_DIALECTS = "c objective-c"; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "Info-PRICE.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = ""; PRODUCT_NAME = PRICE; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; }; name = Default; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 8526E91910C918950072C369 /* Build configuration list for PBXProject "PRICE" */ = { isa = XCConfigurationList; buildConfigurations = ( 8526E91A10C918950072C369 /* Development */, 8526E91B10C918950072C369 /* Deployment */, 8526E91C10C918950072C369 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 8526E99610C91A2E0072C369 /* Build configuration list for PBXNativeTarget "PRICE" */ = { isa = XCConfigurationList; buildConfigurations = ( 8526E99710C91A2E0072C369 /* Development */, 8526E99810C91A2E0072C369 /* Deployment */, 8526E99910C91A2E0072C369 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; /* End XCConfigurationList section */ }; rootObject = 2A37F4A9FDCFA73011CA2CEA /* Project object */; } PRICE-1.3.0/PRICE.pbproj004075500017500000012000000000001245331715400137375ustar00multixusersPRICE-1.3.0/PRICE.pbproj/project.pbxproj010064400017500000012000001360241134133510400170630ustar00multixusers// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 38; objects = { 080E96D9FE201CDB7F000001 = { fileRef = 2A37F4B9FDCFA73011CA2CEA; isa = PBXBuildFile; settings = { }; }; 080E96DAFE201CDB7F000001 = { fileRef = 2A37F4B6FDCFA73011CA2CEA; isa = PBXBuildFile; settings = { }; }; 080E96DBFE201CDB7F000001 = { fileRef = 2A37F4B4FDCFA73011CA2CEA; isa = PBXBuildFile; settings = { }; }; 089C165FFE840EACC02AAC07 = { children = ( 089C1660FE840EACC02AAC07, ); isa = PBXVariantGroup; name = InfoPlist.strings; refType = 4; }; 089C1660FE840EACC02AAC07 = { fileEncoding = 10; isa = PBXFileReference; name = English; path = English.lproj/InfoPlist.strings; refType = 4; }; 089C1661FE840EACC02AAC07 = { fileRef = 089C165FFE840EACC02AAC07; isa = PBXBuildFile; settings = { }; }; //080 //081 //082 //083 //084 //100 //101 //102 //103 //104 1058C7A6FEA54F5311CA2CBB = { children = ( 1058C7A7FEA54F5311CA2CBB, ); isa = PBXGroup; name = "Linked Frameworks"; refType = 4; }; 1058C7A7FEA54F5311CA2CBB = { isa = PBXFileReference; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; refType = 0; }; 1058C7A8FEA54F5311CA2CBB = { children = ( 2A37F4C5FDCFA73011CA2CEA, 2A37F4C4FDCFA73011CA2CEA, ); isa = PBXGroup; name = "Other Frameworks"; refType = 4; }; 1058C7A9FEA54F5311CA2CBB = { fileRef = 1058C7A7FEA54F5311CA2CBB; isa = PBXBuildFile; settings = { }; }; //100 //101 //102 //103 //104 //190 //191 //192 //193 //194 19C28FB0FE9D524F11CA2CBB = { children = ( 855E38111135EF3A00A80101, ); isa = PBXGroup; name = Products; refType = 4; }; //190 //191 //192 //193 //194 //2A0 //2A1 //2A2 //2A3 //2A4 2A37F4A9FDCFA73011CA2CEA = { buildStyles = ( 4A9504D0FFE6A4CB11CA0CBA, 4A9504D1FFE6A4CB11CA0CBA, ); hasScannedForEncodings = 1; isa = PBXProject; mainGroup = 2A37F4AAFDCFA73011CA2CEA; projectDirPath = ""; targets = ( 2A37F4C6FDCFA73011CA2CEA, ); }; 2A37F4AAFDCFA73011CA2CEA = { children = ( 2A37F4ABFDCFA73011CA2CEA, 2A37F4AFFDCFA73011CA2CEA, 2A37F4B8FDCFA73011CA2CEA, 2A37F4C3FDCFA73011CA2CEA, 19C28FB0FE9D524F11CA2CBB, ); isa = PBXGroup; name = PRICE; path = ""; refType = 4; }; 2A37F4ABFDCFA73011CA2CEA = { children = ( F5D38DD508FDA41801A80101, F5D38DD608FDA41801A80101, F54D8D5C0588ECEB01A80103, F54D8D5D0588ECEB01A80103, F54D8D660588ED9101A80103, F54D8D670588ED9101A80103, F59B4FC305921408011CE379, F59B4FC405921408011CE379, F59B4FC7059214C7011CE379, F59B4FC8059214C7011CE379, F59B4FBB0591D102011CE379, F59B4FBC0591D102011CE379, F59B4FBF0591DA41011CE379, F59B4FC00591DA41011CE379, F52B6E0803DDC36301A80101, F568E20B03B7583A01A80101, F5E238AC058091F001A80103, 2A37F4AEFDCFA73011CA2CEA, 2A37F4ACFDCFA73011CA2CEA, F50E085E03A8B3A001317B72, F50E085F03A8B3A001317B72, F50E086203A8B47901317B72, F50E086303A8B47901317B72, F50E086403A8B47901317B72, F50E086503A8B47901317B72, F5B0F9640686C3B701A80101, F5B0F9650686C3B701A80101, F5B6257006881DCE01A80101, F5B6257106881DCE01A80101, F59EB621079F1CA501A80103, F59EB622079F1CA501A80103, F5D9F4B807AD974901A80101, F5D9F4B607AD972F01A80101, ); isa = PBXGroup; name = Classes; path = ""; refType = 4; }; 2A37F4ACFDCFA73011CA2CEA = { fileEncoding = 30; isa = PBXFileReference; path = MyDocument.m; refType = 4; }; 2A37F4AEFDCFA73011CA2CEA = { fileEncoding = 30; isa = PBXFileReference; path = MyDocument.h; refType = 4; }; 2A37F4AFFDCFA73011CA2CEA = { children = ( 2A37F4B0FDCFA73011CA2CEA, F58A01490513B6E80163C8F7, F58A014A0513B6E80163C8F7, ); isa = PBXGroup; name = "Other Sources"; path = ""; refType = 4; }; 2A37F4B0FDCFA73011CA2CEA = { fileEncoding = 30; isa = PBXFileReference; path = main.m; refType = 4; }; 2A37F4B4FDCFA73011CA2CEA = { children = ( 2A37F4B5FDCFA73011CA2CEA, ); isa = PBXVariantGroup; name = PRWindow.nib; path = ""; refType = 4; }; 2A37F4B5FDCFA73011CA2CEA = { isa = PBXFileReference; name = PRWindow.nib; path = English.lproj/PRWindow.nib; refType = 4; }; 2A37F4B6FDCFA73011CA2CEA = { children = ( 2A37F4B7FDCFA73011CA2CEA, ); isa = PBXVariantGroup; name = MainMenu.nib; path = ""; refType = 4; }; 2A37F4B7FDCFA73011CA2CEA = { isa = PBXFileReference; name = English; path = English.lproj/MainMenu.nib; refType = 4; }; 2A37F4B8FDCFA73011CA2CEA = { children = ( F5C941A908261B5E01A80101, F537CAEE0500A8B801A80103, 2A37F4B9FDCFA73011CA2CEA, 089C165FFE840EACC02AAC07, 2A37F4B6FDCFA73011CA2CEA, 2A37F4B4FDCFA73011CA2CEA, F51A79A603D95E3101A80101, F5C8A2AB07EED94A01A80101, F58A014605138B000163C8F7, F5DD42E8053AAE5201A80103, F5A3DD6B058349E601A80103, F54D8D6A0588EE6201A80103, F59B4FCB05923027011CE379, F5B3A92605B5469C01A80101, F59300550609F83101A80103, F538441A0612E0D001A80103, F52855C60689AB0301A80101, F59EB627079F2ED301A80103, F5C7F8ED07C75C6901A80101, 85E2FA3F0B5CEAF3003E7B25, 855E381B1135EF9800A80101, ); isa = PBXGroup; name = Resources; path = ""; refType = 4; }; 2A37F4B9FDCFA73011CA2CEA = { children = ( 2A37F4BAFDCFA73011CA2CEA, ); isa = PBXVariantGroup; name = Credits.rtf; path = ""; refType = 4; }; 2A37F4BAFDCFA73011CA2CEA = { isa = PBXFileReference; name = English; path = English.lproj/Credits.rtf; refType = 4; }; 2A37F4C3FDCFA73011CA2CEA = { children = ( 1058C7A6FEA54F5311CA2CBB, 1058C7A8FEA54F5311CA2CBB, ); isa = PBXGroup; name = Frameworks; path = ""; refType = 4; }; 2A37F4C4FDCFA73011CA2CEA = { isa = PBXFileReference; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; refType = 0; }; 2A37F4C5FDCFA73011CA2CEA = { isa = PBXFileReference; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; refType = 0; }; 2A37F4C6FDCFA73011CA2CEA = { buildPhases = ( 2A37F4C7FDCFA73011CA2CEA, 2A37F4C9FDCFA73011CA2CEA, 2A37F4CEFDCFA73011CA2CEA, 2A37F4D1FDCFA73011CA2CEA, ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; HEADER_SEARCH_PATHS = ""; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ""; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = ""; PRODUCT_NAME = PRICE; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = app; }; dependencies = ( ); isa = PBXApplicationTarget; name = PRICE; productInstallPath = "$(HOME)/Applications"; productName = PRICE; productReference = 855E38111135EF3A00A80101; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleDocumentTypes CFBundleTypeExtensions tiff TIFF TIF tif TIF CFBundleTypeName TIFF CFBundleTypeOSTypes TIFF CFBundleTypeRole Editor NSDocumentClass MyDocument CFBundleTypeExtensions jpg jpeg JPG JPEG CFBundleTypeName JPEG CFBundleTypeOSTypes JPEG CFBundleTypeRole Viewer NSDocumentClass MyDocument CFBundleTypeExtensions gif GIF CFBundleTypeName GIF CFBundleTypeOSTypes GIFf CFBundleTypeRole Viewer NSDocumentClass MyDocument CFBundleTypeExtensions pct pict PCT PICT CFBundleTypeName PICT CFBundleTypeOSTypes PICT CFBundleTypeRole Viewer NSDocumentClass MyDocument CFBundleTypeExtensions png PNG CFBundleTypeName PNG CFBundleTypeOSTypes PNGf CFBundleTypeRole Viewer NSDocumentClass MyDocument CFBundleTypeExtensions pdf PDF CFBundleTypeName PDF CFBundleTypeOSTypes PDF CFBundleTypeRole Viewer NSDocumentClass MyDocument CFBundleTypeExtensions bmp BMP CFBundleTypeName BMP CFBundleTypeOSTypes BMP CFBundleTypeRole Viewer NSDocumentClass MyDocument CFBundleTypeExtensions eps EPS CFBundleTypeName EPS CFBundleTypeOSTypes EPSF CFBundleTypeRole Viewer NSDocumentClass MyDocument CFBundleTypeExtensions tga TGA CFBundleTypeName TGA CFBundleTypeRole Viewer NSDocumentClass MyDocument CFBundleExecutable PRICE CFBundleGetInfoString Precision Raster Image Convolution Engine CFBundleIconFile price128.icns CFBundleInfoDictionaryVersion 6.0 CFBundleName PRICE CFBundlePackageType APPL CFBundleSignature ???? CFBundleVersion 1.0.0 NSMainNibFile MainMenu NSPrincipalClass NSApplication "; }; 2A37F4C7FDCFA73011CA2CEA = { buildActionMask = 2147483647; files = ( 2A37F4C8FDCFA73011CA2CEA, F50E086003A8B3A001317B72, F50E086603A8B47901317B72, F50E086703A8B47901317B72, F568E20903B757F201A80101, F568E20E03B77C9A01A80101, F51A79AE03D9642D01A80101, F52B6E0B03DDC6C201A80101, F551DF3403E1B5CF01A80101, F58A0140051379F90163C8F7, F58A014405137A870163C8F7, F58A014B0513B6E80163C8F7, F5DD42ED053AAEF901A80103, F55BF710054909D501A80103, F5DC9E44056A98E601A80101, F5E238A605808FD801A80103, F5E238AA058091EB01A80103, F54D8D5E0588ECEB01A80103, F54D8D680588ED9101A80103, F59B4FBD0591D102011CE379, F59B4FC10591DA41011CE379, F59B4FC505921408011CE379, F59B4FC9059214C7011CE379, F5B3A92405B53FF201A80101, F5B3A92B05B5568F01A80101, F59300530609F6AE01A80103, F593005A060B2ED001A80103, F5D67DB10612D96501A80103, F538441F0612E9BF01A80103, F5B0F9660686C3B701A80101, F5B6257206881DCE01A80101, F59EB61F079F1C9101A80103, F59EB623079F1CA501A80103, F5D9F4B907AD974901A80101, F5D9F4BB07AD976001A80101, F5C8A2A507EED49E01A80101, F5C8A2A907EED52A01A80101, F5D38DD708FDA41801A80101, 85E2FA3D0B5CE7AA003E7B25, 85D196380D0A063900A80101, 85F3E8040EC5003200B9D568, 85CBE1340ECE08B200A80101, 85CBE1380ECE113300A80101, 85CBE13C0ECE328400A80101, 855E38171135EF6B00A80101, 855E38191135EF6B00A80101, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 2A37F4C8FDCFA73011CA2CEA = { fileRef = 2A37F4AEFDCFA73011CA2CEA; isa = PBXBuildFile; settings = { }; }; 2A37F4C9FDCFA73011CA2CEA = { buildActionMask = 2147483647; files = ( 080E96D9FE201CDB7F000001, 080E96DAFE201CDB7F000001, 080E96DBFE201CDB7F000001, 089C1661FE840EACC02AAC07, F51A79A803D95E3101A80101, F537CAEF0500A8B801A80103, F58A014805138B000163C8F7, F5DD42EA053AAE5201A80103, F5A3DD6D058349E601A80103, F54D8D6C0588EE6201A80103, F59B4FCD05923027011CE379, F5B3A92805B5469C01A80101, F59300570609F83101A80103, F538441C0612E0D001A80103, F52855C80689AB0301A80101, F59EB629079F2ED301A80103, F5C7F8EF07C75C6901A80101, F5C8A2AD07EED94A01A80101, F5C941AA08261B5E01A80101, 85E2FA410B5CEAF3003E7B25, 855E381D1135EF9800A80101, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 2A37F4CEFDCFA73011CA2CEA = { buildActionMask = 2147483647; files = ( 2A37F4CFFDCFA73011CA2CEA, 2A37F4D0FDCFA73011CA2CEA, F50E086103A8B3A001317B72, F50E086803A8B47901317B72, F568E20A03B757F201A80101, F51A79AF03D9642D01A80101, F52B6E0C03DDC6C201A80101, F551DF3503E1B5CF01A80101, F5BA52CE04CC34E80110017A, F58A0141051379F90163C8F7, F58A014505137A870163C8F7, F58A014C0513B6E90163C8F7, F5DD42EE053AAEF901A80103, F55BF711054909D501A80103, F5DC9E45056A98E601A80101, F5E238A705808FD801A80103, F5E238AB058091EB01A80103, F54D8D5F0588ECEB01A80103, F54D8D690588ED9101A80103, F59B4FBE0591D102011CE379, F59B4FC20591DA41011CE379, F59B4FC605921408011CE379, F59B4FCA059214C7011CE379, F5B3A92505B53FF201A80101, F5B3A92C05B5568F01A80101, F59300540609F6AE01A80103, F593005B060B2ED001A80103, F5D67DB20612D96501A80103, F53844200612E9BF01A80103, F5B0F9670686C3B701A80101, F5B6257306881DCE01A80101, F59EB620079F1C9101A80103, F59EB624079F1CA501A80103, F5D9F4B707AD972F01A80101, F5D9F4BD07AD976F01A80101, F5C8A2A607EED49E01A80101, F5C8A2AA07EED52A01A80101, F5C11052081A46A201A80101, F5D38DD808FDA41801A80101, 85E2FA3E0B5CE7AA003E7B25, 85D196390D0A063900A80101, 85F3E8050EC5003200B9D568, 85CBE1350ECE08B200A80101, 85CBE1390ECE113300A80101, 85CBE13D0ECE328400A80101, 855E38181135EF6B00A80101, 855E381A1135EF6B00A80101, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 2A37F4CFFDCFA73011CA2CEA = { fileRef = 2A37F4ACFDCFA73011CA2CEA; isa = PBXBuildFile; settings = { ATTRIBUTES = ( ); }; }; 2A37F4D0FDCFA73011CA2CEA = { fileRef = 2A37F4B0FDCFA73011CA2CEA; isa = PBXBuildFile; settings = { ATTRIBUTES = ( ); }; }; 2A37F4D1FDCFA73011CA2CEA = { buildActionMask = 2147483647; files = ( 1058C7A9FEA54F5311CA2CBB, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; //2A0 //2A1 //2A2 //2A3 //2A4 //4A0 //4A1 //4A2 //4A3 //4A4 4A9504D0FFE6A4CB11CA0CBA = { buildSettings = { COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; OPTIMIZATION_CFLAGS = "-O0"; ZERO_LINK = YES; }; isa = PBXBuildStyle; name = Development; }; 4A9504D1FFE6A4CB11CA0CBA = { buildSettings = { COPY_PHASE_STRIP = YES; GCC_ENABLE_FIX_AND_CONTINUE = NO; OPTIMIZATION_CFLAGS = "-O2"; ZERO_LINK = NO; }; isa = PBXBuildStyle; name = Deployment; }; //4A0 //4A1 //4A2 //4A3 //4A4 //850 //851 //852 //853 //854 855E38111135EF3A00A80101 = { isa = PBXApplicationReference; path = PRICE.app; refType = 3; }; 855E38131135EF6B00A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRFilterController.h; refType = 4; }; 855E38141135EF6B00A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRFilterController.m; refType = 4; }; 855E38151135EF6B00A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRPreviewController.h; refType = 4; }; 855E38161135EF6B00A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRPreviewController.m; refType = 4; }; 855E38171135EF6B00A80101 = { fileRef = 855E38131135EF6B00A80101; isa = PBXBuildFile; settings = { }; }; 855E38181135EF6B00A80101 = { fileRef = 855E38141135EF6B00A80101; isa = PBXBuildFile; settings = { }; }; 855E38191135EF6B00A80101 = { fileRef = 855E38151135EF6B00A80101; isa = PBXBuildFile; settings = { }; }; 855E381A1135EF6B00A80101 = { fileRef = 855E38161135EF6B00A80101; isa = PBXBuildFile; settings = { }; }; 855E381B1135EF9800A80101 = { children = ( 855E381C1135EF9800A80101, ); isa = PBXVariantGroup; name = Preview.nib; path = ""; refType = 4; }; 855E381C1135EF9800A80101 = { isa = PBXFileReference; name = English; path = English.lproj/Preview.nib; refType = 4; }; 855E381D1135EF9800A80101 = { fileRef = 855E381B1135EF9800A80101; isa = PBXBuildFile; settings = { }; }; 85CBE1320ECE08B200A80101 = { fileEncoding = 4; isa = PBXFileReference; path = PRCInvert.h; refType = 4; }; 85CBE1330ECE08B200A80101 = { fileEncoding = 4; isa = PBXFileReference; path = PRCInvert.m; refType = 4; }; 85CBE1340ECE08B200A80101 = { fileRef = 85CBE1320ECE08B200A80101; isa = PBXBuildFile; settings = { }; }; 85CBE1350ECE08B200A80101 = { fileRef = 85CBE1330ECE08B200A80101; isa = PBXBuildFile; settings = { }; }; 85CBE1360ECE113300A80101 = { fileEncoding = 4; isa = PBXFileReference; path = PRCFourier.h; refType = 4; }; 85CBE1370ECE113300A80101 = { fileEncoding = 4; isa = PBXFileReference; path = PRCFourier.m; refType = 4; }; 85CBE1380ECE113300A80101 = { fileRef = 85CBE1360ECE113300A80101; isa = PBXBuildFile; settings = { }; }; 85CBE1390ECE113300A80101 = { fileRef = 85CBE1370ECE113300A80101; isa = PBXBuildFile; settings = { }; }; 85CBE13A0ECE328400A80101 = { fileEncoding = 4; isa = PBXFileReference; path = PRCTransforms.h; refType = 4; }; 85CBE13B0ECE328400A80101 = { fileEncoding = 4; isa = PBXFileReference; path = PRCTransforms.m; refType = 4; }; 85CBE13C0ECE328400A80101 = { fileRef = 85CBE13A0ECE328400A80101; isa = PBXBuildFile; settings = { }; }; 85CBE13D0ECE328400A80101 = { fileRef = 85CBE13B0ECE328400A80101; isa = PBXBuildFile; settings = { }; }; 85D196360D0A063900A80101 = { fileEncoding = 4; isa = PBXFileReference; path = PRInvert.h; refType = 4; }; 85D196370D0A063900A80101 = { fileEncoding = 4; isa = PBXFileReference; path = PRInvert.m; refType = 4; }; 85D196380D0A063900A80101 = { fileRef = 85D196360D0A063900A80101; isa = PBXBuildFile; settings = { }; }; 85D196390D0A063900A80101 = { fileRef = 85D196370D0A063900A80101; isa = PBXBuildFile; settings = { }; }; 85E2FA3B0B5CE7AA003E7B25 = { fileEncoding = 4; isa = PBXFileReference; path = PRCGrayscale.h; refType = 4; }; 85E2FA3C0B5CE7AA003E7B25 = { fileEncoding = 4; isa = PBXFileReference; path = PRCGrayscale.m; refType = 4; }; 85E2FA3D0B5CE7AA003E7B25 = { fileRef = 85E2FA3B0B5CE7AA003E7B25; isa = PBXBuildFile; settings = { }; }; 85E2FA3E0B5CE7AA003E7B25 = { fileRef = 85E2FA3C0B5CE7AA003E7B25; isa = PBXBuildFile; settings = { }; }; 85E2FA3F0B5CEAF3003E7B25 = { children = ( 85E2FA400B5CEAF3003E7B25, ); isa = PBXVariantGroup; name = Grayscale.nib; path = ""; refType = 4; }; 85E2FA400B5CEAF3003E7B25 = { isa = PBXFileReference; name = English; path = English.lproj/Grayscale.nib; refType = 4; }; 85E2FA410B5CEAF3003E7B25 = { fileRef = 85E2FA3F0B5CEAF3003E7B25; isa = PBXBuildFile; settings = { }; }; 85F3E8020EC5003200B9D568 = { fileEncoding = 4; isa = PBXFileReference; path = PRFilter.h; refType = 4; }; 85F3E8030EC5003200B9D568 = { fileEncoding = 4; isa = PBXFileReference; path = PRFilter.m; refType = 4; }; 85F3E8040EC5003200B9D568 = { fileRef = 85F3E8020EC5003200B9D568; isa = PBXBuildFile; settings = { }; }; 85F3E8050EC5003200B9D568 = { fileRef = 85F3E8030EC5003200B9D568; isa = PBXBuildFile; settings = { }; }; //850 //851 //852 //853 //854 //F50 //F51 //F52 //F53 //F54 F50E085E03A8B3A001317B72 = { fileEncoding = 30; isa = PBXFileReference; path = PRImageView.h; refType = 4; }; F50E085F03A8B3A001317B72 = { fileEncoding = 30; isa = PBXFileReference; path = PRImageView.m; refType = 4; }; F50E086003A8B3A001317B72 = { fileRef = F50E085E03A8B3A001317B72; isa = PBXBuildFile; settings = { }; }; F50E086103A8B3A001317B72 = { fileRef = F50E085F03A8B3A001317B72; isa = PBXBuildFile; settings = { }; }; F50E086203A8B47901317B72 = { fileEncoding = 30; isa = PBXFileReference; path = PRWindowController.h; refType = 4; }; F50E086303A8B47901317B72 = { fileEncoding = 30; isa = PBXFileReference; path = PRWindowController.m; refType = 4; }; F50E086403A8B47901317B72 = { fileEncoding = 30; isa = PBXFileReference; path = AppController.h; refType = 4; }; F50E086503A8B47901317B72 = { fileEncoding = 30; isa = PBXFileReference; path = AppController.m; refType = 4; }; F50E086603A8B47901317B72 = { fileRef = F50E086203A8B47901317B72; isa = PBXBuildFile; settings = { }; }; F50E086703A8B47901317B72 = { fileRef = F50E086403A8B47901317B72; isa = PBXBuildFile; settings = { }; }; F50E086803A8B47901317B72 = { fileRef = F50E086303A8B47901317B72; isa = PBXBuildFile; settings = { }; }; F51A79A603D95E3101A80101 = { children = ( F51A79A703D95E3101A80101, ); isa = PBXVariantGroup; name = Convolve55.nib; path = ""; refType = 4; }; F51A79A703D95E3101A80101 = { isa = PBXFileReference; name = English; path = English.lproj/Convolve55.nib; refType = 4; }; F51A79A803D95E3101A80101 = { fileRef = F51A79A603D95E3101A80101; isa = PBXBuildFile; settings = { }; }; F51A79AC03D9642D01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRConvolve55.h; refType = 4; }; F51A79AD03D9642D01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRConvolve55.m; refType = 4; }; F51A79AE03D9642D01A80101 = { fileRef = F51A79AC03D9642D01A80101; isa = PBXBuildFile; settings = { }; }; F51A79AF03D9642D01A80101 = { fileRef = F51A79AD03D9642D01A80101; isa = PBXBuildFile; settings = { }; }; F52855C60689AB0301A80101 = { children = ( F52855C70689AB0301A80101, ); isa = PBXVariantGroup; name = ProgressPanel.nib; path = ""; refType = 4; }; F52855C70689AB0301A80101 = { isa = PBXFileReference; name = English; path = English.lproj/ProgressPanel.nib; refType = 4; }; F52855C80689AB0301A80101 = { fileRef = F52855C60689AB0301A80101; isa = PBXBuildFile; settings = { }; }; F52B6E0803DDC36301A80101 = { children = ( 855E38131135EF6B00A80101, 855E38141135EF6B00A80101, 855E38151135EF6B00A80101, 855E38161135EF6B00A80101, F5C8A2A307EED49E01A80101, F5C8A2A407EED49E01A80101, F59EB61D079F1C9101A80103, F59EB61E079F1C9101A80103, F52B6E0903DDC6C201A80101, F52B6E0A03DDC6C201A80101, F58A014205137A870163C8F7, F58A014305137A870163C8F7, F5DD42EB053AAEF901A80103, F5DD42EC053AAEF901A80103, F5E238A405808FD801A80103, F5E238A505808FD801A80103, F5B3A92205B53FF201A80101, F5B3A92305B53FF201A80101, F59300510609F6AE01A80103, F59300520609F6AE01A80103, F5D67DAF0612D96501A80103, F5D67DB00612D96501A80103, F5D9F4BA07AD976001A80101, F5D9F4BC07AD976F01A80101, 85E2FA3B0B5CE7AA003E7B25, 85E2FA3C0B5CE7AA003E7B25, 85CBE1320ECE08B200A80101, 85CBE1330ECE08B200A80101, 85CBE1360ECE113300A80101, 85CBE1370ECE113300A80101, 85CBE13A0ECE328400A80101, 85CBE13B0ECE328400A80101, ); isa = PBXGroup; name = Controllers; refType = 4; }; F52B6E0903DDC6C201A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCConvolve55.h; refType = 4; }; F52B6E0A03DDC6C201A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCConvolve55.m; refType = 4; }; F52B6E0B03DDC6C201A80101 = { fileRef = F52B6E0903DDC6C201A80101; isa = PBXBuildFile; settings = { }; }; F52B6E0C03DDC6C201A80101 = { fileRef = F52B6E0A03DDC6C201A80101; isa = PBXBuildFile; settings = { }; }; F537CAEE0500A8B801A80103 = { fileEncoding = 30; isa = PBXFileReference; path = README; refType = 4; }; F537CAEF0500A8B801A80103 = { fileRef = F537CAEE0500A8B801A80103; isa = PBXBuildFile; settings = { }; }; F538441A0612E0D001A80103 = { children = ( F538441B0612E0D001A80103, ); isa = PBXVariantGroup; name = Median.nib; path = ""; refType = 4; }; F538441B0612E0D001A80103 = { isa = PBXFileReference; name = English; path = English.lproj/Median.nib; refType = 4; }; F538441C0612E0D001A80103 = { fileRef = F538441A0612E0D001A80103; isa = PBXBuildFile; settings = { }; }; F538441D0612E9BF01A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRMedian.h; refType = 4; }; F538441E0612E9BF01A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRMedian.m; refType = 4; }; F538441F0612E9BF01A80103 = { fileRef = F538441D0612E9BF01A80103; isa = PBXBuildFile; settings = { }; }; F53844200612E9BF01A80103 = { fileRef = F538441E0612E9BF01A80103; isa = PBXBuildFile; settings = { }; }; F54D8D5C0588ECEB01A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRHistogram.h; refType = 4; }; F54D8D5D0588ECEB01A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRHistogram.m; refType = 4; }; F54D8D5E0588ECEB01A80103 = { fileRef = F54D8D5C0588ECEB01A80103; isa = PBXBuildFile; settings = { }; }; F54D8D5F0588ECEB01A80103 = { fileRef = F54D8D5D0588ECEB01A80103; isa = PBXBuildFile; settings = { }; }; F54D8D660588ED9101A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCHistogram.h; refType = 4; }; F54D8D670588ED9101A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCHistogram.m; refType = 4; }; F54D8D680588ED9101A80103 = { fileRef = F54D8D660588ED9101A80103; isa = PBXBuildFile; settings = { }; }; F54D8D690588ED9101A80103 = { fileRef = F54D8D670588ED9101A80103; isa = PBXBuildFile; settings = { }; }; F54D8D6A0588EE6201A80103 = { children = ( F54D8D6B0588EE6201A80103, ); isa = PBXVariantGroup; name = Histogram.nib; path = ""; refType = 4; }; F54D8D6B0588EE6201A80103 = { isa = PBXFileReference; name = English; path = English.lproj/Histogram.nib; refType = 4; }; F54D8D6C0588EE6201A80103 = { fileRef = F54D8D6A0588EE6201A80103; isa = PBXBuildFile; settings = { }; }; F551DF3203E1B5CF01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRFourier.h; refType = 4; }; F551DF3303E1B5CF01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRFourier.m; refType = 4; }; F551DF3403E1B5CF01A80101 = { fileRef = F551DF3203E1B5CF01A80101; isa = PBXBuildFile; settings = { }; }; F551DF3503E1B5CF01A80101 = { fileRef = F551DF3303E1B5CF01A80101; isa = PBXBuildFile; settings = { }; }; F55BF70E054909D501A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRDFTHighPass.h; refType = 4; }; F55BF70F054909D501A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRDFTHighPass.m; refType = 4; }; F55BF710054909D501A80103 = { fileRef = F55BF70E054909D501A80103; isa = PBXBuildFile; settings = { }; }; F55BF711054909D501A80103 = { fileRef = F55BF70F054909D501A80103; isa = PBXBuildFile; settings = { }; }; F568E20703B757F201A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRGrayscaleFilter.h; refType = 4; }; F568E20803B757F201A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRGrayscaleFilter.m; refType = 4; }; F568E20903B757F201A80101 = { fileRef = F568E20703B757F201A80101; isa = PBXBuildFile; settings = { }; }; F568E20A03B757F201A80101 = { fileRef = F568E20803B757F201A80101; isa = PBXBuildFile; settings = { }; }; F568E20B03B7583A01A80101 = { children = ( 85F3E8020EC5003200B9D568, 85F3E8030EC5003200B9D568, F568E20703B757F201A80101, F568E20803B757F201A80101, F51A79AC03D9642D01A80101, F51A79AD03D9642D01A80101, F551DF3203E1B5CF01A80101, F551DF3303E1B5CF01A80101, F58A013E051379F90163C8F7, F58A013F051379F90163C8F7, F55BF70E054909D501A80103, F55BF70F054909D501A80103, F5DC9E42056A98E601A80101, F5DC9E43056A98E601A80101, 85D196360D0A063900A80101, 85D196370D0A063900A80101, F568E20C03B77C9A01A80101, F568E20D03B77C9A01A80101, ); isa = PBXGroup; name = Filters; refType = 4; }; F568E20C03B77C9A01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRTransforms.h; refType = 4; }; F568E20D03B77C9A01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRTransforms.m; refType = 4; }; F568E20E03B77C9A01A80101 = { fileRef = F568E20C03B77C9A01A80101; isa = PBXBuildFile; settings = { }; }; F58A013E051379F90163C8F7 = { fileEncoding = 30; isa = PBXFileReference; path = PRDFTLowPass.h; refType = 4; }; F58A013F051379F90163C8F7 = { fileEncoding = 30; isa = PBXFileReference; path = PRDFTLowPass.m; refType = 4; }; F58A0140051379F90163C8F7 = { fileRef = F58A013E051379F90163C8F7; isa = PBXBuildFile; settings = { }; }; F58A0141051379F90163C8F7 = { fileRef = F58A013F051379F90163C8F7; isa = PBXBuildFile; settings = { }; }; F58A014205137A870163C8F7 = { fileEncoding = 30; isa = PBXFileReference; path = PRCDFTLowPass.h; refType = 4; }; F58A014305137A870163C8F7 = { fileEncoding = 30; isa = PBXFileReference; path = PRCDFTLowPass.m; refType = 4; }; F58A014405137A870163C8F7 = { fileRef = F58A014205137A870163C8F7; isa = PBXBuildFile; settings = { }; }; F58A014505137A870163C8F7 = { fileRef = F58A014305137A870163C8F7; isa = PBXBuildFile; settings = { }; }; F58A014605138B000163C8F7 = { children = ( F58A014705138B000163C8F7, ); isa = PBXVariantGroup; name = DFTLowPass.nib; path = ""; refType = 4; }; F58A014705138B000163C8F7 = { isa = PBXFileReference; name = English; path = English.lproj/DFTLowPass.nib; refType = 4; }; F58A014805138B000163C8F7 = { fileRef = F58A014605138B000163C8F7; isa = PBXBuildFile; settings = { }; }; F58A01490513B6E80163C8F7 = { fileEncoding = 30; isa = PBXFileReference; path = FFT.h; refType = 4; }; F58A014A0513B6E80163C8F7 = { fileEncoding = 30; isa = PBXFileReference; path = FFT.c; refType = 4; }; F58A014B0513B6E80163C8F7 = { fileRef = F58A01490513B6E80163C8F7; isa = PBXBuildFile; settings = { }; }; F58A014C0513B6E90163C8F7 = { fileRef = F58A014A0513B6E80163C8F7; isa = PBXBuildFile; settings = { }; }; F59300510609F6AE01A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCCustTraceEdges.h; refType = 4; }; F59300520609F6AE01A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCCustTraceEdges.m; refType = 4; }; F59300530609F6AE01A80103 = { fileRef = F59300510609F6AE01A80103; isa = PBXBuildFile; settings = { }; }; F59300540609F6AE01A80103 = { fileRef = F59300520609F6AE01A80103; isa = PBXBuildFile; settings = { }; }; F59300550609F83101A80103 = { children = ( F59300560609F83101A80103, ); isa = PBXVariantGroup; name = CustTraceEdges.nib; path = ""; refType = 4; }; F59300560609F83101A80103 = { isa = PBXFileReference; name = English; path = English.lproj/CustTraceEdges.nib; refType = 4; }; F59300570609F83101A80103 = { fileRef = F59300550609F83101A80103; isa = PBXBuildFile; settings = { }; }; F5930058060B2ED001A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCustTraceEdges.h; refType = 4; }; F5930059060B2ED001A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCustTraceEdges.m; refType = 4; }; F593005A060B2ED001A80103 = { fileRef = F5930058060B2ED001A80103; isa = PBXBuildFile; settings = { }; }; F593005B060B2ED001A80103 = { fileRef = F5930059060B2ED001A80103; isa = PBXBuildFile; settings = { }; }; F59B4FBB0591D102011CE379 = { fileEncoding = 30; isa = PBXFileReference; path = PRCumHisto.h; refType = 4; }; F59B4FBC0591D102011CE379 = { fileEncoding = 30; isa = PBXFileReference; path = PRCumHisto.m; refType = 4; }; F59B4FBD0591D102011CE379 = { fileRef = F59B4FBB0591D102011CE379; isa = PBXBuildFile; settings = { }; }; F59B4FBE0591D102011CE379 = { fileRef = F59B4FBC0591D102011CE379; isa = PBXBuildFile; settings = { }; }; F59B4FBF0591DA41011CE379 = { fileEncoding = 30; isa = PBXFileReference; path = PRCCumHisto.h; refType = 4; }; F59B4FC00591DA41011CE379 = { fileEncoding = 30; isa = PBXFileReference; path = PRCCumHisto.m; refType = 4; }; F59B4FC10591DA41011CE379 = { fileRef = F59B4FBF0591DA41011CE379; isa = PBXBuildFile; settings = { }; }; F59B4FC20591DA41011CE379 = { fileRef = F59B4FC00591DA41011CE379; isa = PBXBuildFile; settings = { }; }; F59B4FC305921408011CE379 = { fileEncoding = 30; isa = PBXFileReference; path = PRHisto.h; refType = 4; }; F59B4FC405921408011CE379 = { fileEncoding = 30; isa = PBXFileReference; path = PRHisto.m; refType = 4; }; F59B4FC505921408011CE379 = { fileRef = F59B4FC305921408011CE379; isa = PBXBuildFile; settings = { }; }; F59B4FC605921408011CE379 = { fileRef = F59B4FC405921408011CE379; isa = PBXBuildFile; settings = { }; }; F59B4FC7059214C7011CE379 = { fileEncoding = 30; isa = PBXFileReference; path = PRCHisto.h; refType = 4; }; F59B4FC8059214C7011CE379 = { fileEncoding = 30; isa = PBXFileReference; path = PRCHisto.m; refType = 4; }; F59B4FC9059214C7011CE379 = { fileRef = F59B4FC7059214C7011CE379; isa = PBXBuildFile; settings = { }; }; F59B4FCA059214C7011CE379 = { fileRef = F59B4FC8059214C7011CE379; isa = PBXBuildFile; settings = { }; }; F59B4FCB05923027011CE379 = { children = ( F59B4FCC05923027011CE379, ); isa = PBXVariantGroup; name = CumulHistogram.nib; path = ""; refType = 4; }; F59B4FCC05923027011CE379 = { isa = PBXFileReference; name = English; path = English.lproj/CumulHistogram.nib; refType = 4; }; F59B4FCD05923027011CE379 = { fileRef = F59B4FCB05923027011CE379; isa = PBXBuildFile; settings = { }; }; F59EB61D079F1C9101A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCScale.h; refType = 4; }; F59EB61E079F1C9101A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCScale.m; refType = 4; }; F59EB61F079F1C9101A80103 = { fileRef = F59EB61D079F1C9101A80103; isa = PBXBuildFile; settings = { }; }; F59EB620079F1C9101A80103 = { fileRef = F59EB61E079F1C9101A80103; isa = PBXBuildFile; settings = { }; }; F59EB621079F1CA501A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRScale.h; refType = 4; }; F59EB622079F1CA501A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRScale.m; refType = 4; }; F59EB623079F1CA501A80103 = { fileRef = F59EB621079F1CA501A80103; isa = PBXBuildFile; settings = { }; }; F59EB624079F1CA501A80103 = { fileRef = F59EB622079F1CA501A80103; isa = PBXBuildFile; settings = { }; }; F59EB627079F2ED301A80103 = { children = ( F59EB628079F2ED301A80103, ); isa = PBXVariantGroup; name = Scale.nib; path = ""; refType = 4; }; F59EB628079F2ED301A80103 = { isa = PBXFileReference; name = English; path = English.lproj/Scale.nib; refType = 4; }; F59EB629079F2ED301A80103 = { fileRef = F59EB627079F2ED301A80103; isa = PBXBuildFile; settings = { }; }; F5A3DD6B058349E601A80103 = { children = ( F5A3DD6C058349E601A80103, ); isa = PBXVariantGroup; name = Equalize.nib; path = ""; refType = 4; }; F5A3DD6C058349E601A80103 = { isa = PBXFileReference; name = English; path = English.lproj/Equalize.nib; refType = 4; }; F5A3DD6D058349E601A80103 = { fileRef = F5A3DD6B058349E601A80103; isa = PBXBuildFile; settings = { }; }; F5B0F9640686C3B701A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCProgress.h; refType = 4; }; F5B0F9650686C3B701A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCProgress.m; refType = 4; }; F5B0F9660686C3B701A80101 = { fileRef = F5B0F9640686C3B701A80101; isa = PBXBuildFile; settings = { }; }; F5B0F9670686C3B701A80101 = { fileRef = F5B0F9650686C3B701A80101; isa = PBXBuildFile; settings = { }; }; F5B3A92205B53FF201A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCTraceEdges.h; refType = 4; }; F5B3A92305B53FF201A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCTraceEdges.m; refType = 4; }; F5B3A92405B53FF201A80101 = { fileRef = F5B3A92205B53FF201A80101; isa = PBXBuildFile; settings = { }; }; F5B3A92505B53FF201A80101 = { fileRef = F5B3A92305B53FF201A80101; isa = PBXBuildFile; settings = { }; }; F5B3A92605B5469C01A80101 = { children = ( F5B3A92705B5469C01A80101, ); isa = PBXVariantGroup; name = TraceEdges.nib; path = ""; refType = 4; }; F5B3A92705B5469C01A80101 = { isa = PBXFileReference; name = English; path = English.lproj/TraceEdges.nib; refType = 4; }; F5B3A92805B5469C01A80101 = { fileRef = F5B3A92605B5469C01A80101; isa = PBXBuildFile; settings = { }; }; F5B3A92905B5568F01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRTraceEdges.h; refType = 4; }; F5B3A92A05B5568F01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRTraceEdges.m; refType = 4; }; F5B3A92B05B5568F01A80101 = { fileRef = F5B3A92905B5568F01A80101; isa = PBXBuildFile; settings = { }; }; F5B3A92C05B5568F01A80101 = { fileRef = F5B3A92A05B5568F01A80101; isa = PBXBuildFile; settings = { }; }; F5B6257006881DCE01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRProgressAction.h; refType = 4; }; F5B6257106881DCE01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRProgressAction.m; refType = 4; }; F5B6257206881DCE01A80101 = { fileRef = F5B6257006881DCE01A80101; isa = PBXBuildFile; settings = { }; }; F5B6257306881DCE01A80101 = { fileRef = F5B6257106881DCE01A80101; isa = PBXBuildFile; settings = { }; }; F5BA52CE04CC34E80110017A = { fileRef = F568E20D03B77C9A01A80101; isa = PBXBuildFile; settings = { }; }; F5C11052081A46A201A80101 = { fileRef = F50E086503A8B47901317B72; isa = PBXBuildFile; settings = { }; }; F5C7F8ED07C75C6901A80101 = { children = ( F5C7F8EE07C75C6901A80101, ); isa = PBXVariantGroup; name = Crop.nib; path = ""; refType = 4; }; F5C7F8EE07C75C6901A80101 = { isa = PBXFileReference; name = English; path = English.lproj/Crop.nib; refType = 4; }; F5C7F8EF07C75C6901A80101 = { fileRef = F5C7F8ED07C75C6901A80101; isa = PBXBuildFile; settings = { }; }; F5C8A2A307EED49E01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCBriCon.h; refType = 4; }; F5C8A2A407EED49E01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCBriCon.m; refType = 4; }; F5C8A2A507EED49E01A80101 = { fileRef = F5C8A2A307EED49E01A80101; isa = PBXBuildFile; settings = { }; }; F5C8A2A607EED49E01A80101 = { fileRef = F5C8A2A407EED49E01A80101; isa = PBXBuildFile; settings = { }; }; F5C8A2A707EED52A01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRBriCon.h; refType = 4; }; F5C8A2A807EED52A01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRBriCon.m; refType = 4; }; F5C8A2A907EED52A01A80101 = { fileRef = F5C8A2A707EED52A01A80101; isa = PBXBuildFile; settings = { }; }; F5C8A2AA07EED52A01A80101 = { fileRef = F5C8A2A807EED52A01A80101; isa = PBXBuildFile; settings = { }; }; F5C8A2AB07EED94A01A80101 = { children = ( F5C8A2AC07EED94A01A80101, ); isa = PBXVariantGroup; name = BriCon.nib; path = ""; refType = 4; }; F5C8A2AC07EED94A01A80101 = { isa = PBXFileReference; name = English; path = English.lproj/BriCon.nib; refType = 4; }; F5C8A2AD07EED94A01A80101 = { fileRef = F5C8A2AB07EED94A01A80101; isa = PBXBuildFile; settings = { }; }; F5C941A908261B5E01A80101 = { isa = PBXFileReference; path = price128.icns; refType = 4; }; F5C941AA08261B5E01A80101 = { fileRef = F5C941A908261B5E01A80101; isa = PBXBuildFile; settings = { }; }; F5D38DD508FDA41801A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRImage.h; refType = 4; }; F5D38DD608FDA41801A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRImage.m; refType = 4; }; F5D38DD708FDA41801A80101 = { fileRef = F5D38DD508FDA41801A80101; isa = PBXBuildFile; settings = { }; }; F5D38DD808FDA41801A80101 = { fileRef = F5D38DD608FDA41801A80101; isa = PBXBuildFile; settings = { }; }; F5D67DAF0612D96501A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCMedian.h; refType = 4; }; F5D67DB00612D96501A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCMedian.m; refType = 4; }; F5D67DB10612D96501A80103 = { fileRef = F5D67DAF0612D96501A80103; isa = PBXBuildFile; settings = { }; }; F5D67DB20612D96501A80103 = { fileRef = F5D67DB00612D96501A80103; isa = PBXBuildFile; settings = { }; }; F5D9F4B607AD972F01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCrop.m; refType = 4; }; F5D9F4B707AD972F01A80101 = { fileRef = F5D9F4B607AD972F01A80101; isa = PBXBuildFile; settings = { }; }; F5D9F4B807AD974901A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCrop.h; refType = 4; }; F5D9F4B907AD974901A80101 = { fileRef = F5D9F4B807AD974901A80101; isa = PBXBuildFile; settings = { }; }; F5D9F4BA07AD976001A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCCrop.h; refType = 4; }; F5D9F4BB07AD976001A80101 = { fileRef = F5D9F4BA07AD976001A80101; isa = PBXBuildFile; settings = { }; }; F5D9F4BC07AD976F01A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRCCrop.m; refType = 4; }; F5D9F4BD07AD976F01A80101 = { fileRef = F5D9F4BC07AD976F01A80101; isa = PBXBuildFile; settings = { }; }; F5DC9E42056A98E601A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRDFTFilter.h; refType = 4; }; F5DC9E43056A98E601A80101 = { fileEncoding = 30; isa = PBXFileReference; path = PRDFTFilter.m; refType = 4; }; F5DC9E44056A98E601A80101 = { fileRef = F5DC9E42056A98E601A80101; isa = PBXBuildFile; settings = { }; }; F5DC9E45056A98E601A80101 = { fileRef = F5DC9E43056A98E601A80101; isa = PBXBuildFile; settings = { }; }; F5DD42E8053AAE5201A80103 = { children = ( F5DD42E9053AAE5201A80103, ); isa = PBXVariantGroup; name = DFTHighPass.nib; path = ""; refType = 4; }; F5DD42E9053AAE5201A80103 = { isa = PBXFileReference; name = English; path = English.lproj/DFTHighPass.nib; refType = 4; }; F5DD42EA053AAE5201A80103 = { fileRef = F5DD42E8053AAE5201A80103; isa = PBXBuildFile; settings = { }; }; F5DD42EB053AAEF901A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCDFTHighPass.h; refType = 4; }; F5DD42EC053AAEF901A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCDFTHighPass.m; refType = 4; }; F5DD42ED053AAEF901A80103 = { fileRef = F5DD42EB053AAEF901A80103; isa = PBXBuildFile; settings = { }; }; F5DD42EE053AAEF901A80103 = { fileRef = F5DD42EC053AAEF901A80103; isa = PBXBuildFile; settings = { }; }; F5E238A405808FD801A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCEqualize.h; refType = 4; }; F5E238A505808FD801A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PRCEqualize.m; refType = 4; }; F5E238A605808FD801A80103 = { fileRef = F5E238A405808FD801A80103; isa = PBXBuildFile; settings = { }; }; F5E238A705808FD801A80103 = { fileRef = F5E238A505808FD801A80103; isa = PBXBuildFile; settings = { }; }; F5E238A8058091EB01A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PREqualize.h; refType = 4; }; F5E238A9058091EB01A80103 = { fileEncoding = 30; isa = PBXFileReference; path = PREqualize.m; refType = 4; }; F5E238AA058091EB01A80103 = { fileRef = F5E238A8058091EB01A80103; isa = PBXBuildFile; settings = { }; }; F5E238AB058091EB01A80103 = { fileRef = F5E238A9058091EB01A80103; isa = PBXBuildFile; settings = { }; }; F5E238AC058091F001A80103 = { children = ( F5C8A2A707EED52A01A80101, F5C8A2A807EED52A01A80101, F5E238A8058091EB01A80103, F5E238A9058091EB01A80103, F5B3A92905B5568F01A80101, F5B3A92A05B5568F01A80101, F5930058060B2ED001A80103, F5930059060B2ED001A80103, F538441D0612E9BF01A80103, F538441E0612E9BF01A80103, ); isa = PBXGroup; name = Enhance; refType = 4; }; }; rootObject = 2A37F4A9FDCFA73011CA2CEA; } PRICE-1.3.0/PRICE.pcproj004075500017500000012000000000001245331715400137405ustar00multixusersPRICE-1.3.0/PRICE.pcproj/PC.project010064400017500000012000000114661237545761100157240ustar00multixusers{ APPCLASS = NSApplication; APPKIT = "GNUSTEP-GUI"; APPLICATIONICON = "price-icon-os.tiff"; "APP_DOCUMENT_BASED" = YES; "APP_TYPE" = GORM; "BUILDER_TARGETS" = ( all, install, uninstall, clean, distclean, dist ); BUILDTOOL = "/usr/local/bin/make"; "CLASS_FILES" = ( "main.m", "AppController.m", "MyDocument.m", "PRCConvolve55.m", "PRConvolve55.m", "PRFourier.m", "PRGrayscaleFilter.m", "PRImageView.m", "PRTransforms.m", "PRWindowController.m", "PRCDFTLowPass.m", "PRDFTLowPass.m", "PRCDFTHighPass.m", "PRDFTFilter.m", "PRDFTHighPass.m", "PRCEqualize.m", "PREqualize.m", "PRHistogram.m", "PRCHistogram.m", "PRHisto.m", "PRCCumHisto.m", "PRCumHisto.m", "PRCHisto.m", "PRCTraceEdges.m", "PRTraceEdges.m", "PRCustTraceEdges.m", "PRCCustTraceEdges.m", "PRMedian.m", "PRCMedian.m", "PRCProgress.m", "PRProgressAction.m", "PRScale.m", "PRCScale.m", "PRCCrop.m", "PRCrop.m", "PRBriCon.m", "PRCBriCon.m", "PRImage.m", "PRCGrayscale.m", "PRInvert.m", "PRFilter.m", "PRCFourier.m", "PRCInvert.m", "PRCTransforms.m", "PRPreviewController.m", "PRFilterController.m", "PRCCurves.m", "PRCurves.m", "PRCurvesPath.m", "PRCurvesView.m" ); COMPILEROPTIONS = ""; CPPOPTIONS = ""; "CREATION_DATE" = ""; "DOCU_FILES" = ( README ); FOUNDATION = "GNUSTEP-BASE"; FRAMEWORKS = ( ); "HEADER_FILES" = ( "AppController.h", "MyDocument.h", "PRCConvolve55.h", "PRConvolve55.h", "PRFourier.h", "PRGrayscaleFilter.h", "PRImageView.h", "PRTransforms.h", "PRWindowController.h", "PRCDFTLowPass.h", "PRDFTLowPass.h", "PRCDFTHighPass.h", "PRDFTFilter.h", "PRDFTHighPass.h", "PRCEqualize.h", "PREqualize.h", "PRHistogram.h", "PRCHistogram.h", "PRHisto.h", "PRCCumHisto.h", "PRCumHisto.h", "PRCHisto.h", "PRCTraceEdges.h", "PRTraceEdges.h", "PRCustTraceEdges.h", "PRCCustTraceEdges.h", "PRMedian.h", "PRCMedian.h", "PRCProgress.h", "PRProgressAction.h", "PRScale.h", "PRCScale.h", "PRCCrop.h", "PRCrop.h", "PRBriCon.h", "PRCBriCon.h", "FFT.h", "PRImage.h", "PRCGrayscale.h", "PRInvert.h", "PRFilter.h", "PRCFourier.h", "PRCInvert.h", "PRCTransforms.h", "PRPreviewController.h", "PRFilterController.h", "PRCCurves.h", "PRCurves.h", "PRCurvesPath.h", "PRCurvesView.h" ); IMAGES = ( "price-icon-os.tiff" ); INSTALLDIR = "$(GNUSTEP_LOCAL_ROOT)/"; INTERFACES = ( "MainMenu.gorm", "PRWindow.gorm", "Convolve55.gorm", "DFTLowPass.gorm", "DFTHighPass.gorm", "Equalize.gorm", "Histogram.gorm", "CumulHistogram.gorm", "TraceEdges.gorm", "CustTraceEdges.gorm", "Median.gorm", "ProgressPanel.gorm", "Scale.gorm", "Crop.gorm", "BriCon.gorm", "Grayscale.gorm", "Preview.gorm", "Curves.gorm" ); LANGUAGE = English; LIBRARIES = ( "gnustep-base", "gnustep-gui" ); LINKEROPTIONS = ""; "LOCALIZED_RESOURCES" = ( ); MAININTERFACE = "MainMenu.gorm"; MAKEFILEDIR = "$(GNUSTEP_SYSTEM_ROOT)/Makefiles"; "OBJC_COMPILEROPTIONS" = ""; "OTHER_FILES" = ( ); "OTHER_RESOURCES" = ( ); "OTHER_SOURCES" = ( "FFT.c" ); "PRINCIPAL_CLASS" = NSApplication; "PROJECT_AUTHORS" = ( "Riccardo Mottola" ); "PROJECT_COPYRIGHT" = "Copyright (C) 2002-2014"; "PROJECT_COPYRIGHT_DESC" = "Released under the GNU General Public License v2+."; "PROJECT_CREATOR" = ""; "PROJECT_DESCRIPTION" = "Precision Raster Image Convolution Engine"; "PROJECT_DOCUMENTTYPES" = ( { NSDocumentClass = MyDocument; NSHumanReadableName = "TIFF Document"; NSName = TIFF; NSRole = Editor; NSUnixExtensions = ( tif, tiff ); }, { NSDocumentClass = MyDocument; NSHumanReadableName = "JPEG Document"; NSName = JPEG; NSRole = Editor; NSUnixExtensions = ( jpg, jpeg, JPG, JPEG ); }, { NSDocumentClass = MyDocument; NSHumanReadableName = "GIF Document"; NSName = GIF; NSRole = Viewer; NSUnixExtensions = ( gif ); }, { NSDocumentClass = MyDocument; NSHumanReadableName = "PNG Document"; NSName = PNG; NSRole = Viewer; NSUnixExtensions = ( png ); }, { NSDocumentClass = MyDocument; NSHumanReadableName = "XPM Document"; NSName = XPM; NSRole = Viewer; NSUnixExtensions = ( xpm ); } ); "PROJECT_GROUP" = "No description avaliable!"; "PROJECT_MAINTAINER" = ""; "PROJECT_NAME" = PRICE; "PROJECT_RELEASE" = "1.3.0"; "PROJECT_SOURCE" = "%{gs_name}-%{gs_version}.tar.gz"; "PROJECT_SUMMARY" = "No summary avaliable!"; "PROJECT_TYPE" = Application; "PROJECT_URL" = "http://price.sf.net"; "PROJECT_VERSION" = "1.0"; "SEARCH_HEADER_DIRS" = ( ); "SEARCH_LIB_DIRS" = ( ); SUBPROJECTS = ( ); "SUPPORTING_FILES" = ( "PRICEInfo.plist" ); "USER_LANGUAGES" = ( English ); }PRICE-1.3.0/PRICE.xcode004075500017500000012000000000001245331715400135455ustar00multixusersPRICE-1.3.0/PRICE.xcode/project.pbxproj010064400017500000012000001553351162352214700167070ustar00multixusers// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 39; objects = { 089C165FFE840EACC02AAC07 = { children = ( 089C1660FE840EACC02AAC07, ); isa = PBXVariantGroup; name = InfoPlist.strings; refType = 4; sourceTree = ""; }; 089C1660FE840EACC02AAC07 = { fileEncoding = 10; isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; refType = 4; sourceTree = ""; }; //080 //081 //082 //083 //084 //100 //101 //102 //103 //104 1058C7A6FEA54F5311CA2CBB = { children = ( 1058C7A7FEA54F5311CA2CBB, ); isa = PBXGroup; name = "Linked Frameworks"; refType = 4; sourceTree = ""; }; 1058C7A7FEA54F5311CA2CBB = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; refType = 0; sourceTree = ""; }; 1058C7A8FEA54F5311CA2CBB = { children = ( 2A37F4C5FDCFA73011CA2CEA, 2A37F4C4FDCFA73011CA2CEA, ); isa = PBXGroup; name = "Other Frameworks"; refType = 4; sourceTree = ""; }; //100 //101 //102 //103 //104 //190 //191 //192 //193 //194 19C28FB0FE9D524F11CA2CBB = { children = ( 85B76A6B10B3810400361450, ); isa = PBXGroup; name = Products; refType = 4; sourceTree = ""; }; //190 //191 //192 //193 //194 //2A0 //2A1 //2A2 //2A3 //2A4 2A37F4A9FDCFA73011CA2CEA = { buildSettings = { }; buildStyles = ( 4A9504D0FFE6A4CB11CA0CBA, 4A9504D1FFE6A4CB11CA0CBA, ); hasScannedForEncodings = 1; isa = PBXProject; mainGroup = 2A37F4AAFDCFA73011CA2CEA; projectDirPath = ""; targets = ( 85B769F710B3810300361450, ); }; 2A37F4AAFDCFA73011CA2CEA = { children = ( 2A37F4ABFDCFA73011CA2CEA, 2A37F4AFFDCFA73011CA2CEA, 2A37F4B8FDCFA73011CA2CEA, 2A37F4C3FDCFA73011CA2CEA, 19C28FB0FE9D524F11CA2CBB, ); isa = PBXGroup; name = PRICE; path = ""; refType = 4; sourceTree = ""; }; 2A37F4ABFDCFA73011CA2CEA = { children = ( F5D38DD508FDA41801A80101, F5D38DD608FDA41801A80101, F54D8D5C0588ECEB01A80103, F54D8D5D0588ECEB01A80103, F54D8D660588ED9101A80103, F54D8D670588ED9101A80103, F59B4FC305921408011CE379, F59B4FC405921408011CE379, F59B4FC7059214C7011CE379, F59B4FC8059214C7011CE379, F59B4FBB0591D102011CE379, F59B4FBC0591D102011CE379, F59B4FBF0591DA41011CE379, F59B4FC00591DA41011CE379, 85B13ED113FC2328004CBDC0, 85B13ED213FC2328004CBDC0, 85B13ED313FC2328004CBDC0, 85B13ED413FC2328004CBDC0, 85B13ED513FC2328004CBDC0, 85B13ED613FC2328004CBDC0, F52B6E0803DDC36301A80101, F568E20B03B7583A01A80101, F5E238AC058091F001A80103, 2A37F4AEFDCFA73011CA2CEA, 2A37F4ACFDCFA73011CA2CEA, F50E085E03A8B3A001317B72, F50E085F03A8B3A001317B72, F50E086203A8B47901317B72, F50E086303A8B47901317B72, F50E086403A8B47901317B72, F50E086503A8B47901317B72, F5B0F9640686C3B701A80101, F5B0F9650686C3B701A80101, F5B6257006881DCE01A80101, F5B6257106881DCE01A80101, F59EB621079F1CA501A80103, F59EB622079F1CA501A80103, F5D9F4B807AD974901A80101, F5D9F4B607AD972F01A80101, ); isa = PBXGroup; name = Classes; path = ""; refType = 4; sourceTree = ""; }; 2A37F4ACFDCFA73011CA2CEA = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MyDocument.m; refType = 4; sourceTree = ""; }; 2A37F4AEFDCFA73011CA2CEA = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MyDocument.h; refType = 4; sourceTree = ""; }; 2A37F4AFFDCFA73011CA2CEA = { children = ( 2A37F4B0FDCFA73011CA2CEA, F58A01490513B6E80163C8F7, F58A014A0513B6E80163C8F7, ); isa = PBXGroup; name = "Other Sources"; path = ""; refType = 4; sourceTree = ""; }; 2A37F4B0FDCFA73011CA2CEA = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; refType = 4; sourceTree = ""; }; 2A37F4B4FDCFA73011CA2CEA = { children = ( 2A37F4B5FDCFA73011CA2CEA, ); isa = PBXVariantGroup; name = PRWindow.nib; path = ""; refType = 4; sourceTree = ""; }; 2A37F4B5FDCFA73011CA2CEA = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = PRWindow.nib; path = English.lproj/PRWindow.nib; refType = 4; sourceTree = ""; }; 2A37F4B6FDCFA73011CA2CEA = { children = ( 2A37F4B7FDCFA73011CA2CEA, ); isa = PBXVariantGroup; name = MainMenu.nib; path = ""; refType = 4; sourceTree = ""; }; 2A37F4B7FDCFA73011CA2CEA = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; refType = 4; sourceTree = ""; }; 2A37F4B8FDCFA73011CA2CEA = { children = ( 85B13EC613FC2284004CBDC0, F5C941A908261B5E01A80101, F537CAEE0500A8B801A80103, 2A37F4B9FDCFA73011CA2CEA, 089C165FFE840EACC02AAC07, 2A37F4B6FDCFA73011CA2CEA, 2A37F4B4FDCFA73011CA2CEA, F51A79A603D95E3101A80101, F5C8A2AB07EED94A01A80101, F58A014605138B000163C8F7, F5DD42E8053AAE5201A80103, F5A3DD6B058349E601A80103, F54D8D6A0588EE6201A80103, F59B4FCB05923027011CE379, F5B3A92605B5469C01A80101, F59300550609F83101A80103, F538441A0612E0D001A80103, F52855C60689AB0301A80101, F59EB627079F2ED301A80103, F5C7F8ED07C75C6901A80101, 85E2FA3F0B5CEAF3003E7B25, 856604E5112F3C4700420865, ); isa = PBXGroup; name = Resources; path = ""; refType = 4; sourceTree = ""; }; 2A37F4B9FDCFA73011CA2CEA = { children = ( 2A37F4BAFDCFA73011CA2CEA, ); isa = PBXVariantGroup; name = Credits.rtf; path = ""; refType = 4; sourceTree = ""; }; 2A37F4BAFDCFA73011CA2CEA = { isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = English.lproj/Credits.rtf; refType = 4; sourceTree = ""; }; 2A37F4C3FDCFA73011CA2CEA = { children = ( 1058C7A6FEA54F5311CA2CBB, 1058C7A8FEA54F5311CA2CBB, ); isa = PBXGroup; name = Frameworks; path = ""; refType = 4; sourceTree = ""; }; 2A37F4C4FDCFA73011CA2CEA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; refType = 0; sourceTree = ""; }; 2A37F4C5FDCFA73011CA2CEA = { isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; refType = 0; sourceTree = ""; }; //2A0 //2A1 //2A2 //2A3 //2A4 //4A0 //4A1 //4A2 //4A3 //4A4 4A9504D0FFE6A4CB11CA0CBA = { buildSettings = { COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; OPTIMIZATION_CFLAGS = "-O0"; ZERO_LINK = YES; }; isa = PBXBuildStyle; name = Development; }; 4A9504D1FFE6A4CB11CA0CBA = { buildSettings = { COPY_PHASE_STRIP = YES; GCC_ENABLE_FIX_AND_CONTINUE = NO; OPTIMIZATION_CFLAGS = "-O2"; ZERO_LINK = NO; }; isa = PBXBuildStyle; name = Deployment; }; //4A0 //4A1 //4A2 //4A3 //4A4 //850 //851 //852 //853 //854 856604CA112F39FE00420865 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRFilterController.h; refType = 4; sourceTree = ""; }; 856604CB112F39FE00420865 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRFilterController.m; refType = 4; sourceTree = ""; }; 856604CC112F39FE00420865 = { fileRef = 856604CA112F39FE00420865; isa = PBXBuildFile; settings = { }; }; 856604CD112F39FE00420865 = { fileRef = 856604CB112F39FE00420865; isa = PBXBuildFile; settings = { }; }; 856604E5112F3C4700420865 = { children = ( 856604E6112F3C4700420865, ); isa = PBXVariantGroup; name = Preview.nib; path = ""; refType = 4; sourceTree = ""; }; 856604E6112F3C4700420865 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Preview.nib; refType = 4; sourceTree = ""; }; 856604E7112F3C4700420865 = { fileRef = 856604E5112F3C4700420865; isa = PBXBuildFile; settings = { }; }; 85660520112F480D00420865 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRPreviewController.h; refType = 4; sourceTree = ""; }; 85660521112F480D00420865 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRPreviewController.m; refType = 4; sourceTree = ""; }; 85660522112F480D00420865 = { fileRef = 85660520112F480D00420865; isa = PBXBuildFile; settings = { }; }; 85660523112F480D00420865 = { fileRef = 85660521112F480D00420865; isa = PBXBuildFile; settings = { }; }; 85B13EC613FC2284004CBDC0 = { children = ( 85B13EC713FC2284004CBDC0, ); isa = PBXVariantGroup; name = Curves.nib; path = ""; refType = 4; sourceTree = ""; }; 85B13EC713FC2284004CBDC0 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Curves.nib; refType = 4; sourceTree = ""; }; 85B13EC813FC2284004CBDC0 = { fileRef = 85B13EC613FC2284004CBDC0; isa = PBXBuildFile; settings = { }; }; 85B13ECB13FC22C9004CBDC0 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCCurves.h; refType = 4; sourceTree = ""; }; 85B13ECC13FC22C9004CBDC0 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCCurves.m; refType = 4; sourceTree = ""; }; 85B13ECD13FC22C9004CBDC0 = { fileRef = 85B13ECB13FC22C9004CBDC0; isa = PBXBuildFile; settings = { }; }; 85B13ECE13FC22C9004CBDC0 = { fileRef = 85B13ECC13FC22C9004CBDC0; isa = PBXBuildFile; settings = { }; }; 85B13ED113FC2328004CBDC0 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCurves.h; refType = 4; sourceTree = ""; }; 85B13ED213FC2328004CBDC0 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCurves.m; refType = 4; sourceTree = ""; }; 85B13ED313FC2328004CBDC0 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCurvesPath.h; refType = 4; sourceTree = ""; }; 85B13ED413FC2328004CBDC0 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCurvesPath.m; refType = 4; sourceTree = ""; }; 85B13ED513FC2328004CBDC0 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCurvesView.h; refType = 4; sourceTree = ""; }; 85B13ED613FC2328004CBDC0 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCurvesView.m; refType = 4; sourceTree = ""; }; 85B13ED713FC2328004CBDC0 = { fileRef = 85B13ED113FC2328004CBDC0; isa = PBXBuildFile; settings = { }; }; 85B13ED813FC2328004CBDC0 = { fileRef = 85B13ED213FC2328004CBDC0; isa = PBXBuildFile; settings = { }; }; 85B13ED913FC2328004CBDC0 = { fileRef = 85B13ED313FC2328004CBDC0; isa = PBXBuildFile; settings = { }; }; 85B13EDA13FC2328004CBDC0 = { fileRef = 85B13ED413FC2328004CBDC0; isa = PBXBuildFile; settings = { }; }; 85B13EDB13FC2328004CBDC0 = { fileRef = 85B13ED513FC2328004CBDC0; isa = PBXBuildFile; settings = { }; }; 85B13EDC13FC2328004CBDC0 = { fileRef = 85B13ED613FC2328004CBDC0; isa = PBXBuildFile; settings = { }; }; 85B769F710B3810300361450 = { buildPhases = ( 85B769F810B3810300361450, 85B76A2510B3810300361450, 85B76A3A10B3810300361450, 85B76A6810B3810300361450, ); buildRules = ( ); buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "Info-PRICE.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = ""; PRODUCT_NAME = PRICE; SECTORDER_FLAGS = ""; WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; WRAPPER_EXTENSION = app; }; dependencies = ( ); isa = PBXNativeTarget; name = PRICE; productInstallPath = "$(HOME)/Applications"; productName = PRICE; productReference = 85B76A6B10B3810400361450; productType = "com.apple.product-type.application"; }; 85B769F810B3810300361450 = { buildActionMask = 2147483647; files = ( 85B769F910B3810300361450, 85B769FA10B3810300361450, 85B769FB10B3810300361450, 85B769FC10B3810300361450, 85B769FD10B3810300361450, 85B769FE10B3810300361450, 85B769FF10B3810300361450, 85B76A0010B3810300361450, 85B76A0110B3810300361450, 85B76A0210B3810300361450, 85B76A0310B3810300361450, 85B76A0410B3810300361450, 85B76A0510B3810300361450, 85B76A0610B3810300361450, 85B76A0710B3810300361450, 85B76A0810B3810300361450, 85B76A0910B3810300361450, 85B76A0A10B3810300361450, 85B76A0B10B3810300361450, 85B76A0C10B3810300361450, 85B76A0D10B3810300361450, 85B76A0E10B3810300361450, 85B76A0F10B3810300361450, 85B76A1010B3810300361450, 85B76A1110B3810300361450, 85B76A1210B3810300361450, 85B76A1310B3810300361450, 85B76A1410B3810300361450, 85B76A1510B3810300361450, 85B76A1610B3810300361450, 85B76A1710B3810300361450, 85B76A1810B3810300361450, 85B76A1910B3810300361450, 85B76A1A10B3810300361450, 85B76A1B10B3810300361450, 85B76A1C10B3810300361450, 85B76A1D10B3810300361450, 85B76A1E10B3810300361450, 85B76A1F10B3810300361450, 85B76A2010B3810300361450, 85B76A2110B3810300361450, 85B76A2210B3810300361450, 85B76A2310B3810300361450, 85B76A2410B3810300361450, 856604CC112F39FE00420865, 85660522112F480D00420865, 85B13ECD13FC22C9004CBDC0, 85B13ED713FC2328004CBDC0, 85B13ED913FC2328004CBDC0, 85B13EDB13FC2328004CBDC0, ); isa = PBXHeadersBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 85B769F910B3810300361450 = { fileRef = 2A37F4AEFDCFA73011CA2CEA; isa = PBXBuildFile; settings = { }; }; 85B769FA10B3810300361450 = { fileRef = F50E085E03A8B3A001317B72; isa = PBXBuildFile; settings = { }; }; 85B769FB10B3810300361450 = { fileRef = F50E086203A8B47901317B72; isa = PBXBuildFile; settings = { }; }; 85B769FC10B3810300361450 = { fileRef = F50E086403A8B47901317B72; isa = PBXBuildFile; settings = { }; }; 85B769FD10B3810300361450 = { fileRef = F568E20703B757F201A80101; isa = PBXBuildFile; settings = { }; }; 85B769FE10B3810300361450 = { fileRef = F568E20C03B77C9A01A80101; isa = PBXBuildFile; settings = { }; }; 85B769FF10B3810300361450 = { fileRef = F51A79AC03D9642D01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A0010B3810300361450 = { fileRef = F52B6E0903DDC6C201A80101; isa = PBXBuildFile; settings = { }; }; 85B76A0110B3810300361450 = { fileRef = F551DF3203E1B5CF01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A0210B3810300361450 = { fileRef = F58A013E051379F90163C8F7; isa = PBXBuildFile; settings = { }; }; 85B76A0310B3810300361450 = { fileRef = F58A014205137A870163C8F7; isa = PBXBuildFile; settings = { }; }; 85B76A0410B3810300361450 = { fileRef = F58A01490513B6E80163C8F7; isa = PBXBuildFile; settings = { }; }; 85B76A0510B3810300361450 = { fileRef = F5DD42EB053AAEF901A80103; isa = PBXBuildFile; settings = { }; }; 85B76A0610B3810300361450 = { fileRef = F55BF70E054909D501A80103; isa = PBXBuildFile; settings = { }; }; 85B76A0710B3810300361450 = { fileRef = F5DC9E42056A98E601A80101; isa = PBXBuildFile; settings = { }; }; 85B76A0810B3810300361450 = { fileRef = F5E238A405808FD801A80103; isa = PBXBuildFile; settings = { }; }; 85B76A0910B3810300361450 = { fileRef = F5E238A8058091EB01A80103; isa = PBXBuildFile; settings = { }; }; 85B76A0A10B3810300361450 = { fileRef = F54D8D5C0588ECEB01A80103; isa = PBXBuildFile; settings = { }; }; 85B76A0B10B3810300361450 = { fileRef = F54D8D660588ED9101A80103; isa = PBXBuildFile; settings = { }; }; 85B76A0C10B3810300361450 = { fileRef = F59B4FBB0591D102011CE379; isa = PBXBuildFile; settings = { }; }; 85B76A0D10B3810300361450 = { fileRef = F59B4FBF0591DA41011CE379; isa = PBXBuildFile; settings = { }; }; 85B76A0E10B3810300361450 = { fileRef = F59B4FC305921408011CE379; isa = PBXBuildFile; settings = { }; }; 85B76A0F10B3810300361450 = { fileRef = F59B4FC7059214C7011CE379; isa = PBXBuildFile; settings = { }; }; 85B76A1010B3810300361450 = { fileRef = F5B3A92205B53FF201A80101; isa = PBXBuildFile; settings = { }; }; 85B76A1110B3810300361450 = { fileRef = F5B3A92905B5568F01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A1210B3810300361450 = { fileRef = F59300510609F6AE01A80103; isa = PBXBuildFile; settings = { }; }; 85B76A1310B3810300361450 = { fileRef = F5930058060B2ED001A80103; isa = PBXBuildFile; settings = { }; }; 85B76A1410B3810300361450 = { fileRef = F5D67DAF0612D96501A80103; isa = PBXBuildFile; settings = { }; }; 85B76A1510B3810300361450 = { fileRef = F538441D0612E9BF01A80103; isa = PBXBuildFile; settings = { }; }; 85B76A1610B3810300361450 = { fileRef = F5B0F9640686C3B701A80101; isa = PBXBuildFile; settings = { }; }; 85B76A1710B3810300361450 = { fileRef = F5B6257006881DCE01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A1810B3810300361450 = { fileRef = F59EB61D079F1C9101A80103; isa = PBXBuildFile; settings = { }; }; 85B76A1910B3810300361450 = { fileRef = F59EB621079F1CA501A80103; isa = PBXBuildFile; settings = { }; }; 85B76A1A10B3810300361450 = { fileRef = F5D9F4B807AD974901A80101; isa = PBXBuildFile; settings = { }; }; 85B76A1B10B3810300361450 = { fileRef = F5D9F4BA07AD976001A80101; isa = PBXBuildFile; settings = { }; }; 85B76A1C10B3810300361450 = { fileRef = F5C8A2A307EED49E01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A1D10B3810300361450 = { fileRef = F5C8A2A707EED52A01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A1E10B3810300361450 = { fileRef = F5D38DD508FDA41801A80101; isa = PBXBuildFile; settings = { }; }; 85B76A1F10B3810300361450 = { fileRef = 85E2FA3B0B5CE7AA003E7B25; isa = PBXBuildFile; settings = { }; }; 85B76A2010B3810300361450 = { fileRef = 85D196360D0A063900A80101; isa = PBXBuildFile; settings = { }; }; 85B76A2110B3810300361450 = { fileRef = 85F3E8020EC5003200B9D568; isa = PBXBuildFile; settings = { }; }; 85B76A2210B3810300361450 = { fileRef = 85CBE1320ECE08B200A80101; isa = PBXBuildFile; settings = { }; }; 85B76A2310B3810300361450 = { fileRef = 85CBE1360ECE113300A80101; isa = PBXBuildFile; settings = { }; }; 85B76A2410B3810300361450 = { fileRef = 85CBE13A0ECE328400A80101; isa = PBXBuildFile; settings = { }; }; 85B76A2510B3810300361450 = { buildActionMask = 2147483647; files = ( 85B76A2610B3810300361450, 85B76A2710B3810300361450, 85B76A2810B3810300361450, 85B76A2910B3810300361450, 85B76A2A10B3810300361450, 85B76A2B10B3810300361450, 85B76A2C10B3810300361450, 85B76A2D10B3810300361450, 85B76A2E10B3810300361450, 85B76A2F10B3810300361450, 85B76A3010B3810300361450, 85B76A3110B3810300361450, 85B76A3210B3810300361450, 85B76A3310B3810300361450, 85B76A3410B3810300361450, 85B76A3510B3810300361450, 85B76A3610B3810300361450, 85B76A3710B3810300361450, 85B76A3810B3810300361450, 85B76A3910B3810300361450, 856604E7112F3C4700420865, 85B13EC813FC2284004CBDC0, ); isa = PBXResourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 85B76A2610B3810300361450 = { fileRef = 2A37F4B9FDCFA73011CA2CEA; isa = PBXBuildFile; settings = { }; }; 85B76A2710B3810300361450 = { fileRef = 2A37F4B6FDCFA73011CA2CEA; isa = PBXBuildFile; settings = { }; }; 85B76A2810B3810300361450 = { fileRef = 2A37F4B4FDCFA73011CA2CEA; isa = PBXBuildFile; settings = { }; }; 85B76A2910B3810300361450 = { fileRef = 089C165FFE840EACC02AAC07; isa = PBXBuildFile; settings = { }; }; 85B76A2A10B3810300361450 = { fileRef = F51A79A603D95E3101A80101; isa = PBXBuildFile; settings = { }; }; 85B76A2B10B3810300361450 = { fileRef = F537CAEE0500A8B801A80103; isa = PBXBuildFile; settings = { }; }; 85B76A2C10B3810300361450 = { fileRef = F58A014605138B000163C8F7; isa = PBXBuildFile; settings = { }; }; 85B76A2D10B3810300361450 = { fileRef = F5DD42E8053AAE5201A80103; isa = PBXBuildFile; settings = { }; }; 85B76A2E10B3810300361450 = { fileRef = F5A3DD6B058349E601A80103; isa = PBXBuildFile; settings = { }; }; 85B76A2F10B3810300361450 = { fileRef = F54D8D6A0588EE6201A80103; isa = PBXBuildFile; settings = { }; }; 85B76A3010B3810300361450 = { fileRef = F59B4FCB05923027011CE379; isa = PBXBuildFile; settings = { }; }; 85B76A3110B3810300361450 = { fileRef = F5B3A92605B5469C01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A3210B3810300361450 = { fileRef = F59300550609F83101A80103; isa = PBXBuildFile; settings = { }; }; 85B76A3310B3810300361450 = { fileRef = F538441A0612E0D001A80103; isa = PBXBuildFile; settings = { }; }; 85B76A3410B3810300361450 = { fileRef = F52855C60689AB0301A80101; isa = PBXBuildFile; settings = { }; }; 85B76A3510B3810300361450 = { fileRef = F59EB627079F2ED301A80103; isa = PBXBuildFile; settings = { }; }; 85B76A3610B3810300361450 = { fileRef = F5C7F8ED07C75C6901A80101; isa = PBXBuildFile; settings = { }; }; 85B76A3710B3810300361450 = { fileRef = F5C8A2AB07EED94A01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A3810B3810300361450 = { fileRef = F5C941A908261B5E01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A3910B3810300361450 = { fileRef = 85E2FA3F0B5CEAF3003E7B25; isa = PBXBuildFile; settings = { }; }; 85B76A3A10B3810300361450 = { buildActionMask = 2147483647; files = ( 85B76A3B10B3810300361450, 85B76A3C10B3810300361450, 85B76A3D10B3810300361450, 85B76A3E10B3810300361450, 85B76A3F10B3810300361450, 85B76A4010B3810300361450, 85B76A4110B3810300361450, 85B76A4210B3810300361450, 85B76A4310B3810300361450, 85B76A4410B3810300361450, 85B76A4510B3810300361450, 85B76A4610B3810300361450, 85B76A4710B3810300361450, 85B76A4810B3810300361450, 85B76A4910B3810300361450, 85B76A4A10B3810300361450, 85B76A4B10B3810300361450, 85B76A4C10B3810300361450, 85B76A4D10B3810300361450, 85B76A4E10B3810300361450, 85B76A4F10B3810300361450, 85B76A5010B3810300361450, 85B76A5110B3810300361450, 85B76A5210B3810300361450, 85B76A5310B3810300361450, 85B76A5410B3810300361450, 85B76A5510B3810300361450, 85B76A5610B3810300361450, 85B76A5710B3810300361450, 85B76A5810B3810300361450, 85B76A5910B3810300361450, 85B76A5A10B3810300361450, 85B76A5B10B3810300361450, 85B76A5C10B3810300361450, 85B76A5D10B3810300361450, 85B76A5E10B3810300361450, 85B76A5F10B3810300361450, 85B76A6010B3810300361450, 85B76A6110B3810300361450, 85B76A6210B3810300361450, 85B76A6310B3810300361450, 85B76A6410B3810300361450, 85B76A6510B3810300361450, 85B76A6610B3810300361450, 85B76A6710B3810300361450, 856604CD112F39FE00420865, 85660523112F480D00420865, 85B13ECE13FC22C9004CBDC0, 85B13ED813FC2328004CBDC0, 85B13EDA13FC2328004CBDC0, 85B13EDC13FC2328004CBDC0, ); isa = PBXSourcesBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 85B76A3B10B3810300361450 = { fileRef = 2A37F4ACFDCFA73011CA2CEA; isa = PBXBuildFile; settings = { ATTRIBUTES = ( ); }; }; 85B76A3C10B3810300361450 = { fileRef = 2A37F4B0FDCFA73011CA2CEA; isa = PBXBuildFile; settings = { ATTRIBUTES = ( ); }; }; 85B76A3D10B3810300361450 = { fileRef = F50E085F03A8B3A001317B72; isa = PBXBuildFile; settings = { }; }; 85B76A3E10B3810300361450 = { fileRef = F50E086303A8B47901317B72; isa = PBXBuildFile; settings = { }; }; 85B76A3F10B3810300361450 = { fileRef = F568E20803B757F201A80101; isa = PBXBuildFile; settings = { }; }; 85B76A4010B3810300361450 = { fileRef = F51A79AD03D9642D01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A4110B3810300361450 = { fileRef = F52B6E0A03DDC6C201A80101; isa = PBXBuildFile; settings = { }; }; 85B76A4210B3810300361450 = { fileRef = F551DF3303E1B5CF01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A4310B3810300361450 = { fileRef = F568E20D03B77C9A01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A4410B3810300361450 = { fileRef = F58A013F051379F90163C8F7; isa = PBXBuildFile; settings = { }; }; 85B76A4510B3810300361450 = { fileRef = F58A014305137A870163C8F7; isa = PBXBuildFile; settings = { }; }; 85B76A4610B3810300361450 = { fileRef = F58A014A0513B6E80163C8F7; isa = PBXBuildFile; settings = { }; }; 85B76A4710B3810300361450 = { fileRef = F5DD42EC053AAEF901A80103; isa = PBXBuildFile; settings = { }; }; 85B76A4810B3810300361450 = { fileRef = F55BF70F054909D501A80103; isa = PBXBuildFile; settings = { }; }; 85B76A4910B3810300361450 = { fileRef = F5DC9E43056A98E601A80101; isa = PBXBuildFile; settings = { }; }; 85B76A4A10B3810300361450 = { fileRef = F5E238A505808FD801A80103; isa = PBXBuildFile; settings = { }; }; 85B76A4B10B3810300361450 = { fileRef = F5E238A9058091EB01A80103; isa = PBXBuildFile; settings = { }; }; 85B76A4C10B3810300361450 = { fileRef = F54D8D5D0588ECEB01A80103; isa = PBXBuildFile; settings = { }; }; 85B76A4D10B3810300361450 = { fileRef = F54D8D670588ED9101A80103; isa = PBXBuildFile; settings = { }; }; 85B76A4E10B3810300361450 = { fileRef = F59B4FBC0591D102011CE379; isa = PBXBuildFile; settings = { }; }; 85B76A4F10B3810300361450 = { fileRef = F59B4FC00591DA41011CE379; isa = PBXBuildFile; settings = { }; }; 85B76A5010B3810300361450 = { fileRef = F59B4FC405921408011CE379; isa = PBXBuildFile; settings = { }; }; 85B76A5110B3810300361450 = { fileRef = F59B4FC8059214C7011CE379; isa = PBXBuildFile; settings = { }; }; 85B76A5210B3810300361450 = { fileRef = F5B3A92305B53FF201A80101; isa = PBXBuildFile; settings = { }; }; 85B76A5310B3810300361450 = { fileRef = F5B3A92A05B5568F01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A5410B3810300361450 = { fileRef = F59300520609F6AE01A80103; isa = PBXBuildFile; settings = { }; }; 85B76A5510B3810300361450 = { fileRef = F5930059060B2ED001A80103; isa = PBXBuildFile; settings = { }; }; 85B76A5610B3810300361450 = { fileRef = F5D67DB00612D96501A80103; isa = PBXBuildFile; settings = { }; }; 85B76A5710B3810300361450 = { fileRef = F538441E0612E9BF01A80103; isa = PBXBuildFile; settings = { }; }; 85B76A5810B3810300361450 = { fileRef = F5B0F9650686C3B701A80101; isa = PBXBuildFile; settings = { }; }; 85B76A5910B3810300361450 = { fileRef = F5B6257106881DCE01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A5A10B3810300361450 = { fileRef = F59EB61E079F1C9101A80103; isa = PBXBuildFile; settings = { }; }; 85B76A5B10B3810300361450 = { fileRef = F59EB622079F1CA501A80103; isa = PBXBuildFile; settings = { }; }; 85B76A5C10B3810300361450 = { fileRef = F5D9F4B607AD972F01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A5D10B3810300361450 = { fileRef = F5D9F4BC07AD976F01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A5E10B3810300361450 = { fileRef = F5C8A2A407EED49E01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A5F10B3810300361450 = { fileRef = F5C8A2A807EED52A01A80101; isa = PBXBuildFile; settings = { }; }; 85B76A6010B3810300361450 = { fileRef = F50E086503A8B47901317B72; isa = PBXBuildFile; settings = { }; }; 85B76A6110B3810300361450 = { fileRef = F5D38DD608FDA41801A80101; isa = PBXBuildFile; settings = { }; }; 85B76A6210B3810300361450 = { fileRef = 85E2FA3C0B5CE7AA003E7B25; isa = PBXBuildFile; settings = { }; }; 85B76A6310B3810300361450 = { fileRef = 85D196370D0A063900A80101; isa = PBXBuildFile; settings = { }; }; 85B76A6410B3810300361450 = { fileRef = 85F3E8030EC5003200B9D568; isa = PBXBuildFile; settings = { }; }; 85B76A6510B3810300361450 = { fileRef = 85CBE1330ECE08B200A80101; isa = PBXBuildFile; settings = { }; }; 85B76A6610B3810300361450 = { fileRef = 85CBE1370ECE113300A80101; isa = PBXBuildFile; settings = { }; }; 85B76A6710B3810300361450 = { fileRef = 85CBE13B0ECE328400A80101; isa = PBXBuildFile; settings = { }; }; 85B76A6810B3810300361450 = { buildActionMask = 2147483647; files = ( 85B76A6910B3810300361450, ); isa = PBXFrameworksBuildPhase; runOnlyForDeploymentPostprocessing = 0; }; 85B76A6910B3810300361450 = { fileRef = 1058C7A7FEA54F5311CA2CBB; isa = PBXBuildFile; settings = { }; }; 85B76A6B10B3810400361450 = { explicitFileType = wrapper.application; includeInIndex = 0; isa = PBXFileReference; path = PRICE.app; refType = 3; sourceTree = BUILT_PRODUCTS_DIR; }; 85CBE1320ECE08B200A80101 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCInvert.h; refType = 4; sourceTree = ""; }; 85CBE1330ECE08B200A80101 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCInvert.m; refType = 4; sourceTree = ""; }; 85CBE1360ECE113300A80101 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCFourier.h; refType = 4; sourceTree = ""; }; 85CBE1370ECE113300A80101 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCFourier.m; refType = 4; sourceTree = ""; }; 85CBE13A0ECE328400A80101 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCTransforms.h; refType = 4; sourceTree = ""; }; 85CBE13B0ECE328400A80101 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCTransforms.m; refType = 4; sourceTree = ""; }; 85D196360D0A063900A80101 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRInvert.h; refType = 4; sourceTree = ""; }; 85D196370D0A063900A80101 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRInvert.m; refType = 4; sourceTree = ""; }; 85E2FA3B0B5CE7AA003E7B25 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCGrayscale.h; refType = 4; sourceTree = ""; }; 85E2FA3C0B5CE7AA003E7B25 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCGrayscale.m; refType = 4; sourceTree = ""; }; 85E2FA3F0B5CEAF3003E7B25 = { children = ( 85E2FA400B5CEAF3003E7B25, ); isa = PBXVariantGroup; name = Grayscale.nib; path = ""; refType = 4; sourceTree = ""; }; 85E2FA400B5CEAF3003E7B25 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Grayscale.nib; refType = 4; sourceTree = ""; }; 85F3E8020EC5003200B9D568 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRFilter.h; refType = 4; sourceTree = ""; }; 85F3E8030EC5003200B9D568 = { fileEncoding = 4; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRFilter.m; refType = 4; sourceTree = ""; }; //850 //851 //852 //853 //854 //F50 //F51 //F52 //F53 //F54 F50E085E03A8B3A001317B72 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRImageView.h; refType = 4; sourceTree = ""; }; F50E085F03A8B3A001317B72 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRImageView.m; refType = 4; sourceTree = ""; }; F50E086203A8B47901317B72 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRWindowController.h; refType = 4; sourceTree = ""; }; F50E086303A8B47901317B72 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRWindowController.m; refType = 4; sourceTree = ""; }; F50E086403A8B47901317B72 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppController.h; refType = 4; sourceTree = ""; }; F50E086503A8B47901317B72 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppController.m; refType = 4; sourceTree = ""; }; F51A79A603D95E3101A80101 = { children = ( F51A79A703D95E3101A80101, ); isa = PBXVariantGroup; name = Convolve55.nib; path = ""; refType = 4; sourceTree = ""; }; F51A79A703D95E3101A80101 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Convolve55.nib; refType = 4; sourceTree = ""; }; F51A79AC03D9642D01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRConvolve55.h; refType = 4; sourceTree = ""; }; F51A79AD03D9642D01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRConvolve55.m; refType = 4; sourceTree = ""; }; F52855C60689AB0301A80101 = { children = ( F52855C70689AB0301A80101, ); isa = PBXVariantGroup; name = ProgressPanel.nib; path = ""; refType = 4; sourceTree = ""; }; F52855C70689AB0301A80101 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/ProgressPanel.nib; refType = 4; sourceTree = ""; }; F52B6E0803DDC36301A80101 = { children = ( 85B13ECB13FC22C9004CBDC0, 85B13ECC13FC22C9004CBDC0, 85660520112F480D00420865, 85660521112F480D00420865, 856604CA112F39FE00420865, 856604CB112F39FE00420865, F5C8A2A307EED49E01A80101, F5C8A2A407EED49E01A80101, F59EB61D079F1C9101A80103, F59EB61E079F1C9101A80103, F52B6E0903DDC6C201A80101, F52B6E0A03DDC6C201A80101, F58A014205137A870163C8F7, F58A014305137A870163C8F7, F5DD42EB053AAEF901A80103, F5DD42EC053AAEF901A80103, F5E238A405808FD801A80103, F5E238A505808FD801A80103, F5B3A92205B53FF201A80101, F5B3A92305B53FF201A80101, F59300510609F6AE01A80103, F59300520609F6AE01A80103, F5D67DAF0612D96501A80103, F5D67DB00612D96501A80103, F5D9F4BA07AD976001A80101, F5D9F4BC07AD976F01A80101, 85E2FA3B0B5CE7AA003E7B25, 85E2FA3C0B5CE7AA003E7B25, 85CBE1320ECE08B200A80101, 85CBE1330ECE08B200A80101, 85CBE1360ECE113300A80101, 85CBE1370ECE113300A80101, 85CBE13A0ECE328400A80101, 85CBE13B0ECE328400A80101, ); isa = PBXGroup; name = Controllers; refType = 4; sourceTree = ""; }; F52B6E0903DDC6C201A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCConvolve55.h; refType = 4; sourceTree = ""; }; F52B6E0A03DDC6C201A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCConvolve55.m; refType = 4; sourceTree = ""; }; F537CAEE0500A8B801A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = text; path = README; refType = 4; sourceTree = ""; }; F538441A0612E0D001A80103 = { children = ( F538441B0612E0D001A80103, ); isa = PBXVariantGroup; name = Median.nib; path = ""; refType = 4; sourceTree = ""; }; F538441B0612E0D001A80103 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Median.nib; refType = 4; sourceTree = ""; }; F538441D0612E9BF01A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRMedian.h; refType = 4; sourceTree = ""; }; F538441E0612E9BF01A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRMedian.m; refType = 4; sourceTree = ""; }; F54D8D5C0588ECEB01A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRHistogram.h; refType = 4; sourceTree = ""; }; F54D8D5D0588ECEB01A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRHistogram.m; refType = 4; sourceTree = ""; }; F54D8D660588ED9101A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCHistogram.h; refType = 4; sourceTree = ""; }; F54D8D670588ED9101A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCHistogram.m; refType = 4; sourceTree = ""; }; F54D8D6A0588EE6201A80103 = { children = ( F54D8D6B0588EE6201A80103, ); isa = PBXVariantGroup; name = Histogram.nib; path = ""; refType = 4; sourceTree = ""; }; F54D8D6B0588EE6201A80103 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Histogram.nib; refType = 4; sourceTree = ""; }; F551DF3203E1B5CF01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRFourier.h; refType = 4; sourceTree = ""; }; F551DF3303E1B5CF01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRFourier.m; refType = 4; sourceTree = ""; }; F55BF70E054909D501A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRDFTHighPass.h; refType = 4; sourceTree = ""; }; F55BF70F054909D501A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRDFTHighPass.m; refType = 4; sourceTree = ""; }; F568E20703B757F201A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRGrayscaleFilter.h; refType = 4; sourceTree = ""; }; F568E20803B757F201A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRGrayscaleFilter.m; refType = 4; sourceTree = ""; }; F568E20B03B7583A01A80101 = { children = ( 85F3E8020EC5003200B9D568, 85F3E8030EC5003200B9D568, F568E20703B757F201A80101, F568E20803B757F201A80101, F51A79AC03D9642D01A80101, F51A79AD03D9642D01A80101, F551DF3203E1B5CF01A80101, F551DF3303E1B5CF01A80101, F58A013E051379F90163C8F7, F58A013F051379F90163C8F7, F55BF70E054909D501A80103, F55BF70F054909D501A80103, F5DC9E42056A98E601A80101, F5DC9E43056A98E601A80101, 85D196360D0A063900A80101, 85D196370D0A063900A80101, F568E20C03B77C9A01A80101, F568E20D03B77C9A01A80101, ); isa = PBXGroup; name = Filters; refType = 4; sourceTree = ""; }; F568E20C03B77C9A01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRTransforms.h; refType = 4; sourceTree = ""; }; F568E20D03B77C9A01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRTransforms.m; refType = 4; sourceTree = ""; }; F58A013E051379F90163C8F7 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRDFTLowPass.h; refType = 4; sourceTree = ""; }; F58A013F051379F90163C8F7 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRDFTLowPass.m; refType = 4; sourceTree = ""; }; F58A014205137A870163C8F7 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCDFTLowPass.h; refType = 4; sourceTree = ""; }; F58A014305137A870163C8F7 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCDFTLowPass.m; refType = 4; sourceTree = ""; }; F58A014605138B000163C8F7 = { children = ( F58A014705138B000163C8F7, ); isa = PBXVariantGroup; name = DFTLowPass.nib; path = ""; refType = 4; sourceTree = ""; }; F58A014705138B000163C8F7 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/DFTLowPass.nib; refType = 4; sourceTree = ""; }; F58A01490513B6E80163C8F7 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FFT.h; refType = 4; sourceTree = ""; }; F58A014A0513B6E80163C8F7 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = FFT.c; refType = 4; sourceTree = ""; }; F59300510609F6AE01A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCCustTraceEdges.h; refType = 4; sourceTree = ""; }; F59300520609F6AE01A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCCustTraceEdges.m; refType = 4; sourceTree = ""; }; F59300550609F83101A80103 = { children = ( F59300560609F83101A80103, ); isa = PBXVariantGroup; name = CustTraceEdges.nib; path = ""; refType = 4; sourceTree = ""; }; F59300560609F83101A80103 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/CustTraceEdges.nib; refType = 4; sourceTree = ""; }; F5930058060B2ED001A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCustTraceEdges.h; refType = 4; sourceTree = ""; }; F5930059060B2ED001A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCustTraceEdges.m; refType = 4; sourceTree = ""; }; F59B4FBB0591D102011CE379 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCumHisto.h; refType = 4; sourceTree = ""; }; F59B4FBC0591D102011CE379 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCumHisto.m; refType = 4; sourceTree = ""; }; F59B4FBF0591DA41011CE379 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCCumHisto.h; refType = 4; sourceTree = ""; }; F59B4FC00591DA41011CE379 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCCumHisto.m; refType = 4; sourceTree = ""; }; F59B4FC305921408011CE379 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRHisto.h; refType = 4; sourceTree = ""; }; F59B4FC405921408011CE379 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRHisto.m; refType = 4; sourceTree = ""; }; F59B4FC7059214C7011CE379 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCHisto.h; refType = 4; sourceTree = ""; }; F59B4FC8059214C7011CE379 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCHisto.m; refType = 4; sourceTree = ""; }; F59B4FCB05923027011CE379 = { children = ( F59B4FCC05923027011CE379, ); isa = PBXVariantGroup; name = CumulHistogram.nib; path = ""; refType = 4; sourceTree = ""; }; F59B4FCC05923027011CE379 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/CumulHistogram.nib; refType = 4; sourceTree = ""; }; F59EB61D079F1C9101A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCScale.h; refType = 4; sourceTree = ""; }; F59EB61E079F1C9101A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCScale.m; refType = 4; sourceTree = ""; }; F59EB621079F1CA501A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRScale.h; refType = 4; sourceTree = ""; }; F59EB622079F1CA501A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRScale.m; refType = 4; sourceTree = ""; }; F59EB627079F2ED301A80103 = { children = ( F59EB628079F2ED301A80103, ); isa = PBXVariantGroup; name = Scale.nib; path = ""; refType = 4; sourceTree = ""; }; F59EB628079F2ED301A80103 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Scale.nib; refType = 4; sourceTree = ""; }; F5A3DD6B058349E601A80103 = { children = ( F5A3DD6C058349E601A80103, ); isa = PBXVariantGroup; name = Equalize.nib; path = ""; refType = 4; sourceTree = ""; }; F5A3DD6C058349E601A80103 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Equalize.nib; refType = 4; sourceTree = ""; }; F5B0F9640686C3B701A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCProgress.h; refType = 4; sourceTree = ""; }; F5B0F9650686C3B701A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCProgress.m; refType = 4; sourceTree = ""; }; F5B3A92205B53FF201A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCTraceEdges.h; refType = 4; sourceTree = ""; }; F5B3A92305B53FF201A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCTraceEdges.m; refType = 4; sourceTree = ""; }; F5B3A92605B5469C01A80101 = { children = ( F5B3A92705B5469C01A80101, ); isa = PBXVariantGroup; name = TraceEdges.nib; path = ""; refType = 4; sourceTree = ""; }; F5B3A92705B5469C01A80101 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/TraceEdges.nib; refType = 4; sourceTree = ""; }; F5B3A92905B5568F01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRTraceEdges.h; refType = 4; sourceTree = ""; }; F5B3A92A05B5568F01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRTraceEdges.m; refType = 4; sourceTree = ""; }; F5B6257006881DCE01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRProgressAction.h; refType = 4; sourceTree = ""; }; F5B6257106881DCE01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRProgressAction.m; refType = 4; sourceTree = ""; }; F5C7F8ED07C75C6901A80101 = { children = ( F5C7F8EE07C75C6901A80101, ); isa = PBXVariantGroup; name = Crop.nib; path = ""; refType = 4; sourceTree = ""; }; F5C7F8EE07C75C6901A80101 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Crop.nib; refType = 4; sourceTree = ""; }; F5C8A2A307EED49E01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCBriCon.h; refType = 4; sourceTree = ""; }; F5C8A2A407EED49E01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCBriCon.m; refType = 4; sourceTree = ""; }; F5C8A2A707EED52A01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRBriCon.h; refType = 4; sourceTree = ""; }; F5C8A2A807EED52A01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRBriCon.m; refType = 4; sourceTree = ""; }; F5C8A2AB07EED94A01A80101 = { children = ( F5C8A2AC07EED94A01A80101, ); isa = PBXVariantGroup; name = BriCon.nib; path = ""; refType = 4; sourceTree = ""; }; F5C8A2AC07EED94A01A80101 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/BriCon.nib; refType = 4; sourceTree = ""; }; F5C941A908261B5E01A80101 = { isa = PBXFileReference; lastKnownFileType = image.icns; path = price128.icns; refType = 4; sourceTree = ""; }; F5D38DD508FDA41801A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRImage.h; refType = 4; sourceTree = ""; }; F5D38DD608FDA41801A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRImage.m; refType = 4; sourceTree = ""; }; F5D67DAF0612D96501A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCMedian.h; refType = 4; sourceTree = ""; }; F5D67DB00612D96501A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCMedian.m; refType = 4; sourceTree = ""; }; F5D9F4B607AD972F01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCrop.m; refType = 4; sourceTree = ""; }; F5D9F4B807AD974901A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCrop.h; refType = 4; sourceTree = ""; }; F5D9F4BA07AD976001A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCCrop.h; refType = 4; sourceTree = ""; }; F5D9F4BC07AD976F01A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCCrop.m; refType = 4; sourceTree = ""; }; F5DC9E42056A98E601A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRDFTFilter.h; refType = 4; sourceTree = ""; }; F5DC9E43056A98E601A80101 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRDFTFilter.m; refType = 4; sourceTree = ""; }; F5DD42E8053AAE5201A80103 = { children = ( F5DD42E9053AAE5201A80103, ); isa = PBXVariantGroup; name = DFTHighPass.nib; path = ""; refType = 4; sourceTree = ""; }; F5DD42E9053AAE5201A80103 = { isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/DFTHighPass.nib; refType = 4; sourceTree = ""; }; F5DD42EB053AAEF901A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCDFTHighPass.h; refType = 4; sourceTree = ""; }; F5DD42EC053AAEF901A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCDFTHighPass.m; refType = 4; sourceTree = ""; }; F5E238A405808FD801A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PRCEqualize.h; refType = 4; sourceTree = ""; }; F5E238A505808FD801A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PRCEqualize.m; refType = 4; sourceTree = ""; }; F5E238A8058091EB01A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PREqualize.h; refType = 4; sourceTree = ""; }; F5E238A9058091EB01A80103 = { fileEncoding = 30; isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PREqualize.m; refType = 4; sourceTree = ""; }; F5E238AC058091F001A80103 = { children = ( F5C8A2A707EED52A01A80101, F5C8A2A807EED52A01A80101, F5E238A8058091EB01A80103, F5E238A9058091EB01A80103, F5B3A92905B5568F01A80101, F5B3A92A05B5568F01A80101, F5930058060B2ED001A80103, F5930059060B2ED001A80103, F538441D0612E9BF01A80103, F538441E0612E9BF01A80103, ); isa = PBXGroup; name = Enhance; refType = 4; sourceTree = ""; }; }; rootObject = 2A37F4A9FDCFA73011CA2CEA; } PRICE-1.3.0/PRICE.xcodeproj004075500017500000012000000000001245331715400144405ustar00multixusersPRICE-1.3.0/PRICE.xcodeproj/project.pbxproj010075500017500000012000002035561245153506300176050ustar00multixusers// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 42; objects = { /* Begin PBXBuildFile section */ 8526E92510C91A2E0072C369 /* MyDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */; }; 8526E92610C91A2E0072C369 /* PRImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = F50E085E03A8B3A001317B72 /* PRImageView.h */; }; 8526E92710C91A2E0072C369 /* PRWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = F50E086203A8B47901317B72 /* PRWindowController.h */; }; 8526E92810C91A2E0072C369 /* AppController.h in Headers */ = {isa = PBXBuildFile; fileRef = F50E086403A8B47901317B72 /* AppController.h */; }; 8526E92910C91A2E0072C369 /* PRGrayscaleFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = F568E20703B757F201A80101 /* PRGrayscaleFilter.h */; }; 8526E92A10C91A2E0072C369 /* PRTransforms.h in Headers */ = {isa = PBXBuildFile; fileRef = F568E20C03B77C9A01A80101 /* PRTransforms.h */; }; 8526E92B10C91A2E0072C369 /* PRConvolve55.h in Headers */ = {isa = PBXBuildFile; fileRef = F51A79AC03D9642D01A80101 /* PRConvolve55.h */; }; 8526E92C10C91A2E0072C369 /* PRCConvolve55.h in Headers */ = {isa = PBXBuildFile; fileRef = F52B6E0903DDC6C201A80101 /* PRCConvolve55.h */; }; 8526E92D10C91A2E0072C369 /* PRFourier.h in Headers */ = {isa = PBXBuildFile; fileRef = F551DF3203E1B5CF01A80101 /* PRFourier.h */; }; 8526E92E10C91A2E0072C369 /* PRDFTLowPass.h in Headers */ = {isa = PBXBuildFile; fileRef = F58A013E051379F90163C8F7 /* PRDFTLowPass.h */; }; 8526E92F10C91A2E0072C369 /* PRCDFTLowPass.h in Headers */ = {isa = PBXBuildFile; fileRef = F58A014205137A870163C8F7 /* PRCDFTLowPass.h */; }; 8526E93010C91A2E0072C369 /* FFT.h in Headers */ = {isa = PBXBuildFile; fileRef = F58A01490513B6E80163C8F7 /* FFT.h */; }; 8526E93110C91A2E0072C369 /* PRCDFTHighPass.h in Headers */ = {isa = PBXBuildFile; fileRef = F5DD42EB053AAEF901A80103 /* PRCDFTHighPass.h */; }; 8526E93210C91A2E0072C369 /* PRDFTHighPass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55BF70E054909D501A80103 /* PRDFTHighPass.h */; }; 8526E93310C91A2E0072C369 /* PRDFTFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = F5DC9E42056A98E601A80101 /* PRDFTFilter.h */; }; 8526E93410C91A2E0072C369 /* PRCEqualize.h in Headers */ = {isa = PBXBuildFile; fileRef = F5E238A405808FD801A80103 /* PRCEqualize.h */; }; 8526E93510C91A2E0072C369 /* PREqualize.h in Headers */ = {isa = PBXBuildFile; fileRef = F5E238A8058091EB01A80103 /* PREqualize.h */; }; 8526E93610C91A2E0072C369 /* PRHistogram.h in Headers */ = {isa = PBXBuildFile; fileRef = F54D8D5C0588ECEB01A80103 /* PRHistogram.h */; }; 8526E93710C91A2E0072C369 /* PRCHistogram.h in Headers */ = {isa = PBXBuildFile; fileRef = F54D8D660588ED9101A80103 /* PRCHistogram.h */; }; 8526E93810C91A2E0072C369 /* PRCumHisto.h in Headers */ = {isa = PBXBuildFile; fileRef = F59B4FBB0591D102011CE379 /* PRCumHisto.h */; }; 8526E93910C91A2E0072C369 /* PRCCumHisto.h in Headers */ = {isa = PBXBuildFile; fileRef = F59B4FBF0591DA41011CE379 /* PRCCumHisto.h */; }; 8526E93A10C91A2E0072C369 /* PRHisto.h in Headers */ = {isa = PBXBuildFile; fileRef = F59B4FC305921408011CE379 /* PRHisto.h */; }; 8526E93B10C91A2E0072C369 /* PRCHisto.h in Headers */ = {isa = PBXBuildFile; fileRef = F59B4FC7059214C7011CE379 /* PRCHisto.h */; }; 8526E93C10C91A2E0072C369 /* PRCTraceEdges.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B3A92205B53FF201A80101 /* PRCTraceEdges.h */; }; 8526E93D10C91A2E0072C369 /* PRTraceEdges.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B3A92905B5568F01A80101 /* PRTraceEdges.h */; }; 8526E93E10C91A2E0072C369 /* PRCCustTraceEdges.h in Headers */ = {isa = PBXBuildFile; fileRef = F59300510609F6AE01A80103 /* PRCCustTraceEdges.h */; }; 8526E93F10C91A2E0072C369 /* PRCustTraceEdges.h in Headers */ = {isa = PBXBuildFile; fileRef = F5930058060B2ED001A80103 /* PRCustTraceEdges.h */; }; 8526E94010C91A2E0072C369 /* PRCMedian.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D67DAF0612D96501A80103 /* PRCMedian.h */; }; 8526E94110C91A2E0072C369 /* PRMedian.h in Headers */ = {isa = PBXBuildFile; fileRef = F538441D0612E9BF01A80103 /* PRMedian.h */; }; 8526E94210C91A2E0072C369 /* PRCProgress.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B0F9640686C3B701A80101 /* PRCProgress.h */; }; 8526E94310C91A2E0072C369 /* PRProgressAction.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B6257006881DCE01A80101 /* PRProgressAction.h */; }; 8526E94410C91A2E0072C369 /* PRCScale.h in Headers */ = {isa = PBXBuildFile; fileRef = F59EB61D079F1C9101A80103 /* PRCScale.h */; }; 8526E94510C91A2E0072C369 /* PRScale.h in Headers */ = {isa = PBXBuildFile; fileRef = F59EB621079F1CA501A80103 /* PRScale.h */; }; 8526E94610C91A2E0072C369 /* PRCrop.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D9F4B807AD974901A80101 /* PRCrop.h */; }; 8526E94710C91A2E0072C369 /* PRCCrop.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D9F4BA07AD976001A80101 /* PRCCrop.h */; }; 8526E94810C91A2E0072C369 /* PRCBriCon.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C8A2A307EED49E01A80101 /* PRCBriCon.h */; }; 8526E94910C91A2E0072C369 /* PRBriCon.h in Headers */ = {isa = PBXBuildFile; fileRef = F5C8A2A707EED52A01A80101 /* PRBriCon.h */; }; 8526E94A10C91A2E0072C369 /* PRImage.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D38DD508FDA41801A80101 /* PRImage.h */; }; 8526E94B10C91A2E0072C369 /* PRCGrayscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E2FA3B0B5CE7AA003E7B25 /* PRCGrayscale.h */; }; 8526E94C10C91A2E0072C369 /* PRInvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 85D196360D0A063900A80101 /* PRInvert.h */; }; 8526E94D10C91A2E0072C369 /* PRFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 85F3E8020EC5003200B9D568 /* PRFilter.h */; }; 8526E94E10C91A2E0072C369 /* PRCInvert.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CBE1320ECE08B200A80101 /* PRCInvert.h */; }; 8526E94F10C91A2E0072C369 /* PRCFourier.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CBE1360ECE113300A80101 /* PRCFourier.h */; }; 8526E95010C91A2E0072C369 /* PRCTransforms.h in Headers */ = {isa = PBXBuildFile; fileRef = 85CBE13A0ECE328400A80101 /* PRCTransforms.h */; }; 8526E95210C91A2E0072C369 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */; }; 8526E95310C91A2E0072C369 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */; }; 8526E95410C91A2E0072C369 /* PRWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 2A37F4B4FDCFA73011CA2CEA /* PRWindow.nib */; }; 8526E95510C91A2E0072C369 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165FFE840EACC02AAC07 /* InfoPlist.strings */; }; 8526E95610C91A2E0072C369 /* Convolve55.nib in Resources */ = {isa = PBXBuildFile; fileRef = F51A79A603D95E3101A80101 /* Convolve55.nib */; }; 8526E95710C91A2E0072C369 /* README in Resources */ = {isa = PBXBuildFile; fileRef = F537CAEE0500A8B801A80103 /* README */; }; 8526E95810C91A2E0072C369 /* DFTLowPass.nib in Resources */ = {isa = PBXBuildFile; fileRef = F58A014605138B000163C8F7 /* DFTLowPass.nib */; }; 8526E95910C91A2E0072C369 /* DFTHighPass.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5DD42E8053AAE5201A80103 /* DFTHighPass.nib */; }; 8526E95A10C91A2E0072C369 /* Equalize.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5A3DD6B058349E601A80103 /* Equalize.nib */; }; 8526E95B10C91A2E0072C369 /* Histogram.nib in Resources */ = {isa = PBXBuildFile; fileRef = F54D8D6A0588EE6201A80103 /* Histogram.nib */; }; 8526E95C10C91A2E0072C369 /* CumulHistogram.nib in Resources */ = {isa = PBXBuildFile; fileRef = F59B4FCB05923027011CE379 /* CumulHistogram.nib */; }; 8526E95D10C91A2E0072C369 /* TraceEdges.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5B3A92605B5469C01A80101 /* TraceEdges.nib */; }; 8526E95E10C91A2E0072C369 /* CustTraceEdges.nib in Resources */ = {isa = PBXBuildFile; fileRef = F59300550609F83101A80103 /* CustTraceEdges.nib */; }; 8526E95F10C91A2E0072C369 /* Median.nib in Resources */ = {isa = PBXBuildFile; fileRef = F538441A0612E0D001A80103 /* Median.nib */; }; 8526E96010C91A2E0072C369 /* ProgressPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = F52855C60689AB0301A80101 /* ProgressPanel.nib */; }; 8526E96110C91A2E0072C369 /* Scale.nib in Resources */ = {isa = PBXBuildFile; fileRef = F59EB627079F2ED301A80103 /* Scale.nib */; }; 8526E96210C91A2E0072C369 /* Crop.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5C7F8ED07C75C6901A80101 /* Crop.nib */; }; 8526E96310C91A2E0072C369 /* BriCon.nib in Resources */ = {isa = PBXBuildFile; fileRef = F5C8A2AB07EED94A01A80101 /* BriCon.nib */; }; 8526E96410C91A2E0072C369 /* price128.icns in Resources */ = {isa = PBXBuildFile; fileRef = F5C941A908261B5E01A80101 /* price128.icns */; }; 8526E96510C91A2E0072C369 /* Grayscale.nib in Resources */ = {isa = PBXBuildFile; fileRef = 85E2FA3F0B5CEAF3003E7B25 /* Grayscale.nib */; }; 8526E96710C91A2E0072C369 /* MyDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */; settings = {ATTRIBUTES = (); }; }; 8526E96810C91A2E0072C369 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A37F4B0FDCFA73011CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8526E96910C91A2E0072C369 /* PRImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = F50E085F03A8B3A001317B72 /* PRImageView.m */; }; 8526E96A10C91A2E0072C369 /* PRWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F50E086303A8B47901317B72 /* PRWindowController.m */; }; 8526E96B10C91A2E0072C369 /* PRGrayscaleFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = F568E20803B757F201A80101 /* PRGrayscaleFilter.m */; }; 8526E96C10C91A2E0072C369 /* PRConvolve55.m in Sources */ = {isa = PBXBuildFile; fileRef = F51A79AD03D9642D01A80101 /* PRConvolve55.m */; }; 8526E96D10C91A2E0072C369 /* PRCConvolve55.m in Sources */ = {isa = PBXBuildFile; fileRef = F52B6E0A03DDC6C201A80101 /* PRCConvolve55.m */; }; 8526E96E10C91A2E0072C369 /* PRFourier.m in Sources */ = {isa = PBXBuildFile; fileRef = F551DF3303E1B5CF01A80101 /* PRFourier.m */; }; 8526E96F10C91A2E0072C369 /* PRTransforms.m in Sources */ = {isa = PBXBuildFile; fileRef = F568E20D03B77C9A01A80101 /* PRTransforms.m */; }; 8526E97010C91A2E0072C369 /* PRDFTLowPass.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A013F051379F90163C8F7 /* PRDFTLowPass.m */; }; 8526E97110C91A2E0072C369 /* PRCDFTLowPass.m in Sources */ = {isa = PBXBuildFile; fileRef = F58A014305137A870163C8F7 /* PRCDFTLowPass.m */; }; 8526E97210C91A2E0072C369 /* FFT.c in Sources */ = {isa = PBXBuildFile; fileRef = F58A014A0513B6E80163C8F7 /* FFT.c */; }; 8526E97310C91A2E0072C369 /* PRCDFTHighPass.m in Sources */ = {isa = PBXBuildFile; fileRef = F5DD42EC053AAEF901A80103 /* PRCDFTHighPass.m */; }; 8526E97410C91A2E0072C369 /* PRDFTHighPass.m in Sources */ = {isa = PBXBuildFile; fileRef = F55BF70F054909D501A80103 /* PRDFTHighPass.m */; }; 8526E97510C91A2E0072C369 /* PRDFTFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = F5DC9E43056A98E601A80101 /* PRDFTFilter.m */; }; 8526E97610C91A2E0072C369 /* PRCEqualize.m in Sources */ = {isa = PBXBuildFile; fileRef = F5E238A505808FD801A80103 /* PRCEqualize.m */; }; 8526E97710C91A2E0072C369 /* PREqualize.m in Sources */ = {isa = PBXBuildFile; fileRef = F5E238A9058091EB01A80103 /* PREqualize.m */; }; 8526E97810C91A2E0072C369 /* PRHistogram.m in Sources */ = {isa = PBXBuildFile; fileRef = F54D8D5D0588ECEB01A80103 /* PRHistogram.m */; }; 8526E97910C91A2E0072C369 /* PRCHistogram.m in Sources */ = {isa = PBXBuildFile; fileRef = F54D8D670588ED9101A80103 /* PRCHistogram.m */; }; 8526E97A10C91A2E0072C369 /* PRCumHisto.m in Sources */ = {isa = PBXBuildFile; fileRef = F59B4FBC0591D102011CE379 /* PRCumHisto.m */; }; 8526E97B10C91A2E0072C369 /* PRCCumHisto.m in Sources */ = {isa = PBXBuildFile; fileRef = F59B4FC00591DA41011CE379 /* PRCCumHisto.m */; }; 8526E97C10C91A2E0072C369 /* PRHisto.m in Sources */ = {isa = PBXBuildFile; fileRef = F59B4FC405921408011CE379 /* PRHisto.m */; }; 8526E97D10C91A2E0072C369 /* PRCHisto.m in Sources */ = {isa = PBXBuildFile; fileRef = F59B4FC8059214C7011CE379 /* PRCHisto.m */; }; 8526E97E10C91A2E0072C369 /* PRCTraceEdges.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B3A92305B53FF201A80101 /* PRCTraceEdges.m */; }; 8526E97F10C91A2E0072C369 /* PRTraceEdges.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B3A92A05B5568F01A80101 /* PRTraceEdges.m */; }; 8526E98010C91A2E0072C369 /* PRCCustTraceEdges.m in Sources */ = {isa = PBXBuildFile; fileRef = F59300520609F6AE01A80103 /* PRCCustTraceEdges.m */; }; 8526E98110C91A2E0072C369 /* PRCustTraceEdges.m in Sources */ = {isa = PBXBuildFile; fileRef = F5930059060B2ED001A80103 /* PRCustTraceEdges.m */; }; 8526E98210C91A2E0072C369 /* PRCMedian.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D67DB00612D96501A80103 /* PRCMedian.m */; }; 8526E98310C91A2E0072C369 /* PRMedian.m in Sources */ = {isa = PBXBuildFile; fileRef = F538441E0612E9BF01A80103 /* PRMedian.m */; }; 8526E98410C91A2E0072C369 /* PRCProgress.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B0F9650686C3B701A80101 /* PRCProgress.m */; }; 8526E98510C91A2E0072C369 /* PRProgressAction.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B6257106881DCE01A80101 /* PRProgressAction.m */; }; 8526E98610C91A2E0072C369 /* PRCScale.m in Sources */ = {isa = PBXBuildFile; fileRef = F59EB61E079F1C9101A80103 /* PRCScale.m */; }; 8526E98710C91A2E0072C369 /* PRScale.m in Sources */ = {isa = PBXBuildFile; fileRef = F59EB622079F1CA501A80103 /* PRScale.m */; }; 8526E98810C91A2E0072C369 /* PRCrop.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D9F4B607AD972F01A80101 /* PRCrop.m */; }; 8526E98910C91A2E0072C369 /* PRCCrop.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D9F4BC07AD976F01A80101 /* PRCCrop.m */; }; 8526E98A10C91A2E0072C369 /* PRCBriCon.m in Sources */ = {isa = PBXBuildFile; fileRef = F5C8A2A407EED49E01A80101 /* PRCBriCon.m */; }; 8526E98B10C91A2E0072C369 /* PRBriCon.m in Sources */ = {isa = PBXBuildFile; fileRef = F5C8A2A807EED52A01A80101 /* PRBriCon.m */; }; 8526E98C10C91A2E0072C369 /* AppController.m in Sources */ = {isa = PBXBuildFile; fileRef = F50E086503A8B47901317B72 /* AppController.m */; }; 8526E98D10C91A2E0072C369 /* PRImage.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D38DD608FDA41801A80101 /* PRImage.m */; }; 8526E98E10C91A2E0072C369 /* PRCGrayscale.m in Sources */ = {isa = PBXBuildFile; fileRef = 85E2FA3C0B5CE7AA003E7B25 /* PRCGrayscale.m */; }; 8526E98F10C91A2E0072C369 /* PRInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 85D196370D0A063900A80101 /* PRInvert.m */; }; 8526E99010C91A2E0072C369 /* PRFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 85F3E8030EC5003200B9D568 /* PRFilter.m */; }; 8526E99110C91A2E0072C369 /* PRCInvert.m in Sources */ = {isa = PBXBuildFile; fileRef = 85CBE1330ECE08B200A80101 /* PRCInvert.m */; }; 8526E99210C91A2E0072C369 /* PRCFourier.m in Sources */ = {isa = PBXBuildFile; fileRef = 85CBE1370ECE113300A80101 /* PRCFourier.m */; }; 8526E99310C91A2E0072C369 /* PRCTransforms.m in Sources */ = {isa = PBXBuildFile; fileRef = 85CBE13B0ECE328400A80101 /* PRCTransforms.m */; }; 8526E99510C91A2E0072C369 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; }; 859E918A1132DC4100C75DB0 /* PRFilterController.h in Headers */ = {isa = PBXBuildFile; fileRef = 859E91881132DC4100C75DB0 /* PRFilterController.h */; }; 859E918B1132DC4100C75DB0 /* PRFilterController.m in Sources */ = {isa = PBXBuildFile; fileRef = 859E91891132DC4100C75DB0 /* PRFilterController.m */; }; 859E918E1132DC5500C75DB0 /* PRPreviewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 859E918C1132DC5500C75DB0 /* PRPreviewController.h */; }; 859E918F1132DC5500C75DB0 /* PRPreviewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 859E918D1132DC5500C75DB0 /* PRPreviewController.m */; }; 859E91921132DC6E00C75DB0 /* Preview.nib in Resources */ = {isa = PBXBuildFile; fileRef = 859E91901132DC6E00C75DB0 /* Preview.nib */; }; 85A1EA7D13EF0DC6003B0912 /* PRCCurves.h in Headers */ = {isa = PBXBuildFile; fileRef = 85A1EA7B13EF0DC6003B0912 /* PRCCurves.h */; }; 85A1EA7E13EF0DC6003B0912 /* PRCCurves.m in Sources */ = {isa = PBXBuildFile; fileRef = 85A1EA7C13EF0DC6003B0912 /* PRCCurves.m */; }; 85A1EA8D13EF0E92003B0912 /* PRCurvesView.h in Headers */ = {isa = PBXBuildFile; fileRef = 85A1EA8B13EF0E92003B0912 /* PRCurvesView.h */; }; 85A1EA8E13EF0E92003B0912 /* PRCurvesView.m in Sources */ = {isa = PBXBuildFile; fileRef = 85A1EA8C13EF0E92003B0912 /* PRCurvesView.m */; }; 85A1EA9613EF1013003B0912 /* Curves.nib in Resources */ = {isa = PBXBuildFile; fileRef = 85A1EA9413EF1013003B0912 /* Curves.nib */; }; 85A1EA9D13EF1075003B0912 /* PRCurves.h in Headers */ = {isa = PBXBuildFile; fileRef = 85A1EA9B13EF1075003B0912 /* PRCurves.h */; }; 85A1EA9E13EF1075003B0912 /* PRCurves.m in Sources */ = {isa = PBXBuildFile; fileRef = 85A1EA9C13EF1075003B0912 /* PRCurves.m */; }; 85B7C77813F45738005EF60D /* PRCurvesPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 85B7C77613F45738005EF60D /* PRCurvesPath.h */; }; 85B7C77913F45738005EF60D /* PRCurvesPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 85B7C77713F45738005EF60D /* PRCurvesPath.m */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 089C1660FE840EACC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MyDocument.m; sourceTree = ""; }; 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MyDocument.h; sourceTree = ""; }; 2A37F4B0FDCFA73011CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 2A37F4B5FDCFA73011CA2CEA /* PRWindow.nib */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = PRWindow.nib; path = English.lproj/PRWindow.nib; sourceTree = ""; }; 2A37F4B7FDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = ""; }; 2A37F4BAFDCFA73011CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = English; path = English.lproj/Credits.rtf; sourceTree = ""; }; 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 8526E99A10C91A2E0072C369 /* Info-PRICE.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-PRICE.plist"; sourceTree = ""; }; 8526E99B10C91A2E0072C369 /* PRICE.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PRICE.app; sourceTree = BUILT_PRODUCTS_DIR; }; 859E91881132DC4100C75DB0 /* PRFilterController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRFilterController.h; sourceTree = ""; }; 859E91891132DC4100C75DB0 /* PRFilterController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRFilterController.m; sourceTree = ""; }; 859E918C1132DC5500C75DB0 /* PRPreviewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRPreviewController.h; sourceTree = ""; }; 859E918D1132DC5500C75DB0 /* PRPreviewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRPreviewController.m; sourceTree = ""; }; 859E91911132DC6E00C75DB0 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Preview.nib; sourceTree = ""; }; 85A1EA7B13EF0DC6003B0912 /* PRCCurves.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCCurves.h; sourceTree = ""; }; 85A1EA7C13EF0DC6003B0912 /* PRCCurves.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCCurves.m; sourceTree = ""; }; 85A1EA8B13EF0E92003B0912 /* PRCurvesView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCurvesView.h; sourceTree = ""; }; 85A1EA8C13EF0E92003B0912 /* PRCurvesView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCurvesView.m; sourceTree = ""; }; 85A1EA9513EF1013003B0912 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Curves.nib; sourceTree = ""; }; 85A1EA9B13EF1075003B0912 /* PRCurves.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCurves.h; sourceTree = ""; }; 85A1EA9C13EF1075003B0912 /* PRCurves.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCurves.m; sourceTree = ""; }; 85B7C77613F45738005EF60D /* PRCurvesPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCurvesPath.h; sourceTree = ""; }; 85B7C77713F45738005EF60D /* PRCurvesPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCurvesPath.m; sourceTree = ""; }; 85CBE1320ECE08B200A80101 /* PRCInvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCInvert.h; sourceTree = ""; }; 85CBE1330ECE08B200A80101 /* PRCInvert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCInvert.m; sourceTree = ""; }; 85CBE1360ECE113300A80101 /* PRCFourier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCFourier.h; sourceTree = ""; }; 85CBE1370ECE113300A80101 /* PRCFourier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCFourier.m; sourceTree = ""; }; 85CBE13A0ECE328400A80101 /* PRCTransforms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCTransforms.h; sourceTree = ""; }; 85CBE13B0ECE328400A80101 /* PRCTransforms.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCTransforms.m; sourceTree = ""; }; 85D196360D0A063900A80101 /* PRInvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRInvert.h; sourceTree = ""; }; 85D196370D0A063900A80101 /* PRInvert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRInvert.m; sourceTree = ""; }; 85E2FA3B0B5CE7AA003E7B25 /* PRCGrayscale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRCGrayscale.h; sourceTree = ""; }; 85E2FA3C0B5CE7AA003E7B25 /* PRCGrayscale.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRCGrayscale.m; sourceTree = ""; }; 85E2FA400B5CEAF3003E7B25 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Grayscale.nib; sourceTree = ""; }; 85F3E8020EC5003200B9D568 /* PRFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PRFilter.h; sourceTree = ""; }; 85F3E8030EC5003200B9D568 /* PRFilter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PRFilter.m; sourceTree = ""; }; F50E085E03A8B3A001317B72 /* PRImageView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRImageView.h; sourceTree = ""; }; F50E085F03A8B3A001317B72 /* PRImageView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRImageView.m; sourceTree = ""; }; F50E086203A8B47901317B72 /* PRWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRWindowController.h; sourceTree = ""; }; F50E086303A8B47901317B72 /* PRWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRWindowController.m; sourceTree = ""; }; F50E086403A8B47901317B72 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = ""; }; F50E086503A8B47901317B72 /* AppController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = AppController.m; sourceTree = ""; }; F51A79A703D95E3101A80101 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Convolve55.nib; sourceTree = ""; }; F51A79AC03D9642D01A80101 /* PRConvolve55.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRConvolve55.h; sourceTree = ""; }; F51A79AD03D9642D01A80101 /* PRConvolve55.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRConvolve55.m; sourceTree = ""; }; F52855C70689AB0301A80101 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/ProgressPanel.nib; sourceTree = ""; }; F52B6E0903DDC6C201A80101 /* PRCConvolve55.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCConvolve55.h; sourceTree = ""; }; F52B6E0A03DDC6C201A80101 /* PRCConvolve55.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCConvolve55.m; sourceTree = ""; }; F537CAEE0500A8B801A80103 /* README */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = README; sourceTree = ""; }; F538441B0612E0D001A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Median.nib; sourceTree = ""; }; F538441D0612E9BF01A80103 /* PRMedian.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRMedian.h; sourceTree = ""; }; F538441E0612E9BF01A80103 /* PRMedian.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRMedian.m; sourceTree = ""; }; F54D8D5C0588ECEB01A80103 /* PRHistogram.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRHistogram.h; sourceTree = ""; }; F54D8D5D0588ECEB01A80103 /* PRHistogram.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRHistogram.m; sourceTree = ""; }; F54D8D660588ED9101A80103 /* PRCHistogram.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCHistogram.h; sourceTree = ""; }; F54D8D670588ED9101A80103 /* PRCHistogram.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCHistogram.m; sourceTree = ""; }; F54D8D6B0588EE6201A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Histogram.nib; sourceTree = ""; }; F551DF3203E1B5CF01A80101 /* PRFourier.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRFourier.h; sourceTree = ""; }; F551DF3303E1B5CF01A80101 /* PRFourier.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRFourier.m; sourceTree = ""; }; F55BF70E054909D501A80103 /* PRDFTHighPass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRDFTHighPass.h; sourceTree = ""; }; F55BF70F054909D501A80103 /* PRDFTHighPass.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRDFTHighPass.m; sourceTree = ""; }; F568E20703B757F201A80101 /* PRGrayscaleFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRGrayscaleFilter.h; sourceTree = ""; }; F568E20803B757F201A80101 /* PRGrayscaleFilter.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRGrayscaleFilter.m; sourceTree = ""; }; F568E20C03B77C9A01A80101 /* PRTransforms.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRTransforms.h; sourceTree = ""; }; F568E20D03B77C9A01A80101 /* PRTransforms.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRTransforms.m; sourceTree = ""; }; F58A013E051379F90163C8F7 /* PRDFTLowPass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRDFTLowPass.h; sourceTree = ""; }; F58A013F051379F90163C8F7 /* PRDFTLowPass.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRDFTLowPass.m; sourceTree = ""; }; F58A014205137A870163C8F7 /* PRCDFTLowPass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCDFTLowPass.h; sourceTree = ""; }; F58A014305137A870163C8F7 /* PRCDFTLowPass.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCDFTLowPass.m; sourceTree = ""; }; F58A014705138B000163C8F7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/DFTLowPass.nib; sourceTree = ""; }; F58A01490513B6E80163C8F7 /* FFT.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FFT.h; sourceTree = ""; }; F58A014A0513B6E80163C8F7 /* FFT.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = FFT.c; sourceTree = ""; }; F59300510609F6AE01A80103 /* PRCCustTraceEdges.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCCustTraceEdges.h; sourceTree = ""; }; F59300520609F6AE01A80103 /* PRCCustTraceEdges.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCCustTraceEdges.m; sourceTree = ""; }; F59300560609F83101A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/CustTraceEdges.nib; sourceTree = ""; }; F5930058060B2ED001A80103 /* PRCustTraceEdges.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCustTraceEdges.h; sourceTree = ""; }; F5930059060B2ED001A80103 /* PRCustTraceEdges.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCustTraceEdges.m; sourceTree = ""; }; F59B4FBB0591D102011CE379 /* PRCumHisto.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCumHisto.h; sourceTree = ""; }; F59B4FBC0591D102011CE379 /* PRCumHisto.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCumHisto.m; sourceTree = ""; }; F59B4FBF0591DA41011CE379 /* PRCCumHisto.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCCumHisto.h; sourceTree = ""; }; F59B4FC00591DA41011CE379 /* PRCCumHisto.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCCumHisto.m; sourceTree = ""; }; F59B4FC305921408011CE379 /* PRHisto.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRHisto.h; sourceTree = ""; }; F59B4FC405921408011CE379 /* PRHisto.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRHisto.m; sourceTree = ""; }; F59B4FC7059214C7011CE379 /* PRCHisto.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCHisto.h; sourceTree = ""; }; F59B4FC8059214C7011CE379 /* PRCHisto.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCHisto.m; sourceTree = ""; }; F59B4FCC05923027011CE379 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/CumulHistogram.nib; sourceTree = ""; }; F59EB61D079F1C9101A80103 /* PRCScale.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCScale.h; sourceTree = ""; }; F59EB61E079F1C9101A80103 /* PRCScale.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCScale.m; sourceTree = ""; }; F59EB621079F1CA501A80103 /* PRScale.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRScale.h; sourceTree = ""; }; F59EB622079F1CA501A80103 /* PRScale.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRScale.m; sourceTree = ""; }; F59EB628079F2ED301A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Scale.nib; sourceTree = ""; }; F5A3DD6C058349E601A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Equalize.nib; sourceTree = ""; }; F5B0F9640686C3B701A80101 /* PRCProgress.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCProgress.h; sourceTree = ""; }; F5B0F9650686C3B701A80101 /* PRCProgress.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCProgress.m; sourceTree = ""; }; F5B3A92205B53FF201A80101 /* PRCTraceEdges.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCTraceEdges.h; sourceTree = ""; }; F5B3A92305B53FF201A80101 /* PRCTraceEdges.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCTraceEdges.m; sourceTree = ""; }; F5B3A92705B5469C01A80101 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/TraceEdges.nib; sourceTree = ""; }; F5B3A92905B5568F01A80101 /* PRTraceEdges.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRTraceEdges.h; sourceTree = ""; }; F5B3A92A05B5568F01A80101 /* PRTraceEdges.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRTraceEdges.m; sourceTree = ""; }; F5B6257006881DCE01A80101 /* PRProgressAction.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRProgressAction.h; sourceTree = ""; }; F5B6257106881DCE01A80101 /* PRProgressAction.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRProgressAction.m; sourceTree = ""; }; F5C7F8EE07C75C6901A80101 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Crop.nib; sourceTree = ""; }; F5C8A2A307EED49E01A80101 /* PRCBriCon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCBriCon.h; sourceTree = ""; }; F5C8A2A407EED49E01A80101 /* PRCBriCon.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCBriCon.m; sourceTree = ""; }; F5C8A2A707EED52A01A80101 /* PRBriCon.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRBriCon.h; sourceTree = ""; }; F5C8A2A807EED52A01A80101 /* PRBriCon.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRBriCon.m; sourceTree = ""; }; F5C8A2AC07EED94A01A80101 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/BriCon.nib; sourceTree = ""; }; F5C941A908261B5E01A80101 /* price128.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = price128.icns; sourceTree = ""; }; F5D38DD508FDA41801A80101 /* PRImage.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRImage.h; sourceTree = ""; }; F5D38DD608FDA41801A80101 /* PRImage.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRImage.m; sourceTree = ""; }; F5D67DAF0612D96501A80103 /* PRCMedian.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCMedian.h; sourceTree = ""; }; F5D67DB00612D96501A80103 /* PRCMedian.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCMedian.m; sourceTree = ""; }; F5D9F4B607AD972F01A80101 /* PRCrop.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCrop.m; sourceTree = ""; }; F5D9F4B807AD974901A80101 /* PRCrop.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCrop.h; sourceTree = ""; }; F5D9F4BA07AD976001A80101 /* PRCCrop.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCCrop.h; sourceTree = ""; }; F5D9F4BC07AD976F01A80101 /* PRCCrop.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCCrop.m; sourceTree = ""; }; F5DC9E42056A98E601A80101 /* PRDFTFilter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRDFTFilter.h; sourceTree = ""; }; F5DC9E43056A98E601A80101 /* PRDFTFilter.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRDFTFilter.m; sourceTree = ""; }; F5DD42E9053AAE5201A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/DFTHighPass.nib; sourceTree = ""; }; F5DD42EB053AAEF901A80103 /* PRCDFTHighPass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCDFTHighPass.h; sourceTree = ""; }; F5DD42EC053AAEF901A80103 /* PRCDFTHighPass.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCDFTHighPass.m; sourceTree = ""; }; F5E238A405808FD801A80103 /* PRCEqualize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PRCEqualize.h; sourceTree = ""; }; F5E238A505808FD801A80103 /* PRCEqualize.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PRCEqualize.m; sourceTree = ""; }; F5E238A8058091EB01A80103 /* PREqualize.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PREqualize.h; sourceTree = ""; }; F5E238A9058091EB01A80103 /* PREqualize.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PREqualize.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 8526E99410C91A2E0072C369 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 8526E99510C91A2E0072C369 /* Cocoa.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */, ); name = "Linked Frameworks"; sourceTree = ""; }; 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */ = { isa = PBXGroup; children = ( 2A37F4C5FDCFA73011CA2CEA /* Foundation.framework */, 2A37F4C4FDCFA73011CA2CEA /* AppKit.framework */, ); name = "Other Frameworks"; sourceTree = ""; }; 19C28FB0FE9D524F11CA2CBB /* Products */ = { isa = PBXGroup; children = ( 8526E99B10C91A2E0072C369 /* PRICE.app */, ); name = Products; sourceTree = ""; }; 2A37F4AAFDCFA73011CA2CEA /* PRICE */ = { isa = PBXGroup; children = ( 2A37F4ABFDCFA73011CA2CEA /* Classes */, 2A37F4AFFDCFA73011CA2CEA /* Other Sources */, 2A37F4B8FDCFA73011CA2CEA /* Resources */, 2A37F4C3FDCFA73011CA2CEA /* Frameworks */, 19C28FB0FE9D524F11CA2CBB /* Products */, 8526E99A10C91A2E0072C369 /* Info-PRICE.plist */, ); name = PRICE; sourceTree = ""; }; 2A37F4ABFDCFA73011CA2CEA /* Classes */ = { isa = PBXGroup; children = ( F5D38DD508FDA41801A80101 /* PRImage.h */, F5D38DD608FDA41801A80101 /* PRImage.m */, F54D8D5C0588ECEB01A80103 /* PRHistogram.h */, F54D8D5D0588ECEB01A80103 /* PRHistogram.m */, F54D8D660588ED9101A80103 /* PRCHistogram.h */, F54D8D670588ED9101A80103 /* PRCHistogram.m */, F59B4FC305921408011CE379 /* PRHisto.h */, F59B4FC405921408011CE379 /* PRHisto.m */, F59B4FC7059214C7011CE379 /* PRCHisto.h */, F59B4FC8059214C7011CE379 /* PRCHisto.m */, F59B4FBB0591D102011CE379 /* PRCumHisto.h */, F59B4FBC0591D102011CE379 /* PRCumHisto.m */, F59B4FBF0591DA41011CE379 /* PRCCumHisto.h */, F59B4FC00591DA41011CE379 /* PRCCumHisto.m */, 85A1EA8B13EF0E92003B0912 /* PRCurvesView.h */, 85A1EA8C13EF0E92003B0912 /* PRCurvesView.m */, 85B7C77613F45738005EF60D /* PRCurvesPath.h */, 85B7C77713F45738005EF60D /* PRCurvesPath.m */, F52B6E0803DDC36301A80101 /* Controllers */, F568E20B03B7583A01A80101 /* Filters */, F5E238AC058091F001A80103 /* Enhance */, 2A37F4AEFDCFA73011CA2CEA /* MyDocument.h */, 2A37F4ACFDCFA73011CA2CEA /* MyDocument.m */, F50E085E03A8B3A001317B72 /* PRImageView.h */, F50E085F03A8B3A001317B72 /* PRImageView.m */, F50E086203A8B47901317B72 /* PRWindowController.h */, F50E086303A8B47901317B72 /* PRWindowController.m */, F50E086403A8B47901317B72 /* AppController.h */, F50E086503A8B47901317B72 /* AppController.m */, F5B0F9640686C3B701A80101 /* PRCProgress.h */, F5B0F9650686C3B701A80101 /* PRCProgress.m */, F5B6257006881DCE01A80101 /* PRProgressAction.h */, F5B6257106881DCE01A80101 /* PRProgressAction.m */, F59EB621079F1CA501A80103 /* PRScale.h */, F59EB622079F1CA501A80103 /* PRScale.m */, F5D9F4B807AD974901A80101 /* PRCrop.h */, F5D9F4B607AD972F01A80101 /* PRCrop.m */, ); name = Classes; sourceTree = ""; }; 2A37F4AFFDCFA73011CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( 2A37F4B0FDCFA73011CA2CEA /* main.m */, F58A01490513B6E80163C8F7 /* FFT.h */, F58A014A0513B6E80163C8F7 /* FFT.c */, ); name = "Other Sources"; sourceTree = ""; }; 2A37F4B8FDCFA73011CA2CEA /* Resources */ = { isa = PBXGroup; children = ( F5C941A908261B5E01A80101 /* price128.icns */, F537CAEE0500A8B801A80103 /* README */, 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */, 089C165FFE840EACC02AAC07 /* InfoPlist.strings */, 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */, 2A37F4B4FDCFA73011CA2CEA /* PRWindow.nib */, F51A79A603D95E3101A80101 /* Convolve55.nib */, F5C8A2AB07EED94A01A80101 /* BriCon.nib */, F58A014605138B000163C8F7 /* DFTLowPass.nib */, F5DD42E8053AAE5201A80103 /* DFTHighPass.nib */, F5A3DD6B058349E601A80103 /* Equalize.nib */, F54D8D6A0588EE6201A80103 /* Histogram.nib */, F59B4FCB05923027011CE379 /* CumulHistogram.nib */, F5B3A92605B5469C01A80101 /* TraceEdges.nib */, F59300550609F83101A80103 /* CustTraceEdges.nib */, F538441A0612E0D001A80103 /* Median.nib */, F52855C60689AB0301A80101 /* ProgressPanel.nib */, F59EB627079F2ED301A80103 /* Scale.nib */, F5C7F8ED07C75C6901A80101 /* Crop.nib */, 85E2FA3F0B5CEAF3003E7B25 /* Grayscale.nib */, 859E91901132DC6E00C75DB0 /* Preview.nib */, 85A1EA9413EF1013003B0912 /* Curves.nib */, ); name = Resources; sourceTree = ""; }; 2A37F4C3FDCFA73011CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( 1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */, 1058C7A8FEA54F5311CA2CBB /* Other Frameworks */, ); name = Frameworks; sourceTree = ""; }; F52B6E0803DDC36301A80101 /* Controllers */ = { isa = PBXGroup; children = ( 859E918C1132DC5500C75DB0 /* PRPreviewController.h */, 859E918D1132DC5500C75DB0 /* PRPreviewController.m */, 859E91881132DC4100C75DB0 /* PRFilterController.h */, 859E91891132DC4100C75DB0 /* PRFilterController.m */, 85A1EA7B13EF0DC6003B0912 /* PRCCurves.h */, 85A1EA7C13EF0DC6003B0912 /* PRCCurves.m */, F5C8A2A307EED49E01A80101 /* PRCBriCon.h */, F5C8A2A407EED49E01A80101 /* PRCBriCon.m */, F59EB61D079F1C9101A80103 /* PRCScale.h */, F59EB61E079F1C9101A80103 /* PRCScale.m */, F52B6E0903DDC6C201A80101 /* PRCConvolve55.h */, F52B6E0A03DDC6C201A80101 /* PRCConvolve55.m */, F58A014205137A870163C8F7 /* PRCDFTLowPass.h */, F58A014305137A870163C8F7 /* PRCDFTLowPass.m */, F5DD42EB053AAEF901A80103 /* PRCDFTHighPass.h */, F5DD42EC053AAEF901A80103 /* PRCDFTHighPass.m */, F5E238A405808FD801A80103 /* PRCEqualize.h */, F5E238A505808FD801A80103 /* PRCEqualize.m */, F5B3A92205B53FF201A80101 /* PRCTraceEdges.h */, F5B3A92305B53FF201A80101 /* PRCTraceEdges.m */, F59300510609F6AE01A80103 /* PRCCustTraceEdges.h */, F59300520609F6AE01A80103 /* PRCCustTraceEdges.m */, F5D67DAF0612D96501A80103 /* PRCMedian.h */, F5D67DB00612D96501A80103 /* PRCMedian.m */, F5D9F4BA07AD976001A80101 /* PRCCrop.h */, F5D9F4BC07AD976F01A80101 /* PRCCrop.m */, 85E2FA3B0B5CE7AA003E7B25 /* PRCGrayscale.h */, 85E2FA3C0B5CE7AA003E7B25 /* PRCGrayscale.m */, 85CBE1320ECE08B200A80101 /* PRCInvert.h */, 85CBE1330ECE08B200A80101 /* PRCInvert.m */, 85CBE1360ECE113300A80101 /* PRCFourier.h */, 85CBE1370ECE113300A80101 /* PRCFourier.m */, 85CBE13A0ECE328400A80101 /* PRCTransforms.h */, 85CBE13B0ECE328400A80101 /* PRCTransforms.m */, ); name = Controllers; sourceTree = ""; }; F568E20B03B7583A01A80101 /* Filters */ = { isa = PBXGroup; children = ( 85F3E8020EC5003200B9D568 /* PRFilter.h */, 85F3E8030EC5003200B9D568 /* PRFilter.m */, F568E20703B757F201A80101 /* PRGrayscaleFilter.h */, F568E20803B757F201A80101 /* PRGrayscaleFilter.m */, F51A79AC03D9642D01A80101 /* PRConvolve55.h */, F51A79AD03D9642D01A80101 /* PRConvolve55.m */, F551DF3203E1B5CF01A80101 /* PRFourier.h */, F551DF3303E1B5CF01A80101 /* PRFourier.m */, F58A013E051379F90163C8F7 /* PRDFTLowPass.h */, F58A013F051379F90163C8F7 /* PRDFTLowPass.m */, F55BF70E054909D501A80103 /* PRDFTHighPass.h */, F55BF70F054909D501A80103 /* PRDFTHighPass.m */, F5DC9E43056A98E601A80101 /* PRDFTFilter.m */, F5DC9E42056A98E601A80101 /* PRDFTFilter.h */, 85D196360D0A063900A80101 /* PRInvert.h */, 85D196370D0A063900A80101 /* PRInvert.m */, F568E20C03B77C9A01A80101 /* PRTransforms.h */, F568E20D03B77C9A01A80101 /* PRTransforms.m */, ); name = Filters; sourceTree = ""; }; F5E238AC058091F001A80103 /* Enhance */ = { isa = PBXGroup; children = ( F5C8A2A707EED52A01A80101 /* PRBriCon.h */, F5C8A2A807EED52A01A80101 /* PRBriCon.m */, F5E238A8058091EB01A80103 /* PREqualize.h */, F5E238A9058091EB01A80103 /* PREqualize.m */, F5B3A92905B5568F01A80101 /* PRTraceEdges.h */, F5B3A92A05B5568F01A80101 /* PRTraceEdges.m */, F5930058060B2ED001A80103 /* PRCustTraceEdges.h */, F5930059060B2ED001A80103 /* PRCustTraceEdges.m */, F538441D0612E9BF01A80103 /* PRMedian.h */, F538441E0612E9BF01A80103 /* PRMedian.m */, 85A1EA9B13EF1075003B0912 /* PRCurves.h */, 85A1EA9C13EF1075003B0912 /* PRCurves.m */, ); name = Enhance; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ 8526E92410C91A2E0072C369 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 8526E92510C91A2E0072C369 /* MyDocument.h in Headers */, 8526E92610C91A2E0072C369 /* PRImageView.h in Headers */, 8526E92710C91A2E0072C369 /* PRWindowController.h in Headers */, 8526E92810C91A2E0072C369 /* AppController.h in Headers */, 8526E92910C91A2E0072C369 /* PRGrayscaleFilter.h in Headers */, 8526E92A10C91A2E0072C369 /* PRTransforms.h in Headers */, 8526E92B10C91A2E0072C369 /* PRConvolve55.h in Headers */, 8526E92C10C91A2E0072C369 /* PRCConvolve55.h in Headers */, 8526E92D10C91A2E0072C369 /* PRFourier.h in Headers */, 8526E92E10C91A2E0072C369 /* PRDFTLowPass.h in Headers */, 8526E92F10C91A2E0072C369 /* PRCDFTLowPass.h in Headers */, 8526E93010C91A2E0072C369 /* FFT.h in Headers */, 8526E93110C91A2E0072C369 /* PRCDFTHighPass.h in Headers */, 8526E93210C91A2E0072C369 /* PRDFTHighPass.h in Headers */, 8526E93310C91A2E0072C369 /* PRDFTFilter.h in Headers */, 8526E93410C91A2E0072C369 /* PRCEqualize.h in Headers */, 8526E93510C91A2E0072C369 /* PREqualize.h in Headers */, 8526E93610C91A2E0072C369 /* PRHistogram.h in Headers */, 8526E93710C91A2E0072C369 /* PRCHistogram.h in Headers */, 8526E93810C91A2E0072C369 /* PRCumHisto.h in Headers */, 8526E93910C91A2E0072C369 /* PRCCumHisto.h in Headers */, 8526E93A10C91A2E0072C369 /* PRHisto.h in Headers */, 8526E93B10C91A2E0072C369 /* PRCHisto.h in Headers */, 8526E93C10C91A2E0072C369 /* PRCTraceEdges.h in Headers */, 8526E93D10C91A2E0072C369 /* PRTraceEdges.h in Headers */, 8526E93E10C91A2E0072C369 /* PRCCustTraceEdges.h in Headers */, 8526E93F10C91A2E0072C369 /* PRCustTraceEdges.h in Headers */, 8526E94010C91A2E0072C369 /* PRCMedian.h in Headers */, 8526E94110C91A2E0072C369 /* PRMedian.h in Headers */, 8526E94210C91A2E0072C369 /* PRCProgress.h in Headers */, 8526E94310C91A2E0072C369 /* PRProgressAction.h in Headers */, 8526E94410C91A2E0072C369 /* PRCScale.h in Headers */, 8526E94510C91A2E0072C369 /* PRScale.h in Headers */, 8526E94610C91A2E0072C369 /* PRCrop.h in Headers */, 8526E94710C91A2E0072C369 /* PRCCrop.h in Headers */, 8526E94810C91A2E0072C369 /* PRCBriCon.h in Headers */, 8526E94910C91A2E0072C369 /* PRBriCon.h in Headers */, 8526E94A10C91A2E0072C369 /* PRImage.h in Headers */, 8526E94B10C91A2E0072C369 /* PRCGrayscale.h in Headers */, 8526E94C10C91A2E0072C369 /* PRInvert.h in Headers */, 8526E94D10C91A2E0072C369 /* PRFilter.h in Headers */, 8526E94E10C91A2E0072C369 /* PRCInvert.h in Headers */, 8526E94F10C91A2E0072C369 /* PRCFourier.h in Headers */, 8526E95010C91A2E0072C369 /* PRCTransforms.h in Headers */, 859E918A1132DC4100C75DB0 /* PRFilterController.h in Headers */, 859E918E1132DC5500C75DB0 /* PRPreviewController.h in Headers */, 85A1EA7D13EF0DC6003B0912 /* PRCCurves.h in Headers */, 85A1EA8D13EF0E92003B0912 /* PRCurvesView.h in Headers */, 85A1EA9D13EF1075003B0912 /* PRCurves.h in Headers */, 85B7C77813F45738005EF60D /* PRCurvesPath.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ 8526E92310C91A2E0072C369 /* PRICE */ = { isa = PBXNativeTarget; buildConfigurationList = 8526E99610C91A2E0072C369 /* Build configuration list for PBXNativeTarget "PRICE" */; buildPhases = ( 8526E92410C91A2E0072C369 /* Headers */, 8526E95110C91A2E0072C369 /* Resources */, 8526E96610C91A2E0072C369 /* Sources */, 8526E99410C91A2E0072C369 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = PRICE; productInstallPath = "$(HOME)/Applications"; productName = PRICE; productReference = 8526E99B10C91A2E0072C369 /* PRICE.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 2A37F4A9FDCFA73011CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = 8526E91910C918950072C369 /* Build configuration list for PBXProject "PRICE" */; compatibilityVersion = "Xcode 2.4"; developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( English, Japanese, French, German, ); mainGroup = 2A37F4AAFDCFA73011CA2CEA /* PRICE */; projectDirPath = ""; projectRoot = ""; targets = ( 8526E92310C91A2E0072C369 /* PRICE */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 8526E95110C91A2E0072C369 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8526E95210C91A2E0072C369 /* Credits.rtf in Resources */, 8526E95310C91A2E0072C369 /* MainMenu.nib in Resources */, 8526E95410C91A2E0072C369 /* PRWindow.nib in Resources */, 8526E95510C91A2E0072C369 /* InfoPlist.strings in Resources */, 8526E95610C91A2E0072C369 /* Convolve55.nib in Resources */, 8526E95710C91A2E0072C369 /* README in Resources */, 8526E95810C91A2E0072C369 /* DFTLowPass.nib in Resources */, 8526E95910C91A2E0072C369 /* DFTHighPass.nib in Resources */, 8526E95A10C91A2E0072C369 /* Equalize.nib in Resources */, 8526E95B10C91A2E0072C369 /* Histogram.nib in Resources */, 8526E95C10C91A2E0072C369 /* CumulHistogram.nib in Resources */, 8526E95D10C91A2E0072C369 /* TraceEdges.nib in Resources */, 8526E95E10C91A2E0072C369 /* CustTraceEdges.nib in Resources */, 8526E95F10C91A2E0072C369 /* Median.nib in Resources */, 8526E96010C91A2E0072C369 /* ProgressPanel.nib in Resources */, 8526E96110C91A2E0072C369 /* Scale.nib in Resources */, 8526E96210C91A2E0072C369 /* Crop.nib in Resources */, 8526E96310C91A2E0072C369 /* BriCon.nib in Resources */, 8526E96410C91A2E0072C369 /* price128.icns in Resources */, 8526E96510C91A2E0072C369 /* Grayscale.nib in Resources */, 859E91921132DC6E00C75DB0 /* Preview.nib in Resources */, 85A1EA9613EF1013003B0912 /* Curves.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 8526E96610C91A2E0072C369 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 8526E96710C91A2E0072C369 /* MyDocument.m in Sources */, 8526E96810C91A2E0072C369 /* main.m in Sources */, 8526E96910C91A2E0072C369 /* PRImageView.m in Sources */, 8526E96A10C91A2E0072C369 /* PRWindowController.m in Sources */, 8526E96B10C91A2E0072C369 /* PRGrayscaleFilter.m in Sources */, 8526E96C10C91A2E0072C369 /* PRConvolve55.m in Sources */, 8526E96D10C91A2E0072C369 /* PRCConvolve55.m in Sources */, 8526E96E10C91A2E0072C369 /* PRFourier.m in Sources */, 8526E96F10C91A2E0072C369 /* PRTransforms.m in Sources */, 8526E97010C91A2E0072C369 /* PRDFTLowPass.m in Sources */, 8526E97110C91A2E0072C369 /* PRCDFTLowPass.m in Sources */, 8526E97210C91A2E0072C369 /* FFT.c in Sources */, 8526E97310C91A2E0072C369 /* PRCDFTHighPass.m in Sources */, 8526E97410C91A2E0072C369 /* PRDFTHighPass.m in Sources */, 8526E97510C91A2E0072C369 /* PRDFTFilter.m in Sources */, 8526E97610C91A2E0072C369 /* PRCEqualize.m in Sources */, 8526E97710C91A2E0072C369 /* PREqualize.m in Sources */, 8526E97810C91A2E0072C369 /* PRHistogram.m in Sources */, 8526E97910C91A2E0072C369 /* PRCHistogram.m in Sources */, 8526E97A10C91A2E0072C369 /* PRCumHisto.m in Sources */, 8526E97B10C91A2E0072C369 /* PRCCumHisto.m in Sources */, 8526E97C10C91A2E0072C369 /* PRHisto.m in Sources */, 8526E97D10C91A2E0072C369 /* PRCHisto.m in Sources */, 8526E97E10C91A2E0072C369 /* PRCTraceEdges.m in Sources */, 8526E97F10C91A2E0072C369 /* PRTraceEdges.m in Sources */, 8526E98010C91A2E0072C369 /* PRCCustTraceEdges.m in Sources */, 8526E98110C91A2E0072C369 /* PRCustTraceEdges.m in Sources */, 8526E98210C91A2E0072C369 /* PRCMedian.m in Sources */, 8526E98310C91A2E0072C369 /* PRMedian.m in Sources */, 8526E98410C91A2E0072C369 /* PRCProgress.m in Sources */, 8526E98510C91A2E0072C369 /* PRProgressAction.m in Sources */, 8526E98610C91A2E0072C369 /* PRCScale.m in Sources */, 8526E98710C91A2E0072C369 /* PRScale.m in Sources */, 8526E98810C91A2E0072C369 /* PRCrop.m in Sources */, 8526E98910C91A2E0072C369 /* PRCCrop.m in Sources */, 8526E98A10C91A2E0072C369 /* PRCBriCon.m in Sources */, 8526E98B10C91A2E0072C369 /* PRBriCon.m in Sources */, 8526E98C10C91A2E0072C369 /* AppController.m in Sources */, 8526E98D10C91A2E0072C369 /* PRImage.m in Sources */, 8526E98E10C91A2E0072C369 /* PRCGrayscale.m in Sources */, 8526E98F10C91A2E0072C369 /* PRInvert.m in Sources */, 8526E99010C91A2E0072C369 /* PRFilter.m in Sources */, 8526E99110C91A2E0072C369 /* PRCInvert.m in Sources */, 8526E99210C91A2E0072C369 /* PRCFourier.m in Sources */, 8526E99310C91A2E0072C369 /* PRCTransforms.m in Sources */, 859E918B1132DC4100C75DB0 /* PRFilterController.m in Sources */, 859E918F1132DC5500C75DB0 /* PRPreviewController.m in Sources */, 85A1EA7E13EF0DC6003B0912 /* PRCCurves.m in Sources */, 85A1EA8E13EF0E92003B0912 /* PRCurvesView.m in Sources */, 85A1EA9E13EF1075003B0912 /* PRCurves.m in Sources */, 85B7C77913F45738005EF60D /* PRCurvesPath.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 089C165FFE840EACC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 089C1660FE840EACC02AAC07 /* English */, ); name = InfoPlist.strings; sourceTree = ""; }; 2A37F4B4FDCFA73011CA2CEA /* PRWindow.nib */ = { isa = PBXVariantGroup; children = ( 2A37F4B5FDCFA73011CA2CEA /* PRWindow.nib */, ); name = PRWindow.nib; sourceTree = ""; }; 2A37F4B6FDCFA73011CA2CEA /* MainMenu.nib */ = { isa = PBXVariantGroup; children = ( 2A37F4B7FDCFA73011CA2CEA /* English */, ); name = MainMenu.nib; sourceTree = ""; }; 2A37F4B9FDCFA73011CA2CEA /* Credits.rtf */ = { isa = PBXVariantGroup; children = ( 2A37F4BAFDCFA73011CA2CEA /* English */, ); name = Credits.rtf; sourceTree = ""; }; 859E91901132DC6E00C75DB0 /* Preview.nib */ = { isa = PBXVariantGroup; children = ( 859E91911132DC6E00C75DB0 /* English */, ); name = Preview.nib; sourceTree = ""; }; 85A1EA9413EF1013003B0912 /* Curves.nib */ = { isa = PBXVariantGroup; children = ( 85A1EA9513EF1013003B0912 /* English */, ); name = Curves.nib; sourceTree = ""; }; 85E2FA3F0B5CEAF3003E7B25 /* Grayscale.nib */ = { isa = PBXVariantGroup; children = ( 85E2FA400B5CEAF3003E7B25 /* English */, ); name = Grayscale.nib; sourceTree = ""; }; F51A79A603D95E3101A80101 /* Convolve55.nib */ = { isa = PBXVariantGroup; children = ( F51A79A703D95E3101A80101 /* English */, ); name = Convolve55.nib; sourceTree = ""; }; F52855C60689AB0301A80101 /* ProgressPanel.nib */ = { isa = PBXVariantGroup; children = ( F52855C70689AB0301A80101 /* English */, ); name = ProgressPanel.nib; sourceTree = ""; }; F538441A0612E0D001A80103 /* Median.nib */ = { isa = PBXVariantGroup; children = ( F538441B0612E0D001A80103 /* English */, ); name = Median.nib; sourceTree = ""; }; F54D8D6A0588EE6201A80103 /* Histogram.nib */ = { isa = PBXVariantGroup; children = ( F54D8D6B0588EE6201A80103 /* English */, ); name = Histogram.nib; sourceTree = ""; }; F58A014605138B000163C8F7 /* DFTLowPass.nib */ = { isa = PBXVariantGroup; children = ( F58A014705138B000163C8F7 /* English */, ); name = DFTLowPass.nib; sourceTree = ""; }; F59300550609F83101A80103 /* CustTraceEdges.nib */ = { isa = PBXVariantGroup; children = ( F59300560609F83101A80103 /* English */, ); name = CustTraceEdges.nib; sourceTree = ""; }; F59B4FCB05923027011CE379 /* CumulHistogram.nib */ = { isa = PBXVariantGroup; children = ( F59B4FCC05923027011CE379 /* English */, ); name = CumulHistogram.nib; sourceTree = ""; }; F59EB627079F2ED301A80103 /* Scale.nib */ = { isa = PBXVariantGroup; children = ( F59EB628079F2ED301A80103 /* English */, ); name = Scale.nib; sourceTree = ""; }; F5A3DD6B058349E601A80103 /* Equalize.nib */ = { isa = PBXVariantGroup; children = ( F5A3DD6C058349E601A80103 /* English */, ); name = Equalize.nib; sourceTree = ""; }; F5B3A92605B5469C01A80101 /* TraceEdges.nib */ = { isa = PBXVariantGroup; children = ( F5B3A92705B5469C01A80101 /* English */, ); name = TraceEdges.nib; sourceTree = ""; }; F5C7F8ED07C75C6901A80101 /* Crop.nib */ = { isa = PBXVariantGroup; children = ( F5C7F8EE07C75C6901A80101 /* English */, ); name = Crop.nib; sourceTree = ""; }; F5C8A2AB07EED94A01A80101 /* BriCon.nib */ = { isa = PBXVariantGroup; children = ( F5C8A2AC07EED94A01A80101 /* English */, ); name = BriCon.nib; sourceTree = ""; }; F5DD42E8053AAE5201A80103 /* DFTHighPass.nib */ = { isa = PBXVariantGroup; children = ( F5DD42E9053AAE5201A80103 /* English */, ); name = DFTHighPass.nib; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 8526E91A10C918950072C369 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { GCC_VERSION = com.apple.compilers.llvmgcc42; RUN_CLANG_STATIC_ANALYZER = YES; }; name = Development; }; 8526E91B10C918950072C369 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { }; name = Deployment; }; 8526E91C10C918950072C369 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { }; name = Default; }; 8526E99710C91A2E0072C369 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; GCC_CW_ASM_SYNTAX = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PFE_FILE_C_DIALECTS = "c objective-c"; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "Info-PRICE.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = ""; PRODUCT_NAME = PRICE; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; ZERO_LINK = YES; }; name = Development; }; 8526E99810C91A2E0072C369 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "x86_64 i386 ppc"; COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ""; GCC_CW_ASM_SYNTAX = NO; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; GCC_ENABLE_FIX_AND_CONTINUE = NO; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_OPTIMIZATION_LEVEL = 2; GCC_PFE_FILE_C_DIALECTS = "c objective-c"; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "Info-PRICE.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = ""; PRODUCT_NAME = PRICE; SDKROOT = /Developer/SDKs/MacOSX10.5.sdk; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; ZERO_LINK = NO; }; name = Deployment; }; 8526E99910C91A2E0072C369 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { FRAMEWORK_SEARCH_PATHS = ""; GCC_CW_ASM_SYNTAX = NO; GCC_ENABLE_CPP_EXCEPTIONS = NO; GCC_ENABLE_CPP_RTTI = NO; GCC_ENABLE_PASCAL_STRINGS = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PFE_FILE_C_DIALECTS = "c objective-c"; HEADER_SEARCH_PATHS = ""; INFOPLIST_FILE = "Info-PRICE.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = "-Wall"; OTHER_LDFLAGS = ""; PRODUCT_NAME = PRICE; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; }; name = Default; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 8526E91910C918950072C369 /* Build configuration list for PBXProject "PRICE" */ = { isa = XCConfigurationList; buildConfigurations = ( 8526E91A10C918950072C369 /* Development */, 8526E91B10C918950072C369 /* Deployment */, 8526E91C10C918950072C369 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 8526E99610C91A2E0072C369 /* Build configuration list for PBXNativeTarget "PRICE" */ = { isa = XCConfigurationList; buildConfigurations = ( 8526E99710C91A2E0072C369 /* Development */, 8526E99810C91A2E0072C369 /* Deployment */, 8526E99910C91A2E0072C369 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; /* End XCConfigurationList section */ }; rootObject = 2A37F4A9FDCFA73011CA2CEA /* Project object */; } PRICE-1.3.0/Resources004075500017500000012000000000001245331715400135545ustar00multixusersPRICE-1.3.0/Resources/BriCon.gorm004075500017500000012000000000001245331715400156735ustar00multixusersPRICE-1.3.0/Resources/BriCon.gorm/data.classes010064400017500000012000000014161134160401300202250ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "briconCancel:", "briconOk:", "briconReset:", "changeBri:", "changeCon:", "filterCancel:", "filterOK:", "parametersChanged:", "showBriCon:", "showFilter:" ); Super = NSObject; }; PRCBriCon = { Actions = ( "showBriCon:", "briconReset:", "changeBri:", "changeCon:" ); Outlets = ( briconWindow, briStep, briSlider, briVal, conStep, conSlider, conVal ); Super = PRFilterController; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/BriCon.gorm/data.info010064400017500000012000000002701134160401300175200ustar00multixusersGNUstep archive00002e7f:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.3.0/Resources/BriCon.gorm/objects.gorm010064400017500000012000000137641134160401300202650ustar00multixusersGNUstep archive00002e7f:00000025:00000097:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A C‹€ C1& % C( DÀ01 NSView% ?€ A C‹€ C1  C‹€ C1&01 NSMutableArray1NSArray&01NSButton1 NSControl% CI Aˆ B` AÀ  B` AÀ&0± &%0 1 NSButtonCell1 NSActionCell1NSCell0 ±&%Modify0 1NSFont%&&&&&&&&&&&&&&%’0 ±&0 ±&&&& &&0±% C Aˆ B` AÀ  B` AÀ&0± &%0±0±&%Cancel° &&&&&&&&&&&&&&%’0±&0±&&&& &&0±% A Aˆ B` AÀ  B` AÀ&0± &%0±0±&%Reset° &&&&&&&&&&&&&&%’0±&0±&&&& &&01NSBox% A Bî Cw B@  Cw B@&0± &0± % @à @à Ci A°  Ci A°&0± &01 NSStepper% CY  A€ A¸  A€ A¸&0± &%0 1 NSStepperCell0!±&%00"1NSNumber1NSValued &&&&&&&&&&&&&&%’ @_À À_À ?ð%%0#1 NSTextField% C ?€ B` A¨  B` A¨&0$± &%0%1NSTextFieldCell0&±&%0° &&&&&&&& &&&&&&%’0'1NSColor0(±&%NSNamedColorSpace0)±&%System0*±&%textBackgroundColor0+±°(°)0,±& % textColor’0-1NSSlider% @€ C A€  C A€&0.± &%0/1 NSSliderCell00±&%0° 01±d &&&&&&&&D&&&&&&%’ Âþ Bþ ¿€%02±03±&° &&&&&&&& &&&&&&%’°'04±°(05±&%System06±&%controlTextColor07±08±&091NSImage0:±&%common_SliderHoriz° &&&&&&&&&&&&&&%%0;±0<±& % Brightness° &&&&&&&&&&&&&& @  @ %%0=±% A Bl Cw B@  Cw B@&0>± &0?± % @à @à Ci A°  Ci A°&0@± &0A±% @€ C A€  C A€&0B± &%0C±0D±&%0° 0E±d &&&&&&&&D&&&&&&%’ Âþ Bþ ¿€%0F±0G±&° &&&&&&&& &&&&&&%’°'°40H±0I±&°9° &&&&&&&&&&&&&&%%0J±% C ?€ B` A¨  B` A¨&0K± &%0L±0M±&%0° &&&&&&&& &&&&&&%’°'°+’0N±% CY  A€ A¸  A€ A¸&0O± &%0P±0Q±&%00R±d &&&&&&&&&&&&&&%’ @_À À_À ?ð%%0S±0T±&%Contrast° &&&&&&&&&&&&&& @  @ %%0U±°(°50V±&%windowBackgroundColor0W±&%Window0X±&%Brightness & Contrast°X ?€ ?€ F@ F@%&   D  D€0Y± &0Z± &0[1 NSMutableDictionary1! NSDictionary&0\±&%Button2°0]±&%Stepper°0^±&%Box1°=0_±&%NSOwner0`±& % PRCBriCon0a±&%Slider1°A0b±& % TextField1°J0c±&%View(1)°?0d±&%Stepper1°N0e±& % TextField°#0f±&%Button°0g±&%View(0)°0h±&%Slider°-0i±& % GormNSPanel°0j±&%Box°0k±&%Button1°0l± &0m1"NSNibConnector°i°_0n±"°]°g0o±"°e°g0p±"°h°g0q±"°f0r±"°k0s±"°a°c0t±"°b°c0u±"°d°c0v±"°\0w±"°j0x±"°^0y±"°g°j0z±"°c°^0{1#NSNibOutletConnector°_°h0|±& % briSlider0}±#°_°e0~±&%briVal0±#°_°]0€±&%briStep0±#°_°i0‚±& % briconWindow0ƒ±#°_°b0„±&%conVal0…±#°_°d0†±&%conStep0‡1$NSNibControlConnector°\°_0ˆ±& % briconReset:0‰±$°k°_0б& % filterCancel:0‹±$°f°_0Œ±& % filterOK:0±$°h°_0ޱ& % changeBri:0±$°e°_°Ž0±$°]°_°Ž0‘±$°a°_0’±& % changeCon:0“±$°b°_°’0”±$°d°_°’0•±#°_°a0–1%NSMutableString& % conSlider0—± &PRICE-1.3.0/Resources/price-icon-os.tiff010064400017500000012000001004341042266160100171440ustar00multixusersMM*þ@@þ@ð@@(12*R¼)>†I-ˆh‡i€ð ü€' ü€'Adobe Photoshop 7.02005:05:02 16:14:39 adobe:docid:photoshop:91af3790-bc9f-11d9-8dba-dfc1114df5bb 8BIM%8BIMê¦ com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-05-02T11:47:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-05-02T11:47:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-05-02T11:47:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-05-02T11:47:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-05-02T11:47:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-05-02T11:47:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-05-02T11:47:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName iso-a4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 783 559 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-05-02T11:47:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 824 577 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-05-02T11:47:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName A4 com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMéxHH/ÿîÿî8Ag{àHHØ(dÿh 8BIMíHH8BIM&?€8BIMî Transparency8BIM Transparency8BIMïÿÿd8BIM8BIM x8BIM8BIMó 8BIM 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM8BIM8BIM@@8BIM8BIMO@@ price-icon-os@@nullboundsObjcRct1Top longLeftlongBtomlong@Rghtlong@slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong@Rghtlong@urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 2@@À0 ÿØÿàJFIFHHÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀ@@"ÿÝÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?ÛúÍþ4iú¿Ö²:K°=s²lõ¶NúÙó~…›ýõ“ÿ}ùRö#ÿ}•¯T]Ÿõ¯¨uó+Æ¢Á[š]e‘]±ÒÆìoÒo·Þ±lú‘ÑÛ`©½Zç:L¹˜eí-c]e·1Þ»ZêØæz~Ä>«¸‡îùß÷ÏVÏñÙŒí?eíøäï²°ßñ¾Ç‰oKxŒý÷\ÿRí/Œ ì|’wmeÛ±\aºýÙ@bï¿{}:¾Ô±l§3àËXü{ x#s]«Ðïm•½¿AézHOùñƒýÓ é>·ÿŽØÿʯý˜ÿße:¿ÆÅN$YÓ½1ãë~Lu帹Ͱ†Y yàþiÿȹ[X)œRVä0rÙ#pŒ¬>¯‹þ1q2L3» õµŸ©«§õ,¼ßNϳ5”>wX-Ü[¡wó~“?;ؼ(?k¾ «ÿýG(ýdÃÆõ£g«¹“¡Š­xöÿeÏN5¸Ôå>Œ|jýô×úoµú~—©ƒj y±v8hÊÅ}Ll@¶¢Öéýv-~ŸÓYõŸÊ+ôé-–-/kñl¦»_UŽô?Iþb¯wÖ¯¬x×UWVª~ÒòF%õ’úk~ÓEvd9µe½û\ÿðßÍWêÙüòè>¨Œ­Vaél–\êM„jÍí6Ùô¿©ùÿáSÈõ/ñkŸÓÎ잣…Cݶ›2e%ß·ÝFÍÿÔzlO«&À)ýµÒ­°p+Ès‰žŠô{ÙG]ÁÉú»ÖÆËxkÏÒ­Í¢½Ž?K÷˜ïÏ^+ÔpóºX³æìÊ·küv½¿ðwWîþ¢DXeÃ3Ž`Ùô«÷^³þgÝÿ–}?þÝþ[_S¾®[Óþ²`å?;öµÖ3e/±î.u7Àþe¬oµ¯½ë‹›‘^EBÖ‡)íý•ÐýNÿ•ñãÿ÷[=C Ü€"Þ{’¹9çŽc1Ã1©G,£û·ÿÑÝëC¯¬YÚÒmkKÜÇCýjë©Ôosêz;ýô¿Í¦2ðÛ˜ÿJ«kýf»eÌßk§UŸKÔÊý&ÏfKÿœYß\º³1~±ÜÂ7VÃO®Ð1Úç£ì~æ3÷Óô®¯WPÍÄ c›^KÚçߥ³ô~“½®ö5•ÿÅ —c¨tª2šÊ¯¯ÔÆqkêÞ¡5»?Gcw{]_ùþšÁè6et±ÕŸ‚]“‘YÆ-{†Úö¼åWeÔ×o£MXøÕzŽõ}OOô­¿¸´îëwSžÜÓV×¶Û¶ =SXöÇü?ýýd´æºÊC¡¥¶‚\ö›7WI¿gkwû¿Òþ*U»]r‹,é¸Ý`9§3¬ªC^ÇG©°{Ÿ³Ôw­V÷3ê.ühà7?§á}a© =‘‰–b ý&+Ïö½Vmw]ÿmú®áhc]v) ÛéE´nô‡µŽs+úUûù‹êGTúŸÔ°'u‡Ù[@Ÿ}_¬WÀýê‰]Ñàþªåz˜¡ßJ‡iýW{‡ý-ë´úÿ,cÇÿî¶záºTÑ{_I!—Ò=F»XxÚíÍþK·=wS$õ|Wùû­ž¢1áÏ]õÿšï{¾çÀ¤NðáÇþ&hpÿÌÿÒ'ל\Œ¬?g廿;hôks½›=žßøU—õrì¬ì cXv=Ù5 õ2ÝÏÚÿÞö{_ô—®ÙÓº}·:û1©}Ï]c«iq\òÝÈné]4K™‡@°j× Øp÷1ÁÛ~“^…&ß9ÏÉ¥½y„»V hs{î¹øï¬ÿSô>ôÔÕPëY$1 ¶Š ÷å‹ýk6·zØ»¡u‹2þÕû6ßQ¡íaõ(Ѷ=í´íÿZˆèd\ë‡M³Ô{ZÇ;Ô£V°½ÌÒ7Õ±;X×o©ã!Ú…Uu;Údº¦2¯¡µßÒ.ÙúD«xŒežüzGÚ|Àk‡õv+V.LÄ£3?-®®ªÃñçìcÚÐÒÊ÷ã[üßÐg½èÿó]¾›êý£—éØÒËû\Ó£˜öý“ÜÇ oGÆ:mØÿhsÍ‚¬vn4.%²v2îþk÷×mõ'"«ú¶+©’Ï\CŽ„Î6v…¿›µtÿ½º5ÎÊœ1ÿº*çNú£Ó²©É¢ëf‡¶½´1…Å–Q/û65vÖ_gç§HBGŒƒÇT ,yœÑÁ.\J±LñJ=Ïò‹ÿÙ8BIM!UAdobe PhotoshopAdobe Photoshop 7.0gÿfÿfÿeÿeÿdÿcÿaÿ_ÿ_ÿ_ÿ^ÿ`ÿbÿeÿkÿmÿoÿrÿqÿqÿtÿrÿtÿu ÿu ÿu ÿv ÿx ÿz#ÿx!ÿw!ÿx!ÿy#ÿy%ÿy$ÿy'ÿ{!+ÿx%ÿw$ÿx#ÿ{$.ÿ†:TÿŒKpÿ‘V€ÿU‚ÿ‘[Šÿ”`Žÿ˜f“ÿ›j˜ÿŸqŸÿ°Š±ÿ¶¶ÿ£r¡ÿ¡pžÿ¨{§ÿ¢p¢ÿ§v¦ÿ«y¨ÿŸf˜ÿcÿZÿRÿIÿ@ÿ9ÿ1ÿ)ÿ$ÿ ÿ ÿ ÿ ÿ$ÿ+ÿ1 ÿ: ÿEÿUÿgÿnÿvÿrÿrÿs ÿtÿtÿtÿuÿv ÿv ÿw!ÿx"ÿy$ÿ{")ÿz#'ÿw#ÿw$ÿw$ÿy&ÿx$ÿx",ÿ:Tÿ„?`ÿ‡IoÿU{ÿ‘W„ÿ•d‘ÿ˜j˜ÿ›oÿŸu£ÿ s¢ÿ©«ÿ©€®ÿ±ŠµÿÊ´ÏÿÓ½ØÿÚÉàÿÔ¿Ûÿº–¿ÿ,ÿ ÿ ÿ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿ+ ÿEÿ`ÿoÿsÿpÿpÿsÿt ÿtÿtÿrÿu ÿv!ÿv!ÿvÿu ÿv!ÿx#ÿw$ÿu%ÿt#ÿtÿt ÿv%ÿv$ÿw.ÿ~/Dÿ‡Fbÿ’Zÿšg•ÿœr¢ÿ£y«ÿ©ƒ²ÿ­Š¹ÿ¿¦ËÿÞØéÿúúýÿÿþÿÿêãñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿMÿrÿ|ÿtÿoÿoÿsÿw!ÿt ÿsÿrÿtÿ{$ÿv#ÿv"ÿu#ÿs ÿt"ÿw(ÿv'ÿu%ÿu%ÿu!ÿsÿt ÿu'ÿz%6ÿƒ8Rÿ‘Yyÿ s™ÿ¨„©ÿ¼£ÅÿÓÊßÿñðúÿÿÿÿÿþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿ ÿAÿrÿƒ ÿvÿoÿqÿrÿsÿx%ÿv&ÿz'ÿt"ÿv ÿw#ÿt#ÿu$ÿu$ÿu$ÿu$ÿt#ÿt%ÿu&ÿu%ÿu&ÿu#ÿw&ÿ|&0ÿ2Bÿ…8MÿŠD[ÿžhÿµ’ªÿɲÆÿϺÒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿ ÿÿÿÿÿ ÿ=ÿx !ÿ…ÿtÿnÿs#ÿs!ÿt"ÿz +ÿv&ÿu%ÿt$ÿu#ÿx'ÿu%ÿt"ÿw$ÿt$ÿr%ÿu&ÿu&ÿv'ÿw)ÿx!/ÿx ,ÿ|&3ÿƒ2@ÿƒ4HÿŠ>Sÿ‰@Uÿ•UnÿŸf„ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿ ÿ ÿÿÿÿÿCÿ…%ÿ‡ ÿqÿmÿrÿsÿv$ÿs ÿt#ÿu#ÿu$ÿu$ÿu%ÿu%ÿs&ÿt)ÿu'ÿu'ÿu&ÿv&ÿx *ÿy%1ÿ{(4ÿ~'5ÿ~*8ÿ€,9ÿ€-=ÿ„3Eÿ†9Pÿÿÿÿÿÿÿ  ÿ--,ÿ1./ÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿÿÿÿ ÿ ÿ ÿ ÿÿÿ  ÿgÿ$ÿw ÿjÿoÿt!ÿtÿo ÿsÿtÿu$ÿx(ÿv)ÿw )ÿv(ÿs"ÿq!ÿs!ÿt%ÿu%ÿw,ÿw(ÿu$ÿv)ÿz".ÿz#-ÿ|(3ÿ~*<ÿ ÿ$"$ÿRQTÿsqtÿœ ÿ¤¦©ÿÇËËÿÜãäÿ¼ÃÂÿÜÚäÿîññÿÇÄÈÿÞáãÿîíîÿÞáäÿkjsÿdbhÿ;58ÿÿÿÿÿ  ÿ ÿ  ÿ  ÿ  ÿ  ÿÿ ÿ ÿÿÿ=ÿ)ÿ‚%ÿw%ÿt%ÿx#ÿtÿtÿt%ÿu#ÿv*ÿv)ÿv(ÿu!ÿr!ÿt#ÿs ÿu%ÿt$ÿs#ÿt%ÿs!ÿt"ÿv$ÿw'ÿw)ÿx*ÿ‹Ž‘ÿ¶¸¿ÿ£©ªÿ»¿ÂÿÁËÎÿ‡‡Žÿ¿ÃÊÿ¾ÁÄÿz}zÿ³±­ÿÒÙ×ÿ331ÿ•—•ÿ«¯¨ÿËÊÆÿtwtÿööôÿõøøÿ¨¬«ÿ‰ŠŒÿd_kÿÿÿÿ  ÿ ÿ ÿ  ÿ ÿ ÿÿ ÿ ÿÿÿeÿ•7Fÿu'ÿs'ÿu%ÿsÿs!ÿt"ÿtÿu#ÿu#ÿv'ÿx-ÿt&ÿr ÿs"ÿt&ÿs"ÿs$ÿt'ÿt%ÿu&ÿx ,ÿz"0ÿu'ÿ©«­ÿ¶»¼ÿ„†ÿ’Žÿ„}ÿRJGÿÇ¿¸ÿ[RJÿNF?ÿE=7ÿ@30ÿ6'&ÿ¥™™ÿ4*ÿeQLÿMF?ÿTI;ÿ^]WÿÿíïìÿéåáÿõõõÿRNSÿÿÿÿ ÿ ÿ ÿ ÿ  ÿ ÿ  ÿ  ÿÿ ÿYÿÿv"ÿr$ÿs"ÿs ÿrÿt$ÿy#+ÿv.ÿx!-ÿv(ÿqÿrÿrÿt"ÿu$ÿr!ÿs"ÿu(ÿu)ÿx.ÿx!/ÿu'ÿŸš™ÿ‹‰†ÿ„‚}ÿ~ynÿŒ„ÿOF?ÿbXRÿncdÿ”‘ÿ~{oÿNA=ÿqifÿ¶¶°ÿnghÿpbcÿpggÿzl^ÿmc]ÿreaÿf^eÿ$ÿ—“ÿMLIÿòñíÿuvÿ  ÿÿÿ ÿ ÿ ÿÿ  ÿ  ÿ  ÿÿ ÿNÿ{"ÿv ÿt#ÿs!ÿqÿs!ÿt$ÿqÿs!ÿs!ÿpÿrÿrÿrÿr!ÿq!ÿr ÿt'ÿs#ÿt$ÿu'ÿs&ÿ^\Xÿyspÿxspÿ`ZWÿ}wsÿrllÿ[WTÿ?ÿ@AEÿ>;:ÿ<=;ÿ@E<ÿ@<:ÿ>9:ÿC>>ÿ5><ÿ?@>ÿHEHÿCHIÿPOTÿYX_ÿLPXÿNFOÿedlÿz‚ÿoqpÿroqÿ_\aÿ\V[ÿ™•ÿha^ÿÿ ÿÿ ÿ ÿ ÿ ÿ ÿ ÿ%ÿhÿtÿrÿs ÿs!ÿs ÿrÿqÿqÿpÿpÿqÿpÿqÿqÿpÿpÿqÿ@?@ÿCBAÿBBBÿB@@ÿ@<>ÿ;75ÿ<51ÿ<55ÿ363ÿ7,-ÿ1))ÿ+!'ÿ"ÿ-ÿ&#$ÿ/$+ÿ;0)ÿ>39ÿ=80ÿ>;8ÿ@=;ÿ>98ÿ<74ÿ62-ÿ.+"ÿ!ÿÿ%ÿ%ÿ ÿ ÿ ÿ& ÿ' ÿ+ÿ ÿ ÿ ÿ%!ÿ3+)ÿ;:4ÿ<75ÿB@EÿGKIÿGEFÿåååÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ¿¿¿ÿ@@@ÿB>;ÿ<72ÿ60*ÿ2+%ÿ61)ÿIE9ÿaYYÿŠ‚ÿ–™’ÿª¤ ÿ¼³¶ÿÅ¿ÀÿȽÿ¾¼·ÿ¡™ÿ®£™ÿ£“ˆÿ˜‘‰ÿ{ogÿKD>ÿ5)!ÿ"ÿ&$ ÿ823ÿ=8;ÿ?;;ÿåååÿ¿¿¿ÿØ×Ùÿõðòÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿ§–šÿ ÿÿÿ ÿÿÿÿÿR )ÿÿ,Bÿÿ#?ÿÿ#<ÿÿ ?ÿÿ ?ÿÿ#Bÿÿ ?ÿÿ <ÿÿ ?ÿÿ ?ÿÿ @ÿÿ ?ÿÿ ?ÿÿ <ÿ¿¿¿ÿ@@@ÿ;6/ÿ63,ÿPKAÿ}zrÿ©© ÿÌÏÏÿÜàãÿðñòÿúûúÿýýýÿüüýÿýýüÿûýþÿüýþÿúüûÿùûûÿáçáÿº¾´ÿ¢ ÿ¤¡šÿŸ˜ÿ‹‡‚ÿFDAÿ(!ÿ4*%ÿ:2*ÿåååÿ¿¿¿ÿ¹¯³ÿ¹¹ÿûìôÿÿúÿÿÿÿÿÿÿÿÿÿÿýÿÿfV_ÿ ÿÿÿ  ÿÿÿÿ ÿ¬)<ÿÿ&Eÿÿ Bÿÿ ?ÿÿ#<ÿÿ ?ÿÿ ?ÿÿ#<ÿÿ <ÿÿ ?ÿÿ ?ÿÿ<ÿÿ <ÿÿ<ÿ¿¿¿ÿ@@@ÿRJFÿ‹‡€ÿÆÀ¾ÿ×ÕØÿìðóÿó÷÷ÿôùøÿëñïÿÈËÌÿpy|ÿfi_ÿZccÿVVOÿ1;/ÿhgiÿ §¦ÿÏÖØÿòõöÿõööÿââãÿ¥¤£ÿ“ÿ®©¦ÿ‰†ÿTMGÿ5+#ÿåååÿ¿¿¿ÿŸ•ÿ¸¯³ÿº´¿ÿêÞèÿÿþÿÿÿÿÿÿÿÿÿÿìàãÿ0%*ÿ  ÿ ÿ ÿ ÿÿÿÿ9 ÿÿ,Eÿÿ#Bÿÿ ?ÿÿ <ÿÿ <ÿÿ ?ÿÿ ?ÿÿ <ÿÿ<ÿÿ<ÿÿ<ÿÿ<ÿÿ<ÿ¿¿¿ÿ@@@ÿ¹º·ÿÚÞÞÿëðïÿßæäÿ¼¾¹ÿ‰ˆˆÿ[VNÿ., ÿ¤£œÿÕÓÍÿC9,ÿ‹ˆ|ÿC:3ÿÿÝÔÖÿ+$ÿ.&ÿ=5*ÿOSEÿ‹Œ†ÿÆÅÃÿÙÜÚÿ¶¸¶ÿœ™–ÿœ—•ÿˆ‚}ÿåååÿ¿¿¿ÿ˜}xÿ ÿ¨£¦ÿÍÃÉÿÎÅÊÿÿýÿÿÿÿÿÿÿÿÿÿŲ¸ÿ ÿ ÿÿ ÿÿÿÿÿ–)6ÿÿ)Eÿÿ#?ÿÿ ?ÿÿ <ÿÿ?ÿÿ<ÿÿ <ÿÿ<ÿÿ<ÿÿ<ÿÿ<ÿÿ ?ÿ¿¿¿ÿ@@@ÿëîðÿßãåÿ°³´ÿŸ¡ÿ°±ªÿÉÍÉÿÂýÿ+*%ÿLIDÿÈÈÌÿ ÿ!ÿÿÿ‘Žÿÿÿ;5(ÿRMBÿKG@ÿH?7ÿ`\VÿžžžÿÈÍÌÿ´²²ÿ‰‡†ÿåååÿ¿¿¿ÿ–}kÿœƒvÿ¦™ÿ© £ÿ²¦¯ÿÐÈÎÿÿ÷ÿÿÿÿÿÿÿÿÿÿ€„ÿÿÿÿ  ÿÿÿÿ ÿí0Bÿÿ&Eÿÿ#?ÿÿ <ÿÿ<ÿÿ9ÿÿ <ÿÿ<ÿÿ <ÿÿ<ÿÿ<ÿÿ ?ÿ¿¿¿ÿ@@@ÿ¨¬«ÿ¤¤ ÿ„rÿ´±ªÿ”’ÿ¸º·ÿ;77ÿÿÌ×Òÿÿ€~‚ÿÿ…~}ÿª¬­ÿÿÿÿ›—•ÿÿÿLI?ÿc^VÿNF>ÿ]WNÿ®¯©ÿ‹Š‡ÿåååÿ¿¿¿ÿÿÿÿÿº£ÿ’}qÿ™‡„ÿ¬ ©ÿÈÅÈÿÓÎÑÿíäêÿÿÿÿÿÿÿÿÿ?9?ÿ ÿ ÿÿÿÿÿÿz&,ÿÿ,Eÿÿ&?ÿÿ#?ÿÿ 9ÿÿ <ÿÿ 9ÿÿ<ÿÿ<ÿÿ9ÿÿ9ÿÿ<ÿ¿¿¿ÿ@@@ÿÿ—•ÿxujÿ’’‹ÿÿˆƒ„ÿVUVÿ ÿƒÿ ÿÔÑÊÿ ÿŠ€ÿcd]ÿÿC=9ÿmhfÿ‹ÿÿ!ÿ ÿ]\\ÿTQKÿUOGÿVTKÿa^Wÿåååÿ¿¿¿ÿÿÿÿÿÿÿÿÿ˵£ÿ‡tdÿ˜Š‡ÿ¸²¼ÿÎÈÎÿ×ÑÔÿÿ÷ÿÿÿÿÿÿȼ¿ÿ ÿ  ÿ ÿ ÿÿÿÿ)ÿÿ0Eÿÿ)Bÿÿ#?ÿÿ#<ÿÿ <ÿÿ <ÿÿ 9ÿÿ9ÿÿ9ÿÿ<ÿÿ9ÿ¿¿¿ÿ@@@ÿnlhÿie]ÿ531ÿÿDDBÿ†‚‚ÿÖÚÚÿäëçÿ&# ÿ¯²°ÿýüüÿùùúÿõõóÿ'#$ÿ ÿa\\ÿŠÿ ÿ& ÿÿÿOMQÿÿ<84ÿMICÿHD>ÿåååÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿœ„qÿŠtkÿœŠŠÿ©œ£ÿ¸¼ÿêáçÿÿóÿÿÿÿÿÿqdkÿÿ ÿ ÿ  ÿÿÿÿ²)<ÿÿ)Hÿÿ&Bÿÿ&?ÿÿ&Bÿÿ <ÿÿ <ÿÿ<ÿÿ 9ÿÿ<ÿÿ6ÿ¿¿¿ÿ@@@ÿtsqÿ¡ŸŸÿsrqÿ][Yÿ}ÿ®¬ªÿ¤žÿ¿ºÿž˜™ÿ{nnÿøøóÿš˜ÿìðïÿ’‰ŒÿééìÿúúüÿffoÿgedÿA?@ÿÿ,*,ÿYUUÿ ÿ$%#ÿÿb^Uÿåååÿ¿¿¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“wkÿwnÿ™‡‡ÿ¿¸¼ÿÈÂÂÿ×Ñáÿÿÿÿÿ÷ççÿÿ  ÿ ÿ  ÿÿÿÿX)ÿÿ0Eÿÿ,Bÿÿ&Eÿÿ)Eÿÿ&?ÿÿ#?ÿÿ<ÿÿ9ÿÿ6ÿÿ6ÿ¿¿¿ÿ@@@ÿÿOJKÿ¿¿½ÿ‚„ÿˆÿÂȾÿÅÁÂÿjfaÿàÛÚÿˆˆÿ÷öóÿéêãÿ°º²ÿˆ€yÿ«¦›ÿëêéÿŸœ—ÿïîîÿŒ‹“ÿ,+7ÿ<8?ÿKIHÿICDÿrnlÿZXUÿYWPÿåååÿ¿¿¿ÿÿðÞÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzdXÿ“}tÿ¦ £ÿ¼¿ÿÛÑÔÿúðóÿÿÿÿÿ¯£ ÿÿ ÿ ÿÿÿÿ ÿó,?ÿÿ)Bÿÿ&Bÿÿ&?ÿÿ&?ÿÿ&Bÿÿ#?ÿÿ9ÿÿ 9ÿÿ 9ÿ¿¿¿ÿ@@@ÿmkmÿLJIÿ’ÿ¯¬©ÿsmgÿ¤¢žÿÅÃÂÿÜÙÓÿ¦¡šÿ.*%ÿÒÍÇÿ¢¤ ÿojaÿµ°±ÿ”Œˆÿ¥¢¡ÿ¡™ÿ¶µ°ÿíïìÿzy|ÿSTYÿwusÿŽŽÿSQOÿÿÿåååÿ¿¿¿ÿÿúäÿÿÿçÿÿÿÿÿÿÿÿÿÿÿÿÿðÔÅÿ}kXÿ–‡€ÿ£œ£ÿµµÿíçêÿÿÿÿÿÿó÷ÿ, &ÿ  ÿÿ ÿÿÿÿ©,9ÿÿ)Eÿÿ,Bÿÿ)Bÿÿ&Bÿÿ,Bÿÿ&Bÿÿ ?ÿÿ <ÿÿ9ÿ¿¿¿ÿ@@@ÿ¢¢žÿ­¬¦ÿ}zvÿËËÆÿ×ÓÑÿ‰„ÿ²®¬ÿ¾¾¹ÿÕÒÍÿng`ÿŽŠÿކƒÿéçàÿÄüÿÎÍÈÿãàÛÿ¢ šÿŽŠ…ÿÝßÚÿ ž˜ÿ­¯¦ÿ”’‘ÿcadÿ  ÿ,)'ÿ;88ÿåååÿ¿¿¿ÿÿÿçÿŠ}nÿççêÿÿÿÿÿÿÿÿÿÿÿÿÿœ„qÿŠwkÿ–‡Šÿ²¬¯ÿÑÅÅÿÿóóÿÿÿÿÿ¯  ÿÿ ÿ ÿÿÿÿ^&,ÿÿ3Hÿÿ)Bÿÿ,Eÿÿ&?ÿÿ&<ÿÿ)?ÿÿ&<ÿÿ9ÿÿ6ÿ¿¿¿ÿ@@@ÿ†„zÿ›šŒÿlgcÿÌÉÄÿ¼º´ÿ²®­ÿ²®«ÿ•‘ÿïðëÿ¿¿¹ÿŒ„ÿb[Pÿ±®¢ÿ‡}{ÿññóÿóðæÿÍÉÃÿ©©¡ÿŸ—ÿ»º²ÿÎÍÆÿÊÇÂÿB@?ÿLJJÿ ›ÿ\WYÿåååÿ¿¿¿ÿRLEÿ„wqÿ6),ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzaXÿ}wÿ©£©ÿ¸¸ÿÔËÈÿðäçÿíääÿÿÿ  ÿÿÿÿ)ÿ÷9Lÿÿ)Eÿÿ)Eÿÿ)Bÿÿ#<ÿÿ 9ÿÿ <ÿÿ6ÿÿ3ÿ¿¿¿ÿ@@@ÿ“މÿhf[ÿmicÿº¹´ÿÅùÿ¹¸±ÿ›–’ÿáÝÜÿÕÑÒÿ²°¬ÿŸššÿ¥¢¡ÿ¯®©ÿ¤Ÿœÿµ®¬ÿÕÑËÿÌÌÆÿ™—ÿ”ˆÿÐÑÆÿ¶µ®ÿ·µ±ÿˆÿ­«ªÿPKNÿÿåååÿ¿¿¿ÿ[RLÿwntÿ„tÿú÷áÿÿÿÿÿÿÿÿÿÿÿÿÿ¬„ÿ„tkÿ–Šÿ¯©©ÿ×ÎÎÿóççÿÿóóÿaX[ÿÿÿ ÿÿÿÿ¯)3ÿÿ)?ÿÿ)?ÿÿ)Bÿÿ#<ÿÿ<ÿÿ 9ÿÿ6ÿÿ9ÿ¿¿¿ÿ@@@ÿ»¹µÿ§¦ ÿFB<ÿ¥£Ÿÿš™’ÿd^XÿOGDÿ¹´´ÿ¬¤¢ÿ¹¸²ÿljeÿ­­ªÿÚÙÖÿÍËÊÿÈÿÿ½¾¸ÿ¿¿¹ÿÁ¾¹ÿ½¹²ÿÌËÅÿ¿»·ÿÏÌÊÿÒÑÍÿ›™ÿ`\\ÿGCCÿåååÿ¿¿¿ÿÿOHHÿÿÿðÿÔȲÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿta[ÿ“‡€ÿ£™œÿµ¬¯ÿÛÎÑÿÿ÷úÿ˼¿ÿ ÿ ÿ ÿÿÿÿk &ÿÿ,?ÿÿ,Bÿÿ)Bÿÿ#<ÿÿ <ÿÿ <ÿÿ9ÿÿ3ÿ¿¿¿ÿ@@@ÿŽŒÿËÊÊÿ}{uÿ†‚|ÿÙÙÓÿŸž–ÿžš›ÿ»·µÿª¥žÿèãäÿ´´²ÿ×ÔÒÿÒÑÑÿ¦£¥ÿòòòÿöôòÿïîîÿéèçÿ¼»·ÿ«¥¡ÿÆÄÁÿ¯«¤ÿ ˜ÿRNHÿ0-,ÿ ÿåååÿ¿¿¿ÿRRRÿííçÿ×˸ÿðáÅÿÿÿúÿÿÿÿÿÿÿÿÿÿÿÿÿ}nÿ‡wkÿ–ŠŠÿ¯¦©ÿ¿¸ÿá×ÞÿÿÿÿÿBÿ+)%ÿ-+&ÿ-*%ÿ‹‹‡ÿ€}ÿhjhÿVXVÿµµµÿåååÿÄÄÄÿ™™™ÿ™™™ÿ™™™ÿÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿ]]]ÿ]]]ÿ]]]ÿ]]]ÿLLLÿ™™™ÿ™™™ÿLLLÿ¯¦ŠÿçÞÈÿ¸¬‡ÿÿÿÿÿÿÿÿÿÿÿÿÿβ£ÿ}kaÿ€}ÿ“–ÿ ™œÿ¸¼ÿçáäÿÿÿÿÿ‡‡ÿ ÿ)0Rÿ36Xÿ,3[ÿ&3Xÿ“)ÿÿ&ÿÿ)ÿÿ,ÿÿ0ÿÿ#<ÿÿ#9ÿ¿¿¿ÿ@@@ÿƒvÿvtiÿHD:ÿ;80ÿRQHÿA>7ÿÿ%"!ÿqrmÿˆÿŽŽƒÿ||sÿ‘ÿåååÿÄÄÄÿ™™™ÿ™™™ÿ™™™ÿÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿLLLÿLLLÿLLLÿLLLÿLLLÿ™™™ÿ™™™ÿLLLÿðêÑÿÿÿÿÿ²¦ÿÿÿÿÿÿÿÿÿÿÿÿÿ¬œÿ}h[ÿ–Їÿ£™ ÿ¯¬¬ÿ©¬¯ÿÈÅÅÿÿÿÿÿ²¦©ÿ ÿ#)Eÿ39^ÿ),Oÿ0?kÿ€ ÿÿ,ÿÿ#3ÿÿ,ÿÿ#6ÿÿ 3ÿÿ 3ÿ¿¿¿ÿ@@@ÿspiÿZVKÿ^[Pÿb^Wÿge\ÿJG?ÿÿÿ[[Zÿ……ÿŒŒ„ÿŽŒ…ÿ}|vÿåååÿÄÄÄÿ™™™ÿ™™™ÿ™™™ÿÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿLLLÿÿÿÿÿÿÿÿÿÿÿíÿÿÿÿÿÿÿÿÿÿÿÿÿµ ™ÿ„ndÿ “Šÿœ“ÿ¬¬¯ÿ²¯¬ÿÈÅËÿýóúÿäÑÎÿ#ÿ#)Bÿ?Hqÿ9Bnÿ)9^ÿn ÿ÷#0ÿú ,ÿú)ÿÿ#3ÿÿ 6ÿÿ&6ÿ¿¿¿ÿ@@@ÿRL=ÿXRCÿB<1ÿ;5/ÿ95/ÿC@<ÿHF>ÿ0,'ÿ30.ÿnnjÿ‚ƒ|ÿ‰Š‚ÿ‡‡€ÿåååÿÄÄÄÿ™™™ÿšššÿšššÿÿšššÿšššÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿLLLÿÔȲÿÛȵÿ×άÿÿÿÿÿÿÿÿÿÿÿÿÿ“€tÿtnÿ ““ÿÿ©©²ÿ¿µµÿ×Ñ×ÿýóóÿÿÿÿÿa[nÿ0ÿ &?ÿ39[ÿ&)Bÿk&)ÿÛ&3ÿê#3ÿó&6ÿú0<ÿð,9ÿÿBLÿ¿¿¿ÿ@@@ÿ—“ŠÿŽŠ„ÿtqkÿEC<ÿ;6/ÿ0*&ÿA?9ÿHF?ÿ(%!ÿ410ÿ]]Zÿyztÿ{|vÿåååÿÄÄÄÿ™™™ÿ›››ÿ›››ÿÿ›››ÿ›››ÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿLLLÿÿÿ÷ÿíÞÑÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿnXOÿ}tÿ™““ÿ¦£¦ÿ©£¬ÿµ¬¯ÿÿýÿÿÿÿÿÿÿÿÿÿnk‡ÿ9ÿ ÿ ?ÿ,3Eÿk9<ÿµ)0ÿÎ)3ÿÔ,9ÿÞ?EÿÛELÿÅEOÿ¿¿¿ÿ@@@ÿaYGÿ@:,ÿRNFÿ@<3ÿEA8ÿURHÿ95-ÿOKCÿKJBÿ,+&ÿ0/)ÿ753ÿ+**ÿåååÿÄÄÄÿ™™™ÿ™™™ÿ™™™ÿÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿLLLÿ÷ðáÿȸ£ÿÿÿÿÿÿÿÿÿÿÿÿÿÿúíÿwdXÿ–Š„ÿ£ £ÿ¯¬¬ÿ©¦©ÿµµÿÿúÿÿÿÿÿÿÿÿÿÿwt‡ÿÿ3ÿ)ÿ03Hÿkdÿ£OHÿËhdÿ×zwÿ¯dqÿnB[ÿH?aÿ¿¿¿ÿ@@@ÿŽ‹{ÿ‘ŽƒÿqofÿHC6ÿ]YOÿVTJÿKH<ÿWWMÿTRLÿ;81ÿPOGÿ<;6ÿ=<4ÿåååÿÄÄÄÿ™™™ÿ€€€ÿ€€€ÿ€€€ÿ]]]ÿ]]]ÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿÿ™™™ÿ™™™ÿ™™™ÿ™™™ÿLLLÿÿÿÿÿ “zÿÿÿÿÿÿÿÿÿÿÿÿÿμ¬ÿzhaÿ–Šÿ©¦£ÿµ©¬ÿ¯©¯ÿÎÅÂÿÿÿÿÿÿÿÿÿÿÿÿÿE?Rÿ #ÿ <ÿ 6ÿ03Rÿœ‡„ÿ©‡ÿt[aÿB3HÿR[Šÿak ÿ±&&&& &&0?±&%Button50@±% C@ A° B| AÀ  B| AÀ&0A± &%0B±0C±&%Convolve°&&&&&&&&&&&&&&%’0D±&0E±&&&& &&0F±& % TextField200G±% AP C B A¨  B A¨&0H± &%0I± 0J±&%0°&&&&&&&&&&&&&&%’° ° ’0K±& % TextField210L±% Bp C B A¨  B A¨&0M± &%0N± 0O±&%0°)&&&&&&&&&&&&&&%’° ° ’0P±& % TextField220Q±% BÖ C B A¨  B A¨&0R± &%0S± 0T±&%0°&&&&&&&&&&&&&&%’° ° ’0U±& % TextField230V±% C C B A¨  B A¨&0W± &%0X± 0Y±&%0°&&&&&&&&&&&&&&%’° ° ’0Z±& % TextField240[±% CI C B A¨  B A¨&0\± &%0]± 0^±&%0°&&&&&&&&&&&&&&%’° ° ’0_±& % TextField250`±% BŠ Bd A  Bd A&0a± &%0b± 0c±&%Offset:°&&&&&&&&&&&&&&%’° ° ’0d±& % GormNSPanel0e1GSWindowTemplate1GSClassSwapper0f±&% NSPanel1NSPanel1NSWindow% ?€ A C†€ C€& % Bú D$0g±% ?€ A C†€ C€  C†€ C€&0h± &0i±% BH B¦ Bh A  Bh A&0j± &%0k± 0l±&%Offset:°&&&&&&&&&&&&&&%’° ° ’°#0m±% Bâ B¦ B A¨  B A¨&0n± &%0o± 0p±&%0°)&&&&&&&&&&&&&&%’° ° ’0q±% C B¦ Bd A  Bd A&0r± &%0s± 0t±&%Scale:°)&&&&&&&&&&&&&&%’° ° ’°°9°@0u1NSBox% AP Bà Cr C!  Cr C!&0v± &0w±% @à @à Cd C  Cd C&0x± &0y±% Bæ B A¨  B A¨&0z± &%0{± 0|±&%0°)°|&&&&&&&&&&&&&&%’° ° ’0}±% B¼ Bæ B A¨  B A¨&0~±% C Bæ B A¨  B A¨&°}0± &%0€± 0±&%0°)&&&&&&&&&&&&&&%’° ° ’0‚± &%0ƒ± 0„±&%0°)&&&&&&&&&&&&&&%’° ° ’°~0…±% C< Bæ B A¨  B A¨&0†± &%0‡± 0ˆ±&%0°)&&&&&&&&&&&&&&%’° ° ’0‰±% B® B A¨  B A¨&0б &%0‹± 0Œ±&%0°&&&&&&&&&&&&&&%’° ° ’0±% B< B® B A¨  B A¨&0ޱ &%0± 0±&%0°)&&&&&&&&&&&&&&%’° ° ’0‘±% B¼ B® B A¨  B A¨&0’± &%0“± 0”±&%0°&&&&&&&&&&&&&&%’° ° ’0•±% C B® B A¨  B A¨&0–± &%0—± 0˜±&%0°&&&&&&&&&&&&&&%’° ° ’0™±% C< B® B A¨  B A¨&0š± &%0›± 0œ±&%0°&&&&&&&&&&&&&&%’° ° ’0±% Bh B A¨  B A¨&0ž± &%0Ÿ± 0 ±&%0°&&&&&&&&&&&&&&%’° ° ’0¡±% B< Bh B A¨  B A¨&0¢± &%0£± 0¤±&%0°)&&&&&&&&&&&&&&%’° ° ’0¥±% B¼ Bh B A¨  B A¨&0¦± &%0§± 0¨±&%1°&&&&&&&&&&&&&&%’° ° ’0©±% C Bh B A¨  B A¨&0ª± &%0«± 0¬±&%0°&&&&&&&&&&&&&&%’° ° ’0­±% C< Bh B A¨  B A¨&0®± &%0¯± 0°±&%0°&&&&&&&&&&&&&&%’° ° ’0±±% Aè B A¨  B A¨&0²± &%0³± 0´±&%0°&&&&&&&&&&&&&&%’° ° ’0µ±% B< Aè B A¨  B A¨&0¶± &%0·± 0¸±&%0°)&&&&&&&&&&&&&&%’° ° ’0¹±% B¼ Aè B A¨  B A¨&0º± &%0»± 0¼±&%0°&&&&&&&&&&&&&&%’° ° ’0½±% C Aè B A¨  B A¨&0¾± &%0¿± 0À±&%0°&&&&&&&&&&&&&&%’° ° ’0Á±% C< Aè B A¨  B A¨&0± &%0ñ 0ı&%0°&&&&&&&&&&&&&&%’° ° ’0ű%  B A¨  B A¨&0Ʊ &%0DZ 0ȱ&%0°&&&&&&&&&&&&&&%’° ° ’0ɱ% B<  B A¨  B A¨&0ʱ &%0˱ 0̱&%0°)&&&&&&&&&&&&&&%’° ° ’0ͱ% B¼  B A¨  B A¨&0α &%0ϱ 0б&%0°&&&&&&&&&&&&&&%’° ° ’0ѱ% C  B A¨  B A¨&0Ò± &%0Ó± 0Ô±&%0°&&&&&&&&&&&&&&%’° ° ’0Õ±% C<  B A¨  B A¨&0Ö± &%0×± 0ر&%0°&&&&&&&&&&&&&&%’° ° ’°0Ù±0Ú±&%Matrix°)&&&&&&&&&&&&&& @  @ %%0Û±° 0ܱ&% System0ݱ&% windowBackgroundColor0Þ±&%Window0ß±&%Convolve°ß ?€ B F@ F@%0à±0á±&% NSApplicationIcon&   Dð Dƒ@0â±&%MenuItem0ã±0ä±&%Hide0å±&%h&&ÿ%°4°62 hide:v12@0:4@8%0æ±& %  NSDeferred0ç± &0è±& % TextField260é±% BŽ B„ B` A¨  B` A¨&0ê± &%0ë± 0ì±&%0°)&&&&&&&&&&&&&&%’° ° ’0í±& % TextField270î±% B$ Bd A  Bd A&0ï± &%0ð± 0ñ±&%Scale:°)&&&&&&&&&&&&&&%’° ° ’0ò±& % TextField10ó±% Bh C‚€ B A¨  B A¨&0ô± &%0õ± 0ö±&%0°&&&&&&&&&&&&&&%’° ° ’0÷±& % TextField280ø±% BŽ B B` A¨  B` A¨&0ù± &%0ú± 0û±&%1°&&&&&&&&&&&&&&%’° ° ’0ü±& % TextField20ý±% BÖ C‚€ B A¨  B A¨&0þ±% C C‚€ B A¨  B A¨&°ý0ÿ± &%P± P±&%0°)&&&&&&&&&&&&&&%’° ° ’P± &%P± P±&%0°)&&&&&&&&&&&&&&%’° ° ’P±& % TextField29°yP±&%ButtonP±% A BÎ B¤ A€  B¤ A€&P± &%P ±P ±& % Auto scale°'°)&&&&&&&&&&&&&&%’P ±&P ±&°,&&& &&P ±& % TextField3°þP±& % TextField4P±% CI C‚€ B A¨  B A¨&P± &%P± P±&%0°)&&&&&&&&&&&&&&%’° ° ’P±& % TextField5P±% AP Ci B A¨  B A¨&P± &%P± P±&%0°&&&&&&&&&&&&&&%’° ° ’P±& % TextField40°¥P±& % TextField41°©P±& % TextField6P±% Bp Ci B A¨  B A¨&P± &%P± P±&%0°)&&&&&&&&&&&&&&%’° ° ’P±& % TextFieldP ±% AP C‚€ B A¨  B A¨&P!± &%P"± P#±&%0°)&&&&&&&&&&&&&&%’° ° ’P$±& % TextField42°­P%±& % TextField7P&±% BÖ Ci B A¨  B A¨&P'± &%P(± P)±&%0°&&&&&&&&&&&&&&%’° ° ’P*±&%View(0)°wP+±& % TextField43°±P,±& % TextField8P-±% C Ci B A¨  B A¨&P.± &%P/± P0±&%0°&&&&&&&&&&&&&&%’° ° ’P1±& % TextField44°µP2±& % TextField9P3±% CI Ci B A¨  B A¨&P4± &%P5± P6±&%0°&&&&&&&&&&&&&&%’° ° ’P7±& % TextField45°¹P8±& % TextField46°½P9±& % TextField47°ÁP:±& % TextField48°ÅP;±& % TextField49°ÉP<±& % TextField10P=±% AP CL B A¨  B A¨&P>± &%P?± P@±&%0°&&&&&&&&&&&&&&%’° ° ’PA±& % TextField11PB±% Bp CL B A¨  B A¨&PC± &%PD± PE±&%0°)&&&&&&&&&&&&&&%’° ° ’PF±& % TextField12PG±% BÖ CL B A¨  B A¨&PH± &%PI± PJ±&%1°&&&&&&&&&&&&&&%’° ° ’PK±& % TextField13PL±% C CL B A¨  B A¨&PM± &%PN± PO±&%0°&&&&&&&&&&&&&&%’° ° ’PP±& % TextField14PQ±% CI CL B A¨  B A¨&PR± &%PS± PT±&%0°&&&&&&&&&&&&&&%’° ° ’PU±&%Box°uPV±& % TextField15PW±% AP C/ B A¨  B A¨&PX± &%PY± PZ±&%0°&&&&&&&&&&&&&&%’° ° ’P[±& % TextField16P\±% Bp C/ B A¨  B A¨&P]± &%P^± P_±&%0°)&&&&&&&&&&&&&&%’° ° ’P`±& % TextField17Pa±% BÖ C/ B A¨  B A¨&Pb± &%Pc± Pd±&%0°&&&&&&&&&&&&&&%’° ° ’Pe±& % TextField18Pf±% C C/ B A¨  B A¨&Pg± &%Ph± Pi±&%0°&&&&&&&&&&&&&&%’° ° ’Pj±& % TextField19Pk±% CI C/ B A¨  B A¨&Pl± &%Pm± Pn±&%0°&&&&&&&&&&&&&&%’° ° ’Po±& % TextField30°}Pp±& % TextField31°~Pq±& % TextField32°…Pr±& % TextField33°‰Ps±& % TextField34°Pt±& % TextField35°‘Pu±& % TextField36°•Pv±& % TextField37°™Pw±& % TextField38°Px±&% GSCustomClassMapPy±&Pz±& % TextField39°¡P{±& % TextField50°ÍP|±& % TextField51°ÑP}±& % TextField52°ÕP~±& % TextField53°iP±&% NSOwnerP€±& % PRCConvolve55P±& % TextField54°mP‚±& % TextField55°qPƒ± &²2P„1NSNibConnectorÐP…±°üP†±&% NSOwnerP‡±Ð ІPˆ±ÐІP‰±ÐІPбÐІP‹±Ð%ІPŒ±Ð,ІP±Ð2ІPޱÐ<ІP±ÐAІP±ÐFІP‘±ÐKІP’±ÐPІP“±ÐVІP”±Ð[ІP•±Ð`ІP–±ÐeІP—±ÐjІP˜±°FІP™±°KІPš±°PІP›±°UІPœ±°ZІP±°_Pž±ÐPŸ±°èP ±°íІP¡±°÷ІP¢±°P£±°P¤1NSNibControlConnectorÐІP¥±& % convMatrix11:P¦±°üІP§±& % convMatrix13:P¨±°÷ІP©±& % scaleFactor:Pª±°èІP«±& % offsetFactor:P¬±ÐІP­±& % autoRange:P®±Ð ІP¯±& % convMatrix14:P°±ÐІP±±& % convMatrix15:P²±ÐІP³±& % convMatrix21:P´±ÐІPµ±& % convMatrix22:P¶±Ð%ІP·±& % convMatrix23:P¸±Ð,ІP¹±& % convMatrix24:Pº±Ð2ІP»±& % convMatrix25:P¼±Ð<ІP½±& % convMatrix31:P¾±ÐAІP¿±& % convMatrix32:PÀ±ÐFІPÁ±& % convMatrix33:P±ÐKІPñ& % convMatrix34:PıÐPІPű& % convMatrix35:PƱÐVІPDZ& % convMatrix41:PȱÐ[ІPɱ& % convMatrix42:PʱÐ`ІP˱& % convMatrix43:P̱ÐeІPͱ& % convMatrix44:PαÐjІPϱ& % convMatrix45:Pб°FІPѱ& % convMatrix51:PÒ±°KІPÓ±& % convMatrix52:PÔ±°PІPÕ±& % convMatrix53:PÖ±°UІP×±& % convMatrix54:Pر°ZІPÙ±& % convMatrix55:PÚ±°òІPÛ±°òІPܱ& % convMatrix12:Pݱ°dІPÞ±ÐÐ*Pß±ÐoÐ*Pà±ÐpÐ*Pá±ÐqÐ*Pâ±ÐrÐ*Pã±ÐsÐ*Pä±ÐtÐ*På±ÐuÐ*Pæ±ÐvÐ*Pç±ÐwÐ*Pè±ÐzÐ*Pé±ÐÐ*Pê±ÐÐ*Pë±Ð$Ð*Pì±Ð+Ð*Pí±Ð1Ð*Pî±Ð7Ð*Pï±Ð8Ð*Pð±Ð9Ð*Pñ±Ð:Ð*Pò±Ð;Ð*Pó±Ð{Ð*Pô±Ð|Ð*Põ±Ð}Ð*Pö±Ð~ІP÷±°"ІPø±ÐІPù±Ð‚ІPú±°Ð†Pû±°8ІPü±°?ІPý±°Ð*Pþ±ÐІPÿ±& % convMatrix11:P±°Ð†P±& % convMatrix12:P±ÐoІP±& % convMatrix13:P±ÐpІP±& % convMatrix14:P±ÐqІP±& % convMatrix15:P±ÐrІP ±& % convMatrix21:P ±ÐsІP ±& % convMatrix22:P ±ÐtІP ±& % convMatrix23:P±ÐuІP±& % convMatrix24:P±ÐvІP±& % convMatrix25:P±ÐwІP±& % convMatrix31:P±ÐzІP±& % convMatrix32:P±ÐІP±& % convMatrix33:P±ÐІP±& % convMatrix34:P±Ð$ІP±& % convMatrix35:P±Ð+ІP±& % convMatrix41:P±Ð1ІP±& % convMatrix42:P ±Ð7ІP!±& % convMatrix43:P"±Ð8ІP#±& % convMatrix44:P$±Ð9ІP%±& % convMatrix45:P&±Ð:ІP'±& % convMatrix51:P(±Ð;ІP)±& % convMatrix52:P*±Ð{ІP+±& % convMatrix53:P,±Ð|ІP-±& % convMatrix54:P.±Ð}ІP/±& % convMatrix55:P0±°"ІP1±& % autoRange:P2±ÐІP3±& % offsetFactor:P4±°Ð†P5±& % scaleFactor:P6±ÐUP71NSNibOutletConnectorІ°"P8±&%autoScaleCheckP9±Ð†°dP:±& % filterWindowP;±Ð†ÐP<±& % matField11P=±Ð†°P>±& % matField12P?±Ð†ÐoP@±& % matField13PA±Ð†ÐpPB±& % matField14PC±Ð†ÐqPD±& % matField15PE±Ð†ÐrPF±& % matField21PG±Ð†ÐsPH±& % matField22PI±Ð†ÐtPJ±& % matField23PK±Ð†ÐuPL±& % matField24PM±Ð†ÐvPN±& % matField25PO±Ð†ÐPP±& % matField33PQ±Ð†ÐPR±& % matField34PS±Ð†Ð$PT±& % matField35PU±Ð†ÐwPV±& % matField31PW±Ð†Ð+PX±& % matField41PY±Ð†ÐzPZ±& % matField32P[±Ð†Ð7P\±& % matField43P]±Ð†Ð8P^±& % matField44P_±Ð†Ð1P`±& % matField42Pa±Ð†Ð9Pb±& % matField45Pc±Ð†Ð;Pd±& % matField52Pe±Ð†Ð{Pf±& % matField53Pg±Ð†Ð:Ph±& % matField51Pi±Ð†Ð|Pj±& % matField54Pk±Ð†Ð}Pl±& % matField55Pm±Ð†ÐPn±& % offsetFieldPo±Ð†°Pp±& % scaleFieldPq±Ð*ÐUPr±°?ІPs±& % filterOK:Pt±°8ІPu±& % filterCancel:Pv±Ð°Pw±& % nextKeyViewPx±°ÐoÐwPy±ÐoÐpÐwPz±ÐpÐqÐwP{±ÐzÐÐwP|±ÐwÐzÐwP}±ÐÐÐwP~±ÐqÐrÐwP±ÐvÐwÐwP€±Ð$Ð+ÐwP±Ð9Ð:ÐwP‚±Ð|Ð}ÐwPƒ±Ð{Ð|ÐwP„±Ð;Ð{ÐwP…±Ð:Ð;ÐwP†±ÐrÐsÐwP‡±ÐsÐtÐwPˆ±ÐtÐuÐwP‰±ÐuÐvÐwPбÐ+Ð1ÐwP‹±Ð1Ð7ÐwPŒ±Ð7Ð8ÐwP±Ð8Ð9ÐwPޱÐÐ$P±& % nextKeyViewP1 NSMutableSet1NSSet&°ePRICE-1.3.0/Resources/Crop.gorm004075500017500000012000000000001245331715400154225ustar00multixusersPRICE-1.3.0/Resources/Crop.gorm/data.classes010064400017500000012000000015051237447536000177750ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "changeBottom:", "changeLeft:", "changeRight:", "changeTop:", "cropCancel:", "cropOK:", "filterCancel:", "filterOK:", "parametersChanged:", "resetValues:", "showFilter:" ); Super = NSObject; }; PRCCrop = { Actions = ( "changeTop:", "changeBottom:", "changeLeft:", "changeRight:", "resetValues:" ); Outlets = ( cropWindow, topField, bottomField, leftField, rightField, widthField, heightField ); Super = PRFilterController; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/Crop.gorm/data.info010064400017500000012000000002701237447536000172710ustar00multixusersGNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed StreamPRICE-1.3.0/Resources/Crop.gorm/objects.gorm010064400017500000012000000133241237461165500200250ustar00multixusersGNUstep archive000f4240:0000001d:0000009a:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C~ Cb& % C! D#01 NSView% ?€ A C~ Cb  C~ Cb&01 NSMutableArray1 NSArray&01NSButton1 NSControl% C1 A€ B` AÀ  B` AÀ&0± &%0 1 NSButtonCell1 NSActionCell1NSCell0 ±&%Crop0 1NSFont%&&&&&&&&&&&&&&%’0 ±&0 ±&&&& &&0±% BÜ A€ B` AÀ  B` AÀ&0± &%0±0±&%Cancel° &&&&&&&&&&&&&&%’0±&0±&&&& &&01 NSTextField% B† B‚ B\ A¨  B\ A¨&0± &%01NSTextFieldCell0±&%Text° &&&&&&&& &&&&&&%’01NSColor0±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% C1 B‚ B` A¨  B` A¨&0± &%0 ±0!±&%Text° &&&&&&&& &&&&&&%’°°’0"±% B‚ Bx A  Bx A&0#± &%0$±0%±&%width:0&±% A@&&&&&&&& &&&&&&%’°°’0'±% Bô B‚ BT A  BT A&0(± &%0)±0*±&%height:°&&&&&&&&& &&&&&&%’°°’0+±% A¸ A€ B` AÀ  B` AÀ&0,± &%0-±0.±&%Reset° &&&&&&&&&&&&&&%’0/±&00±&&&& &&011NSBox% Aø Bì C@ BÄ  C@ BÄ&02± &03± % @à @à C2 B’  C2 B’&04± &05±% Bt BP B` A¨  B` A¨&06± &%07±08±&%0° °8&&&&&&&& &&&&&&%’°°’09±% AÐ B` A¨  B` A¨&0:± &%0;±0<±&%0° °<&&&&&&&& &&&&&&%’°°’0=±% Bt  B` A¨  B` A¨&0>± &%0?±0@±&%0° &&&&&&&& &&&&&&%’°°’0A±% Bô AÐ B` A¨  B` A¨&0B± &%0C±0D±&%0° &&&&&&&& &&&&&&%’°°’0E±0F±&%Margins° &&&&&&&&&&&&&& @  @ %%0G±°0H±&% System0I±&% windowBackgroundColor0J±&%Window0K±&%Crop°K ¿€ Áø F8 FÀ%&   D€ D@0L± &0M± &0N1NSMutableDictionary1 NSDictionary&0O±& % TextField6°"0P±&%Button1°0Q±&%TextFieldCell(3)°C0R±&%View(0)°30S±&%TextFieldCell(0)°70T±& % TextField1°=0U±&% NSOwner0V±&%PRCCrop0W±& % TextField3°A0X±& % TextField5°0Y±&%TextFieldCell(1)°;0Z±& % TextField°50[±&%Button2°+0\±& % TextField7°'0]±&%Button°0^±& % TextField2°90_±&%TextFieldCell(2)°?0`±&%Box°10a±& % TextField4°0b±& % GormNSPanel°0c± &%%0d1NSNibConnector°b0e±&% NSOwner0f±°Z°R0g±°T°R0h±°^°R0i±°W°R0j±°]0k±°P0l±°a0m±°X0n±°O0o±°\0p1NSNibOutletConnector°e°Z0q±&%topField0r±°e°T0s±& % bottomField0t±°e°^0u±& % leftField0v±°e°W0w±& % rightField0x±°e°a0y±& % widthField0z±°e°X0{±& % heightField0|1NSNibControlConnector°Z°e0}±& % changeTop:0~±°T°e0±& % changeBottom:0€±°^°e0±& % changeLeft:0‚±°W°e0ƒ±& % changeRight:0„±°e°b0…1NSMutableString& % cropWindow0†±°[0‡±°[°e0ˆ±& % resetValues:0‰±°`0б°W°T0‹±& % nextKeyView0Œ±°T°^°‹0±°Z°^0ޱ& % nextKeyView0±°^°W°Ž0±°a°X°Ž0‘±°R°`0’±°S°Z0“±°Y°^0”±°_°T0•±°Q°W0–±°]°e0—±& % filterOK:0˜±°P°e0™±& % filterCancel:0š±&PRICE-1.3.0/Resources/CumulHistogram.gorm004075500017500000012000000000001245331715400174625ustar00multixusersPRICE-1.3.0/Resources/CumulHistogram.gorm/data.classes010064400017500000012000000073271042266220300220270ustar00multixusers{ FirstResponder = { Actions = ( "activateContextHelpMode:", "alignCenter:", "alignJustified:", "alignLeft:", "alignRight:", "arrangeInFront:", "cancel:", "capitalizeWord:", "changeColor:", "changeFont:", "checkSpelling:", "close:", "complete:", "copy:", "copyFont:", "copyRuler:", "cut:", "delete:", "deleteBackward:", "deleteForward:", "deleteToBeginningOfLine:", "deleteToBeginningOfParagraph:", "deleteToEndOfLine:", "deleteToEndOfParagraph:", "deleteToMark:", "deleteWordBackward:", "deleteWordForward:", "deminiaturize:", "deselectAll:", "fax:", "hide:", "hideOtherApplications:", "indent:", "loosenKerning:", "lowerBaseline:", "lowercaseWord:", "makeKeyAndOrderFront:", "miniaturize:", "miniaturizeAll:", "moveBackward:", "moveBackwardAndModifySelection:", "moveDown:", "moveDownAndModifySelection:", "moveForward:", "moveForwardAndModifySelection:", "moveLeft:", "moveRight:", "moveToBeginningOfDocument:", "moveToBeginningOfLine:", "moveToBeginningOfParagraph:", "moveToEndOfDocument:", "moveToEndOfLine:", "moveToEndOfParagraph:", "moveUp:", "moveUpAndModifySelection:", "moveWordBackward:", "moveWordBackwardAndModifySelection:", "moveWordForward:", "moveWordForwardAndModifySelection:", "newDocument:", "ok:", "openDocument:", "orderBack:", "orderFront:", "orderFrontColorPanel:", "orderFrontDataLinkPanel:", "orderFrontFontPanel:", "orderFrontHelpPanel:", "orderFrontStandardAboutPanel:", "orderFrontStandardInfoPanel:", "orderOut:", "pageDown:", "pageUp:", "paste:", "pasteAsPlainText:", "pasteAsRichText:", "pasteFont:", "pasteRuler:", "performClose:", "performMiniaturize:", "performZoom:", "print:", "raiseBaseline:", "revertDocumentToSaved:", "runPageLayout:", "runToolbarCustomizationPalette:", "saveAllDocuments:", "saveDocument:", "saveDocumentAs:", "saveDocumentTo:", "scrollLineDown:", "scrollLineUp:", "scrollPageDown:", "scrollPageUp:", "scrollViaScroller:", "selectAll:", "selectLine:", "selectNextKeyView:", "selectParagraph:", "selectPreviousKeyView:", "selectText:", "selectText:", "selectToMark:", "selectWord:", "showContextHelp:", "showGuessPanel:", "showHelp:", "showWindow:", "stop:", "subscript:", "superscript:", "swapWithMark:", "takeDoubleValueFrom:", "takeFloatValueFrom:", "takeIntValueFrom:", "takeObjectValueFrom:", "takeStringValueFrom:", "terminate:", "tightenKerning:", "toggle:", "toggleContinuousSpellChecking:", "toggleRuler:", "toggleToolbarShown:", "toggleTraditionalCharacterShape:", "transpose:", "transposeWords:", "turnOffKerning:", "turnOffLigatures:", "underline:", "unhide:", "unhideAllApplications:", "unscript:", "uppercaseWord:", "useAllLigatures:", "useStandardKerning:", "useStandardLigatures:", "yank:", "zoom:", "showHistogram:" ); Super = NSObject; }; PRCHistogram = { Actions = ( "showHistogram:" ); Outlets = ( histoWindow, histoView ); Super = NSObject; }; PRCumHisto = { Actions = ( ); Outlets = ( ); Super = PRHistogram; }; PRHisto = { Actions = ( ); Outlets = ( ); Super = PRHistogram; }; PRHistogram = { Actions = ( ); Outlets = ( ); Super = NSView; }; }PRICE-1.3.0/Resources/CumulHistogram.gorm/objects.gorm010064400017500000012000000021731042266220300220500ustar00multixusersGNUstep archive00002a94:00000011:0000001d:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0±& % PRCHistogram0±&%GSCustomClassMap0±&0±&%GormCustomView01 GSCustomView1 GSNibItem0 ±& % PRCumHisto A @@ C€ CH&0 ±& % GormNSPanel0 1NSPanel1 NSWindow1 NSResponder%  C‰ CU& % C™ DÀ0 1 NSView%  C‰ CU  C‰ CU&0 1 NSMutableArray1 NSArray&°01NSColor0±&%NSNamedColorSpace0±&%System0±&%windowBackgroundColor0±&%Window0±&%Cumulative Histogram° ?€ ?€ F@ F@%01NSImage0±&%NSApplicationIcon0± &01NSNibConnector° 0±&%NSOwner0±°01NSNibOutletConnector°° 0±& % histoWindow0±°°0±& % histoViewPRICE-1.3.0/Resources/Curves.gorm004075500017500000012000000000001245331715400157665ustar00multixusersPRICE-1.3.0/Resources/Curves.gorm/data.classes010064400017500000012000000014641165703450000203330ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "curvesReset:", "filterCancel:", "filterOK:", "parametersChanged:", "setBlackPoint:", "setWhitePoint:", "showFilter:" ); Super = NSObject; }; PRCCurves = { Actions = ( "curvesReset:", "setBlackPoint:", "setWhitePoint:" ); Outlets = ( curvesWindow, curvesView, blackPointField, whitePointField, blackPointStepper, whitePointStepper ); Super = PRFilterController; }; PRCurvesView = { Actions = ( ); Outlets = ( ); Super = NSView; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/Curves.gorm/data.info010064400017500000012000000002701165703450000176230ustar00multixusersGNUstep archive0000300d:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.3.0/Resources/Curves.gorm/objects.gorm010064400017500000012000000112351165706030000203540ustar00multixusersGNUstep archive0000300d:00000023:00000078:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C½ C©& % C D@01 NSView% ?€ A C½ C©  C½ C©&01 NSMutableArray1 NSArray&01NSBox% A B< C‡ CŒ€  C‡ CŒ€&0± &0 ± % @à @à C€ C€  C€ C€&0 ± &0 1 GSCustomView1 GSNibItem0 ±& % PRCurvesView  C€ C€&0 1NSCell0±& % Functions01NSFont%°&&&&&&&&&&&&&& @  @ %%01 NSTextField1 NSControl% C” C‘€ B$ A¨  B$ A¨&0± &%01NSTextFieldCell1 NSActionCell0±&%0°°&&&&&&&& &&&&&&%’01NSColor0±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% C” C€ B$ A¨  B$ A¨&0± &%0±0±&%255°°&&&&&&&& &&&&&&%’°°’01 NSStepper% C« C€ A€ A¸  A€ A¸&0± &%0 1 NSStepperCell0!±&%00"1NSNumber1NSValuei%&&&&&&&&&&&&&&%’ @oÀ ?ð%%0#±% C« C€€ A€ A¸  A€ A¸&0$± &%0%±0&±&%2550'±d @oà&&&&&&&&&&&&&&%’ @oà ?ð ?ð%%0(1NSButton% A A0 B` AÀ  B` AÀ&0)± &%0*1 NSButtonCell0+±&%Reset°&&&&&&&&&&&&&&%’0,±&0-±&&&& &&0.±% C^ A0 Bh AÀ  Bh AÀ&0/± &%00±01±&%Cancel°&&&&&&&&&&&&&&%’02±&03±&&&& &&04±% C” A0 B` AÀ  B` AÀ&05± &%06±07±&%Apply°&&&&&&&&&&&&&&%’08±&09±&&&& &&0:±°0;±&% System0<±&% windowBackgroundColor0=±&%Window0>±&%Curves°> @@ B F@ F@%&   D  D€0?± &0@± &0A1NSMutableDictionary1 NSDictionary& 0B±&% NSOwner0C±& % PRCCurves0D±&%View(1)° 0E±&%Box(0)°0F±& % TextField(1)°0G±& % Button(1)°.0H±&%Panel(0)°0I±& % Stepper(1)°#0J±&%View(0)°0K±& % CustomView(0)° 0L±& % TextField(0)°0M±& % Button(0)°(0N±& % Stepper(0)°0O±& % Button(2)°40P± &0Q1 NSNibConnector°H0R±&% NSOwner0S± °J°H0T1!NSNibOutletConnector°R°H0U±& % curvesWindow0V± °K°E0W±!°R°K0X±& % curvesView0Y± °E°J0Z± °D°E0[± °L°J0\± °F°J0]± °N°J0^± °I°J0_1"NSNibControlConnector°L°R0`±&%setBlackPoint:0a±"°F°R0b±&%setWhitePoint:0c±!°R°L0d±&%blackPointField0e±!°R°F0f±&%whitePointField0g± °M°J0h± °G°J0i± °O°J0j±"°M°R0k±& % curvesReset:0l±"°G°R0m±& % filterCancel:0n±"°O°R0o±& % filterOK:0p±"°N°R0q1#NSMutableString&%setBlackPoint:0r±!°R°I0s±&%whitePointStepper0t±"°I°R0u±#&%setWhitePoint:0v±!°R°N0w±#&%blackPointStepper0x±&PRICE-1.3.0/Resources/CustTraceEdges.gorm004075500017500000012000000000001245331715400173645ustar00multixusersPRICE-1.3.0/Resources/CustTraceEdges.gorm/data.classes010064400017500000012000000023731137072652100217340ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "changeSize1:", "changeSize2:", "changeSize3:", "changeThreshold:", "edgeCancel:", "edgeOK:", "enablePane1:", "enablePane2:", "enablePane3:", "filterCancel:", "filterOK:", "filterTypeToggle:", "parametersChanged:", "showEdges:", "showFilter:", "thresholdToggle:" ); Super = NSObject; }; PRCCustTraceEdges = { Actions = ( "changeSize1:", "changeSize2:", "changeSize3:", "enablePane1:", "enablePane2:", "enablePane3:", "changeThreshold:" ); Outlets = ( edgeWindow, thresholdSlider, zeroCrossCheck, thresholdField, filterType, enableCheck1, separableCheck1, formSelect1, sizeField1, sizeSlider1, enableCheck2, separableCheck2, formSelect2, sizeField2, sizeSlider2, enableCheck3, separableCheck3, formSelect3, sizeField3, sizeSlider3 ); Super = PRFilterController; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/CustTraceEdges.gorm/data.info010064400017500000012000000002701237461165500212320ustar00multixusersGNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed StreamPRICE-1.3.0/Resources/CustTraceEdges.gorm/objects.gorm010064400017500000012000000377121237461165500217760ustar00multixusersGNUstep archive000f4240:00000028:000001b9:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C± C_& % B° D€01 NSView% ?€ A C± C_  C± C_&01 NSMutableArray1 NSArray&01NSButton1 NSControl% C‰ A0 B` AÀ  B` AÀ&0± &%0 1 NSButtonCell1 NSActionCell1NSCell0 ±&%Trace0 1NSFont%&&&&&&&&&&&&&&%’0 ±&0 ±&&&& &&0±% CI A0 B` AÀ  B` AÀ&0± &%0±0±&%Cancel° &&&&&&&&&&&&&&%’0±&0±&&&& &&01 NSTabView% A B4 C¦€ C(  C¦€ C(&0± &0± % ?€ A C¥ C  C¥ C&01 NSPopUpButton% Aˆ BÖ C A   C A &01 NSTextField% C… Bh BP A¨  BP A¨&0±% Aˆ Bl B¦ A  B¦ A&01NSSlider% BÒ Bx C A€  C A€&0±% Aˆ AÀ Bö A€  Bö A€&°°0± &%0±0±& % Zero Cross01NSImage0 1NSMutableString&%GSSwitch° &&&&&&&&&&&&&&%’0!±&0"±&0#±0$±&%GSSwitchSelected&&& &&°0%± &%0&1 NSSliderCell0'±&%0.2° 0(1NSNumber1NSValued ?É™™™™™š&&&&&&&&&&&&&&%’ ?€ ¿€%0)1NSTextFieldCell0*±&° &&&&&&&& &&&&&&%’0+1NSColor0,±&% NSNamedColorSpace0-±&%System0.±&%textBackgroundColor0/±°,00±&% System01±&% controlTextColor02±03±&04±05±&%common_SliderHoriz° &&&&&&&&&&&&&&% %°06± &%07±08±& % Threshold:09±% A@&&&&&&&& &&&&&&%’°+0:±°,°-0;±& % textColor’°0<± &%0=±0>±&%0.2° &&&&&&&& &&&&&&%’°+°:’°0?± &%0@1NSPopUpButtonCell1 NSMenuItemCell0A±&° &&&&&&&&0B1!NSMenu0C±&0D± &  0E1" NSMenuItem0F±&%Pixel Difference0G±&&&ÿ%0H±0I±& %  common_Nibble’%0J±"0K±&%Separated PixDIff°G&&ÿ%’%0L±"0M±&%Roberts°G&&ÿ%’%0N±"0O±&%Prewitt0P±&&&ÿ%’%0Q±"0R±&%Sobel0S±&&&ÿ%’%0T±"0U±&%Abdou0V±&&&ÿ%’%0W±"0X±& % Laplacian (4)0Y±&&&ÿ%’%0Z±"0[±& % Laplacian (8)0\±&&&ÿ%’%0]±"0^±&%Laplacian (Prewitt)0_±&&&ÿ%’% &&&&&&%’0`±&0a±&&&& &&°E°B°E%%%%%°0b± &°°°°°0c± &0d1# NSTabViewItem0e±&%item 10f±&%Tracing°%°°0g±#0h±&%item 20i±&%First0j± % ? ?€ C¥€ C€  C¥€ C€&0k± &0l±% Aˆ Bî B˜ A€  B˜ A€&0m± &%0n±0o±&%Enabled°° &&&&&&&&&&&&&&%’0p±&0q±&°#&&& &&0r±% A B¬ Bl A  Bl A&0s± &%0t±0u±&%Size:°9&&&&&&&& &&&&&&%’°+°:’0v±% B” B¬ BÞ A€  BÞ A€&0w± &%0x±0y±&%1° 0z±d ?ð&&&&&&&&&&&&&&%’ ?€ @À ¿€%0{±0|±&° &&&&&&&& &&&&&&%’°+°/0}±0~±&°4° &&&&&&&&&&&&&&%%0±% Ca B¬ B` A¨  B` A¨&0€± &%0±0‚±&%3° &&&&&&&& &&&&&&%’°+°:’0ƒ±% A Að Bl A  Bl A&0„± &%0…±0†±&%Form:°9&&&&&&&& &&&&&&%’°+°:’0‡±% B” Að B² A   B² A &0ˆ± &%0‰±0б&° &&&&&&&&0‹±!0Œ±&0± &0ޱ"0±& % Horizontal0±&&&ÿ%°H’%0‘±"0’±&%Vertical°&&ÿ%’%0“±"0”±&%Cross°&&ÿ%’%0•±"0–±&%Box0—±&&&ÿ%’%&&&&&&%’0˜±&0™±&&&& &&°Ž°‹°Ž%%%%%0š±% Ca Að BÈ A€  BÈ A€&0›± &%0œ±0±& % Separable°° &&&&&&&&&&&&&&%’0ž±&0Ÿ±&°#&&& &&%°0 ±#0¡±&%30¢±&%Second0£± % ? ?€ C¥€ C€  C¥€ C€&0¤± &0¥±% Aˆ Bî B˜ A€  B˜ A€&0¦± &%0§±0¨±&%Enabled°° &&&&&&&&&&&&&&%’0©±&0ª±&°#&&& &&0«±% A B¬ Bl A  Bl A&0¬± &%0­±0®±&%Size:°9&&&&&&&& &&&&&&%’°+°:’0¯±% B” B¬ BÞ A€  BÞ A€&0°± &%0±±0²±&%1° 0³±d ?ð&&&&&&&&&&&&&&%’ ?€ @À ¿€%0´±0µ±&° &&&&&&&& &&&&&&%’°+°/0¶±0·±&°4° &&&&&&&&&&&&&&%%0¸±% Ca B¬ B` A¨  B` A¨&0¹± &%0º±0»±&%3° &&&&&&&& &&&&&&%’°+°:’0¼±% A Að Bl A  Bl A&0½± &%0¾±0¿±&%Form:°9&&&&&&&& &&&&&&%’°+°:’0À±% B” Að B² A   B² A &0Á± &%0±0ñ&° &&&&&&&&0ı!0ű&0Ʊ &0DZ"0ȱ& % Horizontal0ɱ&&&ÿ%°H’%0ʱ"0˱&%Vertical°É&&ÿ%’%0̱"0ͱ&%Cross°É&&ÿ%’%0α"0ϱ&%Box0б&&&ÿ%’%&&&&&&%’0ѱ&0Ò±&&&& &&°Ç°Ä°Ç%%%%%0Ó±% Ca Að BÈ A€  BÈ A€&0Ô± &%0Õ±0Ö±& % Separable°° &&&&&&&&&&&&&&%’0×±&0ر&°#&&& &&%°0Ù±#0Ú±&%40Û±&%Third0ܱ % ? ?€ C¥€ C€  C¥€ C€&0ݱ &0Þ±% Aˆ Bî B˜ A€  B˜ A€&0ß± &%0à±0á±&%Enabled°° &&&&&&&&&&&&&&%’0â±&0ã±&°#&&& &&0ä±% A B¬ Bl A  Bl A&0å± &%0æ±0ç±&%Size:°9&&&&&&&& &&&&&&%’°+°:’0è±% B” B¬ BÞ A€  BÞ A€&0é± &%0ê±0ë±&%1° 0ì±d ?ð&&&&&&&&&&&&&&%’ ?€ @À ¿€%0í±0î±&° &&&&&&&& &&&&&&%’°+°/0ï±0ð±&°4° &&&&&&&&&&&&&&%%0ñ±% Ca B¬ B` A¨  B` A¨&0ò± &%0ó±0ô±&%3° &&&&&&&& &&&&&&%’°+°:’0õ±% A B Bl A  Bl A&0ö± &%0÷±0ø±&%Form:°9&&&&&&&& &&&&&&%’°+°:’0ù±% B” Að B² A   B² A &0ú± &%0û±0ü±&° &&&&&&&&0ý±!0þ±&0ÿ± &P±"P±& % HorizontalP±&&&ÿ%°H’%P±"P±&%VerticalÐ&&ÿ%’%P±"P±&%CrossÐ&&ÿ%’%P±"P±&%BoxP ±&&&ÿ%’%&&&&&&%’P ±&P ±&&&& &&аýÐ%%%%%P ±% Ca Að BÈ A€  BÈ A€&P ± &%P±P±& % Separable°° &&&&&&&&&&&&&&%’P±&P±&°#&&& &&%°° %&P±°,°0P±&% windowBackgroundColorP±&%WindowP±&%Custom Trace EdgesÐ ¿€ Á F8 FÀ%P±P±&% NSApplicationIcon&   D€ D@P± &P± &P1$NSMutableDictionary1% NSDictionary&-P±&% NSOwnerP±&%PRCCustTraceEdgesP±&%Button5°šP±&%GormNSPopUpButton1°‡P±&%Button4°lP ±& % TextField9°¸P!±&%Button°P"±&%MenuItem°ŽP#±& % TextField8°«P$±&%Button3°P%±&%Slider4°èP&±&%Button1°P'±&%Slider3°¯P(±&%TabView°P)±& % TextField4°ƒP*±& % TextField3°P+±&%Slider1°vP,±& % MenuItem9°TP-±& % TextField2°rP.±& % MenuItem8°QP/±& % TextField1°P0±& % TextField13°õP1±& % MenuItem7°NP2±& % GormNSPanel°P3±& % MenuItem6°LP4±& % TextField12°ñP5±&%Slider°P6±& % MenuItem5°JP7±& % TextField11°äP8±& % MenuItem4°EP9±& % TextField10°¼P:±& % MenuItem12°]P;±&%Button9°ÓP<±& % MenuItem3°•P=±&%GormNSPopUpButton°P>±&%Button11Ð P?±& % MenuItem11°ZP@±&%Button8°¥PA±& % MenuItem2°“PB±&%Button10°ÞPC±&%GormNSPopUpButton4°ùPD±& % MenuItem10°WPE±&%View(0)°PF±& % TextField°PG±& % MenuItem1°‘PH±&%GormNSPopUpButton3°ÀPI± &QQPJ1&NSNibConnectorÐ2ÐPK±&Ð!PL±&Ð&PM±&Ð(PN±&Ð=ÐEPO±&Ð$ÐEPP±&ÐFÐEPQ±&Ð5ÐEPR±&Ð/ÐEPS±&ÐPT±&Ð-PU±&Ð+PV±&Ð*PW±&Ð)PX±&ÐPY±&ÐPZ±&Ð"P[±&ÐGP\±&ÐAP]±&ÐÐP±'ÐÐ@Pޱ& % enableCheck2P±'ÐÐ'P±& % sizeSlider2P‘±'ÐÐHP’±& % formSelect2P“±'ÐÐ;P”±&%separableCheck2P•±'ÐÐ P–±& % sizeField2P—±(Ð'ÐP˜±& % changeSize2:P™±(Ð@ÐPš±& % enablePane2:P›±(Ð%ÐPœ±& % changeSize3:P±(ÐBÐPž±& % enablePane3:PŸ±'ÐÐBP ±& % enableCheck3P¡±'ÐÐ%P¢±& % sizeSlider3P£±'ÐÐCP¤±& % formSelect3P¥±'ÐÐ>P¦±&%separableCheck3P§±'ÐÐ4P¨±& % sizeField3P©±&ÐEÐ(Pª±(Ð!ÐP«±& % filterOK:P¬±(Ð&ÐP­±& % filterCancel:P®±(Ð$ÐP¯±&%parametersChanged:P°±(Ð=ÐЯP±±(ÐÐЯP²±(ÐÐЯP³±(ÐÐP´±& % enablePane1:Pµ±(ÐHÐЯP¶±(Ð;ÐЯP·±(Ð>ÐЯP¸±(ÐCÐЯP¹±$&PRICE-1.3.0/Resources/DFTHighPass.gorm004075500017500000012000000000001245331715400165635ustar00multixusersPRICE-1.3.0/Resources/DFTHighPass.gorm/data.classes010064400017500000012000000016411137057112200211230ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "changePassBand:", "changeStopBand:", "dftHPAutoRange:", "dftHPCancel:", "dftHPOK:", "dftLPCancel:", "dftLPOK:", "filterCancel:", "filterOK:", "orderFrontFontPanel:", "parametersChanged:", "showDFTHP:", "showDFTLP:", "showFilter:" ); Super = NSObject; }; PRCDFTHighPass = { Actions = ( "dftHPAutoRange:", "changeStopBand:", "changePassBand:" ); Outlets = ( filterWindow, autoRangeCheck, passBandSlider, stopBandSlider, passBandVal, passBandValPi, stopBandVal, stopBandValPi ); Super = PRFilterController; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/DFTHighPass.gorm/objects.gorm010064400017500000012000000232571137057112200211610ustar00multixusersGNUstep archive00002e7f:00000022:000000e9:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A C C& % C D@01 NSView% ?€ A C C  C C&01 NSMutableArray1NSArray&  01NSButton1 NSControl% CT Aˆ B` AÀ  B` AÀ&0± &%0 1 NSButtonCell1 NSActionCell1NSCell0 ±&%OK0 1NSFont%&&&&&&&&&&&&&&%’0 ±&0 ±&&&& &&0±% C Aˆ B` AÀ  B` AÀ&0± &%0±0±&%Cancel° &&&&&&&&&&&&&&%’0±&0±&&&& &&01NSSlider% BÈ Bð C( A€  C( A€&0± &%01 NSSliderCell0±&%0.5° 01NSNumber1NSValued ?à&&&&&&&&&&&&&&%’ ?€ ¿€%01NSTextFieldCell0±&° &&&&&&&& &&&&&&%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°0 ±&%System0!±&%controlTextColor0"±0#±&0$1NSImage0%±&%common_SliderHoriz° &&&&&&&&&&&&&&%%0&±% BÈ B¶ C( A€  C( A€&0'± &%0(±0)±&%1° 0*±d ?ð&&&&&&&&&&&&&&%’ ?€ ¿€%0+±0,±&° &&&&&&&& &&&&&&%’°°0-±0.±&°$° &&&&&&&&&&&&&&%%0/±% A@ Aˆ B² A€  B² A€&00± &%01±02±& % Auto Range03±041NSMutableString&%common_SwitchOff° &&&&&&&&&&&&&&%’05±&06±&07±08±&%common_SwitchOn&&& &&091 NSTextField% A@ Bd Bh A¨  Bh A¨&0:± &%0;±0<±&%Text° &&&&&&&& &&&&&&%’°0=±°°0>±& % textColor’0?±% A@ Bð B¦ A  B¦ A&0@± &%0A±0B±& % Band stop:0C±% A`&&&&&&&& &&&&&&%’°°=’0D±% A@ B¶ B¦ A  B¦ A&0E± &%0F±0G±& % Band pass:°C&&&&&&&& &&&&&&%’°°=’0H±% B– Bd Bh A¨  Bh A¨&0I± &%0J±0K±&%Text° &&&&&&&& &&&&&&%’°°=’0L±% C Bd Bh A¨  Bh A¨&0M± &%0N±0O±&%Text° &&&&&&&& &&&&&&%’°°=’0P±% CR Bd Bh A¨  Bh A¨&0Q± &%0R±0S±&%Text° &&&&&&&& &&&&&&%’°°=’0T±°° 0U±&%windowBackgroundColor0V±&%Window0W±& % DFT High Pass°W ?€ ?€ F@ F@%0X±0Y±&%NSApplicationIcon&   D€ D@0Z± &0[± &0\1NSMutableDictionary1 NSDictionary&0]±& % GormNSPanel°0^±& % TextField7°?0_±&%Button5°/0`±&%NSOwner0a±&%PRCDFTHighPass0b±& % TextField8°D0c±& % TextField0d±% A BL Bh A¨  Bh A¨&0e± &%0f±0g±&%Text° &&&&&&&& &&&&&&%’°°=’0h±& % TextField9°H0i±&%Slider10j±% BÄ Bª C( A€  C( A€&0k± &%0l±0m±&%1° 0n±d ?ð&&&&&&&&&&&&&&%’ ?€ ¿€%0o±0p±&° &&&&&&&& &&&&&&%’°°0q±0r±&°$° &&&&&&&&&&&&&&%%0s±&%Button0t±% CR A0 B` AÀ  B` AÀ&0u± &%0v±0w±&%OK° &&&&&&&&&&&&&&%’0x±&0y±&&&& &&0z±&%Slider2°0{±&%Slider3°&0|±& % TextField10°L0}±& % TextField11°P0~±& % TextField10±% A Bä B¦ A  B¦ A&0€± &%0±0‚±& % Band stop:°C&&&&&&&& &&&&&&%’°°=’0ƒ±& % TextField20„±% A Bª B¦ A  B¦ A&0…± &%0†±0‡±& % Band pass:°C&&&&&&&& &&&&&&%’°°=’0ˆ±&%Button10‰±% C A0 B` AÀ  B` AÀ&0б &%0‹±0Œ±&%Cancel° &&&&&&&&&&&&&&%’0±&0ޱ&&&& &&0±& % TextField30±% B’ BL Bh A¨  Bh A¨&0‘± &%0’±0“±&%Text° &&&&&&&& &&&&&&%’°°=’0”±&%Slider0•±% BÄ Bä C( A€  C( A€&0–± &%0—±0˜±&%0.5° 0™±d ?à&&&&&&&&&&&&&&%’ ?€ ¿€%0š±0›±&° &&&&&&&& &&&&&&%’°°0œ±0±&°$° &&&&&&&&&&&&&&%%0ž±& % TextField40Ÿ±% C BL Bh A¨  Bh A¨&0 ± &%0¡±0¢±&%Text° &&&&&&&& &&&&&&%’°°=’0£±&%Button20¤±% A A0 Bª A€  Bª A€&0¥± &%0¦±0§±& % Auto Range°3° &&&&&&&&&&&&&&%’0¨±&0©±&°7&&& &&0ª±& % TextField50«±% CP BL Bh A¨  Bh A¨&0¬± &%0­±0®±&%Text° &&&&&&&& &&&&&&%’°°=’0¯±&%Button3°0°±& % TextField6°90±±&%Button4°0²± &&&0³1 NSNibConnector°s0´± °ˆ0µ± °”0¶± °i0·± °£0¸± °c0¹± °~0º± °ƒ0»±&%NSOwner0¼± °°»0½± °ž°»0¾± °ª°»0¿1!NSNibControlConnector°”°»0À±&%changeStopBand:0Á±!°i°»0±&%changePassBand:0ñ!°£°»0ı&%dftHPAutoRange:0ű °]°»0Ʊ °¯°»0DZ °±°»0ȱ °z°»0ɱ °{°»0ʱ °_°»0˱ °°°»0̱ °^°»0ͱ °b°»0α °h°»0ϱ °|°»0б °}°»0ѱ!°_°»0Ò±&%dftHPAutoRange:0Ó±!°z°»0Ô±&%changeStopBand:0Õ±!°{°»0Ö±&%changePassBand:0×1"NSNibOutletConnector°»°]0ر& % filterWindow0Ù±"°»°°0Ú±& % stopBandVal0Û±"°»°h0ܱ& % stopBandValPi0ݱ"°»°|0Þ±& % passBandVal0ß±"°»°}0à±& % passBandValPi0á±"°»°z0â±&%stopBandSlider0ã±"°»°{0ä±&%passBandSlider0å±!°¯°»0æ±& % filterOK:0ç±!°±°»0è±& % filterCancel:0é±&PRICE-1.3.0/Resources/DFTLowPass.gorm004075500017500000012000000000001245331715400164455ustar00multixusersPRICE-1.3.0/Resources/DFTLowPass.gorm/data.classes010064400017500000012000000015471137057112300210130ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "changePassBand:", "changeStopBand:", "dftLPAutoRange:", "dftLPCancel:", "dftLPOK:", "filterCancel:", "filterOK:", "orderFrontFontPanel:", "parametersChanged:", "showDFTLP:", "showFilter:" ); Super = NSObject; }; PRCDFTLowPass = { Actions = ( "dftLPAutoRange:", "changeStopBand:", "changePassBand:" ); Outlets = ( filterWindow, autoRangeCheck, passBandSlider, stopBandSlider, passBandVal, passBandValPi, stopBandVal, stopBandValPi ); Super = PRFilterController; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/DFTLowPass.gorm/data.info010064400017500000012000000002701137057112300203010ustar00multixusersGNUstep archive00002e7f:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.3.0/Resources/DFTLowPass.gorm/objects.gorm010064400017500000012000000171551137057112300210440ustar00multixusersGNUstep archive00002e7f:00000022:000000b9:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A C C& % C@ D @01 NSView% ?€ A C C  C C&01 NSMutableArray1NSArray&  01NSButton1 NSControl% CT A0 B` AÀ  B` AÀ&0± &%0 1 NSButtonCell1 NSActionCell1NSCell0 ±&%Filter0 1NSFont%&&&&&&&&&&&&&&%’0 ±&0 ±&&&& &&0±% C A0 B` AÀ  B` AÀ&0± &%0±0±&%Cancel° &&&&&&&&&&&&&&%’0±&0±&&&& &&01NSSlider% BÄ Bä C( A€  C( A€&0± &%01 NSSliderCell0±&%0° 01NSNumber1NSValued &&&&&&&&&&&&&&%’ ?€ ¿€%01NSTextFieldCell0±&° &&&&&&&& &&&&&&%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°0 ±&%System0!±&%controlTextColor0"±0#±&0$1NSImage0%±&%common_SliderHoriz° &&&&&&&&&&&&&&%%0&±% BÄ Bª C( A€  C( A€&0'± &%0(±0)±&%0.5° 0*±d ?à&&&&&&&&&&&&&&%’ ?€ ¿€%0+±0,±&° &&&&&&&& &&&&&&%’°°0-±0.±&°$° &&&&&&&&&&&&&&%%0/1 NSTextField% A Bä B¦ A  B¦ A&00± &%01±02±& % Band pass:03±% A`&&&&&&&& &&&&&&%’°04±°°05±& % textColor’06±% A Bª B¦ A  B¦ A&07± &%08±09±& % Band stop:°3&&&&&&&& &&&&&&%’°°4’0:±% A B@ Bh A¨  Bh A¨&0;± &%0<±0=±&%Text° &&&&&&&& &&&&&&%’°°4’0>±% B’ B@ Bh A¨  Bh A¨&0?± &%0@±0A±&%Text° &&&&&&&& &&&&&&%’°°4’0B±% C B@ Bh A¨  Bh A¨&0C± &%0D±0E±&%Text° &&&&&&&& &&&&&&%’°°4’0F±% CP B@ Bh A¨  Bh A¨&0G± &%0H±0I±&%Text° &&&&&&&& &&&&&&%’°°4’0J±% Aˆ Ap B® A€  B® A€&0K± &%0L±0M±& % Auto Range0N±0O1NSMutableString&%common_SwitchOff° &&&&&&&&&&&&&&%’0P±&0Q±&0R±0S±&%common_SwitchOn&&& &&0T±°° 0U±&%windowBackgroundColor0V±&%Window0W±& % DFT Low Pass°W ?€ ?€ F@ F@%0X±0Y±&%NSApplicationIcon&   D€ D@0Z± &0[± &0\1NSMutableDictionary1 NSDictionary&0]±&%Button2°0^±&%Button3°0_±&%Button4°J0`±&%NSOwner0a±& % PRCDFTLowPass0b±&%Slider10c±% B$ Bº C! A€  C! A€&0d± &%0e±0f±&%0° 0g±d &&&&&&&&&&&&&&%’ ?€ ¿€%0h±0i±&° &&&&&&&& &&&&&&%’°°0j±0k±&°$° &&&&&&&&&&&&&&%%0l±& % TextField1°60m±& % TextField2°:0n±&%Slider2°0o±& % TextField°/0p±& % TextField3°>0q±&%Slider3°&0r±& % TextField4°B0s±& % TextField5°F0t±&%Button0u±% C‹€ C B` AÀ  B` AÀ&0v± &%0w±0x±&%OK° &&&&&&&&&&&&&&%’0y±&0z±&&&& &&0{±&%Slider0|±% B$ C C! A€  C! A€&0}± &%0~±0±&%0° 0€±d &&&&&&&&&&&&&&%’ ?€ ¿€%0±0‚±&° &&&&&&&& &&&&&&%’°°0ƒ±0„±&°$° &&&&&&&&&&&&&&%%0…±& % GormNSPanel°0†±&%Button10‡±% C‹€ Bª B` AÀ  B` AÀ&0ˆ± &%0‰±0б&%Cancel° &&&&&&&&&&&&&&%’0‹±&0Œ±&&&& &&0± &0Ž1 NSNibConnector°t0± °†0± °{0‘± °b0’± °…0“±&%NSOwner0”± °]°“0•± °^°“0–± °n°“0—± °q°“0˜1!NSNibOutletConnector°“°…0™±& % filterWindow0š± °o0›± °l°“0œ± °m0± °p°“0ž± °r°“0Ÿ± °s°“0 ± °_0¡±!°“°m0¢±& % passBandVal0£±!°“°p0¤±& % passBandValPi0¥±!°“°r0¦±& % stopBandVal0§±!°“°s0¨±& % stopBandValPi0©±!°“°_0ª±&%autoRangeCheck0«±!°“°n0¬±&%passBandSlider0­±!°“°q0®±&%stopBandSlider0¯1"NSNibControlConnector°n°“0°±&%changePassBand:0±±"°q°“0²±&%changeStopBand:0³±"°_°“0´±&%dftLPAutoRange:0µ±"°]°“0¶±& % filterOK:0·±"°^°“0¸±& % filterCancel:0¹±&PRICE-1.3.0/Resources/Equalize.gorm004075500017500000012000000000001245331715400162765ustar00multixusersPRICE-1.3.0/Resources/Equalize.gorm/data.classes010064400017500000012000000011521137055767500206540ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "equalizeCancel:", "equalizeOK:", "filterCancel:", "filterOK:", "orderFrontFontPanel:", "parametersChanged:", "showEqualize:", "showFilter:" ); Super = NSObject; }; PRCEqualize = { Actions = ( ); Outlets = ( equalWindow, colorSpaceChoice ); Super = PRFilterController; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/Equalize.gorm/data.info010064400017500000012000000002701141461055600201350ustar00multixusersGNUstep archive00002f45:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.3.0/Resources/Equalize.gorm/objects.gorm010064400017500000012000000062661141461055600207010ustar00multixusersGNUstep archive00002f45:00000022:00000053:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A Ch Bâ& % Bæ D1@01 NSView% ?€ A Ch Bâ  Ch Bâ&01 NSMutableArray1 NSArray&01NSButton1 NSControl% C A¸ Bd AÀ  Bd AÀ&0± &%0 1 NSButtonCell1 NSActionCell1NSCell0 ±&%Equalize0 1NSFont%&&&&&&&&&&&&&&%’0 ±&0 ±&&&& &&0±% Bt A¸ B` AÀ  B` AÀ&0± &%0±0±&%Cancel° &&&&&&&&&&&&&&%’0±&0±&&&& &&01 NSTextField% A€ B„ B¦ A  B¦ A&0± &%01NSTextFieldCell0±& % Colorspace:0±% A@°&&&&&&&& &&&&&&%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’01 NSPopUpButton% Bì B€ B® A°  B® A°&0 ± &%0!1NSPopUpButtonCell1NSMenuItemCell0"±&° &&&&&&&&0#1NSMenu0$±&0%± &0&1 NSMenuItem0'±&%RGB°"&&ÿ%’%0(±0)±& % YCrCb (Y)°"&&ÿ%0*1NSImage0+±& % common_Nibble’%&&&&&&%’0,±&°,&&& &&°(°#°(%%%%%0-±°0.±&%System0/±&%windowBackgroundColor00±&%Window01±&%Equalize°1 ?€ ?€ F@ F@%02±03±&%NSApplicationIcon&   DŸ@ DrÀ04± &05± &061NSMutableDictionary1 NSDictionary&07±& % TextField(0)°08±&%NSOwner09±& % PRCEqualize0:±&%Button1°0;±& % MenuItem(1)°(0<±&%Button°0=±&%PopUpButton(0)°0>±& % MenuItem(0)°&0?±& % EqualizePanel°0@± &  0A1NSNibConnector°?0B±&%NSOwner0C1 NSNibOutletConnector°B°?0D±& % equalWindow0E±°<0F±°:0G±°70H±°=0I±°>0J±°;0K± °B°=0L±&%colorSpaceChoice0M1!NSNibControlConnector°=°B0N1"NSMutableString&%parametersChanged:0O±!°<°B0P±"& % filterOK:0Q±!°:°B0R±"& % filterCancel:0S±&PRICE-1.3.0/Resources/Grayscale.gorm004075500017500000012000000000001245331715400164315ustar00multixusersPRICE-1.3.0/Resources/Grayscale.gorm/data.classes010064400017500000012000000011141141457403300207670ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "filterCancel:", "filterOK:", "grayscaleCancel:", "grayscaleOK:", "parametersChanged:", "showFilter:", "showGrayscale:" ); Super = NSObject; }; PRCGrayscale = { Actions = ( ); Outlets = ( grayWindow, methodChoice ); Super = PRFilterController; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/Grayscale.gorm/data.info010064400017500000012000000002701141457403300202670ustar00multixusersGNUstep archive00002f45:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.3.0/Resources/Grayscale.gorm/objects.gorm010064400017500000012000000062511141457403300210250ustar00multixusersGNUstep archive00002f45:00000021:00000053:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A Ch Bâ&% C° D À01 NSView% ?€ A Ch Bâ  Ch Bâ&01 NSMutableArray1 NSArray&01NSButton1 NSControl% C& A  B` AÀ  B` AÀ&0± &%0 1 NSButtonCell1 NSActionCell1NSCell0 ±&%Convert0 1NSFont%° &&&&&&&&&&&&&&%’0 ±&0 ±&&&& &&0±% Bº A  B` AÀ  B` AÀ&0± &%0±0±&%Cancel° °&&&&&&&&&&&&&&%’0±&0±&&&& &&01 NSTextField% A¨ BŒ B„ A  B„ A&0± &%01NSTextFieldCell0±&%Method:0±% A@°&&&&&&&& &&&&&&%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’01 NSPopUpButton% Bº BŒ Bô A°  Bô A°&0 ± &%0!1NSPopUpButtonCell1NSMenuItemCell0"±&° &&&&&&&&0#1NSMenu0$±&0%± &0&1 NSMenuItem0'±&%Average°"&&ÿ%’%0(±0)±& % Luminance°"&&ÿ%0*1NSImage0+±& % common_Nibble’%&&&&&&%’0,±&°,&&& &&°(°#°(%%%%%0-±°0.±&%System0/±&%windowBackgroundColor00±&%Window01±&%Convert to Grayscale°1 @@ B F@ F@%&   DŸ@ DrÀ02± &03± &041NSMutableDictionary1 NSDictionary& 05±& % Button(0)°06±& % TextField(0)°07±&%NSOwner08±& % PRCGrayscale09±& % MenuItem(1)°(0:±&%Panel(0)°0;±&%PopUpButton(0)°0<±& % MenuItem(0)°&0=±& % Button(1)°0>±&%View(0)°0?± &  0@1NSNibConnector°:0A±&%NSOwner0B±°>°:0C±°5°>0D±°=°>0E±°6°>0F±°;°>0G±°<0H±°90I1 NSNibControlConnector°5°A0J±& % filterOK:0K± °=°A0L±& % filterCancel:0M± °;°A0N±&%parametersChanged:0O1!NSNibOutletConnector°A°;0P±& % methodChoice0Q±!°A°:0R±& % grayWindow0S±&PRICE-1.3.0/Resources/Histogram.gorm004075500017500000012000000000001245331715400164545ustar00multixusersPRICE-1.3.0/Resources/Histogram.gorm/data.classes010064400017500000012000000072051042266220300210140ustar00multixusers{ FirstResponder = { Actions = ( "activateContextHelpMode:", "alignCenter:", "alignJustified:", "alignLeft:", "alignRight:", "arrangeInFront:", "cancel:", "capitalizeWord:", "changeColor:", "changeFont:", "checkSpelling:", "close:", "complete:", "copy:", "copyFont:", "copyRuler:", "cut:", "delete:", "deleteBackward:", "deleteForward:", "deleteToBeginningOfLine:", "deleteToBeginningOfParagraph:", "deleteToEndOfLine:", "deleteToEndOfParagraph:", "deleteToMark:", "deleteWordBackward:", "deleteWordForward:", "deminiaturize:", "deselectAll:", "fax:", "hide:", "hideOtherApplications:", "indent:", "loosenKerning:", "lowerBaseline:", "lowercaseWord:", "makeKeyAndOrderFront:", "miniaturize:", "miniaturizeAll:", "moveBackward:", "moveBackwardAndModifySelection:", "moveDown:", "moveDownAndModifySelection:", "moveForward:", "moveForwardAndModifySelection:", "moveLeft:", "moveRight:", "moveToBeginningOfDocument:", "moveToBeginningOfLine:", "moveToBeginningOfParagraph:", "moveToEndOfDocument:", "moveToEndOfLine:", "moveToEndOfParagraph:", "moveUp:", "moveUpAndModifySelection:", "moveWordBackward:", "moveWordBackwardAndModifySelection:", "moveWordForward:", "moveWordForwardAndModifySelection:", "newDocument:", "ok:", "openDocument:", "orderBack:", "orderFront:", "orderFrontColorPanel:", "orderFrontDataLinkPanel:", "orderFrontFontPanel:", "orderFrontHelpPanel:", "orderFrontStandardAboutPanel:", "orderFrontStandardInfoPanel:", "orderOut:", "pageDown:", "pageUp:", "paste:", "pasteAsPlainText:", "pasteAsRichText:", "pasteFont:", "pasteRuler:", "performClose:", "performMiniaturize:", "performZoom:", "print:", "raiseBaseline:", "revertDocumentToSaved:", "runPageLayout:", "runToolbarCustomizationPalette:", "saveAllDocuments:", "saveDocument:", "saveDocumentAs:", "saveDocumentTo:", "scrollLineDown:", "scrollLineUp:", "scrollPageDown:", "scrollPageUp:", "scrollViaScroller:", "selectAll:", "selectLine:", "selectNextKeyView:", "selectParagraph:", "selectPreviousKeyView:", "selectText:", "selectText:", "selectToMark:", "selectWord:", "showContextHelp:", "showGuessPanel:", "showHelp:", "showWindow:", "stop:", "subscript:", "superscript:", "swapWithMark:", "takeDoubleValueFrom:", "takeFloatValueFrom:", "takeIntValueFrom:", "takeObjectValueFrom:", "takeStringValueFrom:", "terminate:", "tightenKerning:", "toggle:", "toggleContinuousSpellChecking:", "toggleRuler:", "toggleToolbarShown:", "toggleTraditionalCharacterShape:", "transpose:", "transposeWords:", "turnOffKerning:", "turnOffLigatures:", "underline:", "unhide:", "unhideAllApplications:", "unscript:", "uppercaseWord:", "useAllLigatures:", "useStandardKerning:", "useStandardLigatures:", "yank:", "zoom:", "showHistogram:" ); Super = NSObject; }; PRCHistogram = { Actions = ( "showHistogram:" ); Outlets = ( histoWindow, histoView ); Super = NSObject; }; PRHisto = { Actions = ( ); Outlets = ( ); Super = PRHistogram; }; PRHistogram = { Actions = ( ); Outlets = ( ); Super = NSView; }; }PRICE-1.3.0/Resources/Histogram.gorm/objects.gorm010064400017500000012000000021551042266220300210420ustar00multixusersGNUstep archive00002a94:00000011:0000001d:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0±& % PRCHistogram0±&%GSCustomClassMap0±&0±&%GormCustomView01 GSCustomView1 GSNibItem0 ±&%PRHisto A @@ C€ CH&0 ±& % GormNSPanel0 1NSPanel1 NSWindow1 NSResponder%  C‰ CU& % C™ DÀ0 1 NSView%  C‰ CU  C‰ CU&0 1 NSMutableArray1 NSArray&°01NSColor0±&%NSNamedColorSpace0±&%System0±&%windowBackgroundColor0±&%Window0±& % Histogram° ?€ ?€ F@ F@%01NSImage0±&%NSApplicationIcon0± &01NSNibConnector° 0±&%NSOwner0±°01NSNibOutletConnector°° 0±& % histoWindow0±°°0±& % histoViewPRICE-1.3.0/Resources/MainMenu.gorm004075500017500000012000000000001245331715400162305ustar00multixusersPRICE-1.3.0/Resources/MainMenu.gorm/data.classes010064400017500000012000000175061237447536000206130ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; AppController = { Actions = ( "cancelPreferences:", "showPreferences:", "savePreferences:" ); Outlets = ( prefPanel, closePanelsCheck, enlargeWindowsCheck ); Super = NSObject; }; FirstResponder = { Actions = ( "autoRange:", "briconReset:", "cancelPreferences:", "changeBottom:", "changeBri:", "changeCon:", "changeLeft:", "changePassBand:", "changePercentX:", "changePercentY:", "changePixelsX:", "changePixelsY:", "changeRight:", "changeSize1:", "changeSize2:", "changeSize3:", "changeSize:", "changeStopBand:", "changeThreshold:", "changeTop:", "conv55Cancel:", "conv55OK:", "convMatrix11:", "convMatrix12:", "convMatrix13:", "convMatrix14:", "convMatrix15:", "convMatrix21:", "convMatrix22:", "convMatrix23:", "convMatrix24:", "convMatrix25:", "convMatrix31:", "convMatrix32:", "convMatrix33:", "convMatrix34:", "convMatrix35:", "convMatrix41:", "convMatrix42:", "convMatrix43:", "convMatrix44:", "convMatrix45:", "convMatrix51:", "convMatrix52:", "convMatrix53:", "convMatrix54:", "convMatrix55:", "cropCancel:", "cropOK:", "curvesReset:", "dftHPAutoRange:", "dftHPCancel:", "dftHPOK:", "dftLPAutoRange:", "dftLPCancel:", "dftLPOK:", "edgeCancel:", "edgeOK:", "enablePane1:", "enablePane2:", "enablePane3:", "equalizeCancel:", "equalizeOK:", "filterCancel:", "filterOK:", "filterTypeToggle:", "flipImageHoriz:", "flipImageVert:", "grayscaleCancel:", "grayscaleOK:", "makeDFT:", "makeFlippedHoriz:", "makeFlippedVert:", "makeGrayscale:", "makeInverse:", "makeRotated180:", "makeRotated270:", "makeRotated90:", "makeTransposed:", "medianCancel:", "medianOK:", "offsetFactor:", "orderFrontFontPanel:", "parametersChanged:", "resetValues:", "rotateImage180:", "rotateImage270:", "rotateImage90:", "savePreferences:", "scaleCancel:", "scaleFactor:", "scaleOK:", "setBlackPoint:", "setWhitePoint:", "showBriCon:", "showCrop:", "showDFTHP:", "showDFTLP:", "showEdges:", "showEqualize:", "showFilter:", "showGrayscale:", "showHistogram:", "showMedian:", "showPreferences:", "showScale:", "thresholdToggle:", "transformImage:", "transposeImage:" ); Super = NSObject; }; MyDocument = { Actions = ( ); Outlets = ( ); Super = NSDocument; }; PRCBriCon = { Actions = ( "briconReset:", "changeBri:", "changeCon:" ); Outlets = ( briconWindow, briStep, briSlider, briVal, conStep, conSlider, conVal ); Super = PRFilterController; }; PRCConvolve55 = { Actions = ( "convMatrix11:", "convMatrix12:", "convMatrix13:", "convMatrix14:", "convMatrix15:", "convMatrix21:", "convMatrix22:", "convMatrix23:", "convMatrix24:", "convMatrix25:", "convMatrix31:", "convMatrix32:", "convMatrix33:", "convMatrix34:", "convMatrix35:", "convMatrix41:", "convMatrix42:", "convMatrix43:", "convMatrix44:", "convMatrix45:", "convMatrix51:", "convMatrix52:", "convMatrix53:", "convMatrix54:", "convMatrix55:", "scaleFactor:", "offsetFactor:", "autoRange:" ); Outlets = ( filterWindow, matField11, matField12, matField13, matField14, matField15, matField21, matField22, matField23, matField24, matField25, matField31, matField32, matField33, matField34, matField35, matField41, matField42, matField43, matField44, matField45, matField51, matField52, matField53, matField54, matField55, scaleField, offsetField, autoScaleCheck ); Super = PRFilterController; }; PRCCrop = { Actions = ( "changeTop:", "changeBottom:", "changeLeft:", "changeRight:", "resetValues:" ); Outlets = ( cropWindow, topField, bottomField, leftField, rightField, widthField, heightField ); Super = PRFilterController; }; PRCCumHisto = { Actions = ( "showHistogram:" ); Outlets = ( ); Super = PRCHistogram; }; PRCCurves = { Actions = ( "curvesReset:", "setBlackPoint:", "setWhitePoint:" ); Outlets = ( curvesWindow, curvesView, blackPointField, whitePointField ); Super = PRFilterController; }; PRCCustTraceEdges = { Actions = ( "changeSize1:", "changeSize2:", "changeSize3:", "enablePane1:", "enablePane2:", "enablePane3:", "changeThreshold:" ); Outlets = ( edgeWindow, thresholdSlider, zeroCrossCheck, thresholdField, filterType, enableCheck1, separableCheck1, formSelect1, sizeField1, sizeSlider1, enableCheck2, separableCheck2, formSelect2, sizeField2, sizeSlider2, enableCheck3, separableCheck3, formSelect3, sizeField3, sizeSlider3 ); Super = PRFilterController; }; PRCDFTHighPass = { Actions = ( "dftHPAutoRange:", "changeStopBand:", "changePassBand:" ); Outlets = ( filterWindow, autoRangeCheck, passBandSlider, stopBandSlider, passBandVal, passBandValPi, stopBandVal, stopBandValPi ); Super = PRFilterController; }; PRCDFTLowPass = { Actions = ( "dftLPAutoRange:", "changeStopBand:", "changePassBand:" ); Outlets = ( filterWindow, autoRangeCheck, passBandSlider, stopBandSlider, passBandVal, passBandValPi, stopBandVal, stopBandValPi ); Super = PRFilterController; }; PRCEqualize = { Actions = ( ); Outlets = ( equalWindow, colorSpaceChoice ); Super = PRFilterController; }; PRCFourier = { Actions = ( "transformImage:" ); Outlets = ( ); Super = NSObject; }; PRCGrayscale = { Actions = ( ); Outlets = ( grayWindow, methodChoice ); Super = PRFilterController; }; PRCHisto = { Actions = ( ); Outlets = ( ); Super = PRCHistogram; }; PRCHistogram = { Actions = ( "showHistogram:" ); Outlets = ( ); Super = NSObject; }; PRCInvert = { Actions = ( "makeInverse:" ); Outlets = ( ); Super = NSObject; }; PRCMedian = { Actions = ( "changeSize:" ); Outlets = ( medianWindow, separableCheck, formSelect, sizeField, sizeSlider ); Super = PRFilterController; }; PRCScale = { Actions = ( "changePixelsX:", "changePixelsY:", "changePercentX:", "changePercentY:" ); Outlets = ( scaleWindow, pixelsXField, pixelsYField, percentXField, percentYField, uniformToggle, methodSelect ); Super = PRFilterController; }; PRCTraceEdges = { Actions = ( "thresholdToggle:", "changeThreshold:", "filterTypeToggle:" ); Outlets = ( edgeWindow, thresholdCheck, thresholdSlider, zeroCrossCheck, thresholdField, filterType ); Super = PRFilterController; }; PRCTransforms = { Actions = ( "transposeImage:", "rotateImage90:", "rotateImage180:", "rotateImage270:", "flipImageVert:", "flipImageHoriz:" ); Outlets = ( ); Super = NSObject; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/MainMenu.gorm/data.info010064400017500000012000000002741215274162100200710ustar00multixusersGNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%GNUstep gui-0.10.30±& % Typed StreamPRICE-1.3.0/Resources/MainMenu.gorm/objects.gorm010064400017500000012000000611541237447536000206400ustar00multixusersGNUstep archive000f4240:0000001e:00000361:00000001:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&‚01NSString& % PRCFourier(0)01 GSNibItem0±& % PRCFourier  &0±& % MenuItem18301 NSMenuItem0±& % DFT Low Pass0 ±&&&ÿ%0 1NSImage0 1 NSMutableString&%GSMenuSelected0 ±0 ± & % GSMenuMixed’%0±& % MenuItem810±0±& % Histogram0±&&&ÿ%° ° ’%0±& % GormNSMenu101 NSMenu0±& % Transforms01 NSMutableArray1 NSArray&0±0±&%Rotate0±&&&ÿ%° ° 2 submenuAction:v12@0:4@8%0± °0± &0±0±&%900±&&&ÿ%° ° ’%0±0±&%1800 ±&&&ÿ%° ° ’%0!±0"±&%2700#±&&&ÿ%° ° ’%°0$±0%±&%Flip0&±&&&ÿ%° ° ²%0'± °%0(± &0)±0*±&%Vertical0+±&&&ÿ%° ° ’%0,±0-±& % Horizontal0.±&&&ÿ%° ° ’%°0/±00±& % Transpose01±&&&ÿ%° ° ’%02±03±&%Scale04±&&&ÿ%° ° ’%05±06±&%Crop07±&&&ÿ%° ° ’%08±&%Button1091 NSButton1 NSControl1NSView1 NSResponder% B BŠ Cv A€  Cv A€&0:± &%0;1 NSButtonCell1 NSActionCell1NSCell0<±&"%"Allow enlarging of windows on open0=±0>± &%GSSwitch0?1NSFont%&&&&&&&&&&&&&&%’0@±&0A±&0B±0C± &%GSSwitchSelected&&& &&0D±& % GormNSMenu33°0E±&% NSOwner0F±& % NSApplication0G±& % MenuItem2660H±0I±&%Copy0J±&%c&&ÿ%° ° ’%0K±& % MenuItem990L±0M±& % Select All0N±&%a&&ÿ%° ° ’%0O±& % MenuItem242°0P±& % MenuItem177°H0Q±& % MenuItem750R±°0S±&&&ÿ%° ° ²%°0T± 0U±&%PRICE0V± &  0W±0X±&%Info0Y±&&&ÿ%° ° ²%0Z± °X0[± &0\±0]±& % InfoPanel...0^±&&&ÿ%° ° ’%0_±0`±& % Preferences0a±&&&ÿ%° ° ’%°T0b±0c±&%Image0d±&&&ÿ%° ° ²%0e± °c0f± &  0g±0h±&%Open...0i±&%o&&ÿ%° ° ’%0j±0k±& % Open Recent0l±&&&ÿ%° ° ’%0m± 0n±& % Open Recent0o± &0p±0q±& % Clear List°l&&ÿ%° ° ’%°e0r±0s±&%New0t±&%n&&ÿ%° ° ’%0u±0v±&%Save...0w±&%s&&ÿ%° ° ’%0x±0y±& % Save As...0z±&%S&&ÿ%° ° ’%0{±0|±& % Save To...0}±&&&ÿ%° ° ’%0~±0±&%Save All0€±&&&ÿ%° ° ’%0±0‚±&%Revert To Saved0ƒ±&&&ÿ%° ° ’%0„±0…±&%Page Layout...0†±&%P&&ÿ%° ° ’%0‡±0ˆ±&%Print...0‰±&%p&&ÿ%° ° ’%0б0‹±&%Close0Œ±&&&ÿ%° ° ’%°T0±0ޱ&%Edit0±&&&ÿ%° ° ²%0± °Ž0‘± &0’±0“±&%Undo0”±&%z&&ÿ%° ° ’%0•±0–±&%Redo0—±&&&ÿ%° ° ’%0˜±0™±&%Cut0š±&%x&&ÿ%° ° ’%°H0›±0œ±&%Paste0±&%v&&ÿ%° ° ’%°L°T0ž±0Ÿ±&%Filters0 ±&&&ÿ%° ° ²%0¡± °Ÿ0¢± &0£±0¤±&%Make Grayscale0¥±&&&ÿ%° ° ’%0¦±0§±&%Invert0¨±&&&ÿ%° ° ’%0©±0ª±& % Convolve 5x50«±&&&ÿ%° ° ’%0¬±0­±&%FFT0®±&&&ÿ%° ° ’%°0¯±0°±& % DFT High Pass0±±&&&ÿ%° ° ’%°T°R0²±0³±& % Enhancement0´±&&&ÿ%° ° ²%0µ± °³0¶± &0·±0¸±&%Brightness & Contrast0¹±&&&ÿ%° ° ’%°0º±0»±&%Cumulative Histogram0¼±&&&ÿ%° ° ’%0½±0¾±&%Equalize0¿±&&&ÿ%° ° ’%0À±0Á±&%Curves0±&&&ÿ%° ° ’%0ñ0ı&%Median0ű&&&ÿ%° ° ’%0Ʊ0DZ& % Trace Edges0ȱ&&&ÿ%° ° ’%0ɱ0ʱ&%Custom Trace Edges0˱&&&ÿ%° ° ’%°T0̱0ͱ&%Windows0α&&&ÿ%° ° ²%0ϱ °Í0б &0ѱ0Ò±&%Arrange In Front0Ó±&&&ÿ%° ° ’%0Ô±0Õ±&%Miniaturize Window0Ö±&%m&&ÿ%° ° ’%0×±0ر& % Close Window0Ù±&%w&&ÿ%° ° ’%°T0Ú±0Û±&%Hide0ܱ&%h&&ÿ%° ° ’%0ݱ0Þ±&%Quit0ß±&%q&&ÿ%° ° ’%0à±& % MenuItem153°º0á±& % MenuItem51°W0â±& % GormNSMenu27°Ï0ã±& % MenuItem69°ž0ä±& % MenuItem236°,0å±& % MenuItem45°H0æ±& % MenuItem212°u0ç±& % MenuItem147°$0è±& % MenuItem21°¬0é±& % MenuItem123°\0ê±&%PRCScale0ë±°ê  &0ì±& % MenuItem190°)0í±& % GormNSMenu40°¡0î±& % MenuItem39°!0ï±& % MenuItem206°W0ð±& % MenuItem1°Ý0ñ±& % MenuItem15°Ú0ò±& % MenuItem273°¯0ó±& % MenuItem117°Ô0ô±& % MenuItem184°¯0õ±& % MenuItem82°º0ö±& % MenuItem160°Ú0÷±& % GormNSMenu2°¡0ø±&%Button20ù± % CM A B” AÀ  B” AÀ&0ú± &%0û±0ü±&%Save0ý±0þ±& %  common_ret°?&&&&&&&&&&&&&&%’0ÿ±&% P±&&&& &&P±& % GormNSMenu34°'P±& % GormNSMenu10°ZP±& % PRCTraceEdgesP±Ð  &P±& % MenuItem267°›P±& % MenuItem243°ºP±& % MenuItem178°›P±& % MenuItem76°$P ±& % MenuItem154°½P ±& % MenuItem52°\P ±& % MenuItem130°~P ±&%Menu(1)°mP ±& % GormNSMenu28°ZP±& % MenuItem237°/P±& % MenuItem46°›P±& % MenuItem213°xP±& % MenuItem148°)P±& % MenuItem22°P±& % MenuItem280°,P±& % MenuItem124°bP±& % MenuItem191°,P±& % MenuItem100°žP±& % GormNSMenu41°P±&%ButtonP± % B BÖ CL A€  CL A€&P± &%P±P±&#%#Close filter panels after execution°=°?&&&&&&&&&&&&&&%’P±&P±&°B&&& &&P±& % MenuItem207°\P ±& % MenuItem2°bP!±& % MenuItem274°P"±& % MenuItem118°×P#±& % MenuItem16°RP$±& % MenuItem185°P%±& % MenuItem83°½P&±& % MenuItem250°WP'±& % MenuItem161°·P(±& % GormNSMenu3°ZP)±&%Button3P*± % Bø A B` AÀ  B` AÀ&P+± &%P,±P-±&%Cancel°?&&&&&&&&&&&&&&%’P.±&P/±&&&& &&P0±& % GormNSMenu35°µP1±& %  NSDeferredP2± &P3±& % GormNSMenu11°eP4±& % MenuItem268°LP5±& % MenuItem77°)P6±& % MenuItem244°½P7±& % MenuItem179°LP8±& % MenuItem53°bP9±& % MenuItem220°•P:±& % MenuItem155°ÆP;±& % MenuItem131°P<±& % GormNSMenu29°eP=±& % MenuItem(8)°¦P>±& % MenuItem238°2P?±& % MenuItem47°LP@±& % MenuItem214°{PA±& % MenuItem149°,PB±& % MenuItem23°WPC±& % MenuItem281°/PD±& % MenuItem125°gPE±& % MenuItem192°/PF±& % MenuItem90°WPG±& % MenuItem101°£PH±& % MenuItem(13)°„PI±&%PRCGrayscale(0)PJ±PK±& % PRCGrayscale  &PL±&%PRCCustTraceEdgesPM±ÐL  &PN±& % MenuItem(5)°pPO±& % GormNSMenu42°PP±& % MenuItem3°gPQ±& % MenuItem208°_PR±& % MenuItem275°PS±& % MenuItem119°ÚPT±& % MenuItem17°/PU±& % MenuItem251°\PV±& % MenuItem186°PW±& % MenuItem84°ÚPX±& % PRCBriConPY±ÐX  &PZ±& % MenuItem162°WP[±& % MenuItem60°P\±& % MenuItem(10)°ÃP]±& % GormNSMenu4°µP^±& % MenuItem(2)°‡P_±& % GormNSMenu36°ÏP`±& % GormNSMenu12°Pa±& % MenuItem269°£Pb±& % MenuItem78°,Pc±& % MenuItem245°ÌPd±& % MenuItem54°gPe±& % MenuItem221°˜Pf±& % MenuItem156°ÌPg±& % MenuItem30°žPh±& % MenuItem132°ŠPi±& % MenuItem239°5Pj±& % MenuItem48°’Pk±& % MenuItem215°~Pl±& % MenuItem126°rPm±& % MenuItem24°\Pn±& % MenuItem282°2Po±& % MenuItem102°©Pp±& % MenuItem193°2Pq±& % MenuItem91°\Pr±& % GormNSMenu43°'Ps±& % MenuItem209°bPt±& % MenuItem4°rPu±& % MenuItem276°Pv±& % MenuItem18°žPw±& % MenuItem85°ÝPx±& % MenuItem252°_Py±& % MenuItem187°Pz±& % MenuItem61°ŠP{±& % MenuItem163°\P|±&%PRCHistoP}±Ð|  &P~±& % GormNSMenu5°P±& % GormNSMenu37°ZP€±& % GormNSMenu13°¡P±& % MenuItem79°2P‚±& % MenuItem246°ÑPƒ±& % MenuItem55°rP„±& % MenuItem222°HP…±& % MenuItem157°ÑP†±& % MenuItem31°RP‡±& % MenuItem133°Pˆ±&%PRCTransforms(0)P‰±Pб& % PRCTransforms  &P‹±& % NSWindowsMenu°ÏPŒ±& % MenuItem49°•P±& % MenuItem216°Pޱ& % MenuItem283°5P±& % MenuItem127°uP±& % MenuItem25°¯P‘±& % MenuItem103°¬P’±& % MenuItem194°5P“±& % MenuItem92°bP”±& % MenuItem170°~P•±& % GormNSMenu44°µP–±& % MenuItem5°uP—±& % GormNSMenu20°eP˜±& % MenuItem277°!P™±& % PRCDFTLowPassPš±Ð™  &P›±& % MenuItem19°£Pœ±& % MenuItem86°ÌP±& % MenuItem253°bPž±& % MenuItem188°!PŸ±& % MenuItem62°P ±& % MenuItem164°bP¡±& % MenuItem140°žP¢±& % GormNSMenu6°'P£±& % GormNSMenu38°eP¤±& % GormNSMenu14°P¥±& % MenuItem247°ÔP¦±& % MenuItem158°ÔP§±& % MenuItem56°uP¨±& % MenuItem223°›P©±& % MenuItem134°’Pª±& % MenuItem32°ÆP«±& % MenuItem290°ÑP¬±& % MenuItem110°2P­±& % MenuItem217°ŠP®±& % MenuItem284°²P¯±& % MenuItem128°xP°±& % MenuItem26°²P±±& % MenuItem93°gP²±& % MenuItem260°P³±& % MenuItem104°P´±& % MenuItem195°²Pµ±& % MenuItem171°P¶±& % GormNSMenu45°ÏP·±& % MenuItem6°xP¸±& % GormNSMenu21°P¹±& % MenuItem278°$Pº±& % MenuItem87°ÑP»±& % MenuItem254°gP¼±& % MenuItem189°$P½±& % MenuItem63°’P¾±& % MenuItem230°P¿±& % MenuItem165°gPÀ±& % MenuItem141°£PÁ±& % GormNSMenu7°P±& % GormNSMenu39°Pñ& % GormNSMenu15°Pı& % MenuItem(9)°ÀPű& % MenuItem248°×PƱ& % MenuItem159°×PDZ& % MenuItem57°xPȱ& % MenuItem224°LPɱ& % MenuItem291°ÔPʱ& % MenuItem135°•P˱& % MenuItem33°ÉP̱& % MenuItem200°ÌPͱ& % MenuItem111°²Pα&%NSMenu°TPϱ& % MenuItem(6)°ÀPб&%PRCDFTHighPassPѱÐÐ  &PÒ±&%MenuItem°ÚPÓ±& % MenuItem218°PÔ±& % MenuItem285°·PÕ±& % MenuItem129°{PÖ±& % MenuItem27°½P×±& % MenuItem94°rPر& % MenuItem261°ŠPÙ±& % MenuItem105°¯PÚ±& % MenuItem196°·PÛ±& % MenuItem70°£Pܱ& % MenuItem172°ŠPݱ& % MenuItem(11)°„PÞ±& % MenuItem(3)°¦Pß±& % MenuItem7°{Pà±& % GormNSMenu22°¡Pá±& % MenuItem279°)Pâ±& % MenuItem88°ÔPã±& % MenuItem255°rPä±& % MenuItem166°rPå±& % MenuItem64°•Pæ±& % MenuItem231°Pç±& % MenuItem40°$Pè±& % MenuItem142°©Pé±& % GormNSMenu°ePê±& % GormNSMenu8°ePë±& % MenuItem(0)°‡Pì±& % GormNSMenu16°'Pí±& % MenuItem249°ÝPî±& % AppControllerPï±Ðî  &Pð±& % MenuItem58°{Pñ±& % MenuItem225°£Pò±& % MenuItem292°×Pó±& % MenuItem136°˜Pô±& % MenuItem34°ÃPõ±& % MenuItem201°ÑPö±& % MenuItem112°P÷±& % MenuItem10°ŠPø±& % GormNSPanelPù1GSWindowTemplate1GSClassSwapperPú±&% NSPanel1NSPanel1NSWindow% ?€ A C– C&& % CC D3Pû±% ?€ A C– C&  C– C&&Pü± &а9°ùÐ*Pý1NSColorPþ±&% NSNamedColorSpacePÿ±&% SystemP±&% windowBackgroundColorP±&%WindowP±& % PreferencesÐ ¿€ Áø F8 FÀ%&   D€ D@P±& % MenuItem219°’P±& %  NSVisibleP± &P±& % MenuItem28°P±&%PRCCropP±Ð  &P ±& % MenuItem286°P ±& % MenuItem95°uP ±& % MenuItem262°P ±& % MenuItem106°RP ±& % MenuItem197°P±& % MenuItem71°©P±& % MenuItem173°P±& % GormNSMenu23°P±& % MenuItem8°~P±& % MenuItem89°×P±& % MenuItem256°uP±& % MenuItem167°uP±& % MenuItem65°˜P±& % MenuItem232°P±& % MenuItem143°¬P±& % MenuItem41°,P±& % PRCInvert(0)P±P±& % PRCInvert  &P±& % GormNSMenu9°ÏP±& % PRCConvolve55P±Ð  &P±& % GormNSMenu17°µP ±& % MenuItem226°©P!±& % MenuItem59°~P"±& % MenuItem202°ÔP#±& % MenuItem293°ÝP$±& % MenuItem137°HP%±& % MenuItem35°/P&±& % MenuItem113°ºP'±& % MenuItem11°ÚP(±& % MenuItem180°£P)±& % PRCCurves(0)P*±P+±& % PRCCurves  &P,±& % PRCMedianP-±Ð,  &P.±& % GormNSMenu30°P/±& % MenuItem29°ºP0±& % MenuItem287°ºP1±& % MenuItem198°ºP2±& % MenuItem96°xP3±& % MenuItem263°’P4±& % MenuItem107°$P5±& % MenuItem72°¬P6±& % MenuItem174°’P7±& % MenuItem150°2P8±&% GSCustomClassMapP9±&P:±& % GormNSMenu24°P;±& % MenuItem9°P<±& % MenuItem257°xP=±& % MenuItem168°xP>±& % MenuItem66°HP?±& % MenuItem233°!P@±& % MenuItem144°PA±& % MenuItem42°)PB±& % MenuItem120°ÝPC±&%Menu(0)°mPD±& % GormNSMenu18°ÏPE±& % MenuItem227°¬PF±& % MenuItem36°PG±& % MenuItem138°›PH±& % PRCEqualizePI±ÐH  &PJ±& % MenuItem203°×PK±& % MenuItem114°½PL±& % MenuItem270°©PM±& % MenuItem12°ÚPN±& % MenuItem181°©PO±& % GormNSMenu31°¡PP±& % MenuItem288°½PQ±& % MenuItem264°•PR±& % MenuItem97°{PS±& % MenuItem199°½PT±& % MenuItem108°)PU±& % MenuItem240°²PV±& % MenuItem73°PW±& % MenuItem175°•PX±& % MenuItem151°²PY±& % GormNSMenu25°'PZ±& % MenuItem258°{P[±& % MenuItem234°$P\±& % MenuItem67°›P]±& % MenuItem169°{P^±& % MenuItem43°P_±& % MenuItem145°¯P`±& % MenuItem210°gPa±& % MenuItem121°5Pb±& % PRCCumHistoPc±Ðb  &Pd±& % GormNSMenu19°ZPe±& % MenuItem(7)°jPf±& % MenuItem228°Pg±& % MenuItem37°Ph±& % MenuItem139°LPi±& % MenuItem204°ÝPj±& % MenuItem115°ÌPk±& % MenuItem271°¬Pl±& % MenuItem13°ÚPm±& % MenuItem80°²Pn±& % MenuItem182°¬Po±& % MenuItem(12)°jPp±& % MenuItem(4)°jPq±& % GormNSMenu32°Pr±& % MenuItem289°ÌPs±& % MenuItem265°˜Pt±& % MenuItem98°~Pu±& % MenuItem109°,Pv±& % MenuItem241°·Pw±& % MenuItem74°¯Px±& % MenuItem176°˜Py±& % MenuItem50°2Pz±& % MenuItem152°P{±& % GormNSMenu26°µP|±& % MenuItem(1)°‡P}±& % MenuItem259°~P~±& % MenuItem235°)P±& % MenuItem68°LP€±& % MenuItem44°˜P±& % MenuItem146°RP‚±& % MenuItem211°rPƒ±& % MenuItem122°WP„±& % MenuItem20°©P…±& % MenuItem229°¯P†±& % MenuItem38°P‡±&%NSRecentDocumentsMenu°mPˆ±& % MenuItem205°_P‰±& % MenuItem116°ÑPб& % MenuItem272°P‹±& % MenuItem14°ÚPŒ± &˜˜P1NSNibConnectorÐÎPޱ&% NSOwnerP±Ð‹ÐÎP±ÐiÐÎP‘±ÐîÐŽP’±ÐÐŽP“1NSNibOutletConnectorÐŽÐîP”±&%delegateP•±Ð ÐÎP–±ÐêРP—±Ð`ÐêP˜±Ð‚ÐêP™±ÐÐêPš±Ð=ÐêP›±Ð]ÐêPœ±Ð}ÐêP±Ð;ÐêPž±Ð÷ÐêPŸ1NSNibControlConnectorÐ`P ±&% NSFirstP¡±& % openDocument:P¢±Ð÷РP£±& % performClose:P¤±ÐРP¥±& % saveDocument:P¦±Ð=РP§±&%saveDocumentAs:P¨±Ð‚РP©±& % newDocument:Pª±ÐÐÎP«±ÐqÐP¬±Ð%ÐqP­±Ð¡ÐÎP®±ÐOСP¯±Ð(ÐOP°±Ð„ÐOP±±ÐnÐOP²±ÐŠÐOP³±Ð™ÐŽP´±ÐƒÐÎPµ±ÐdЃP¶±Ð{ÐdP·±Ð{РP¸±&%orderFrontStandardInfoPanel:P¹±Ð…ÐOPº±ÐÐÐŽP»±ÐmÐÎP¼±Ð{ÐmP½±ÐSÐ{P¾±ÐHÐŽP¿±ÐzÐ{PÀ±ÐbÐŽPÁ±Ð|ÐŽP±ÐzÐ|Pñ&%showHistogram:PıÐ1Ð{PűÐ1ÐbÐÃPƱЪÐ{PDZÐÐŽPȱÐLÐŽPɱÐËÐ{PʱÐ,ÐŽP˱ÐôÐ{P̱ÐFÐqPͱÐFÐqPα&%submenuAction:PϱÐ:ÐFPбÐgÐ:PѱІÐ:PÒ±Ð?Ð:PÓ±Ð[ÐqPÔ±Ð[ÐqPÕ±&%submenuAction:PÖ±ÐYÐ[P×±ÐuÐYPرÐ~ÐYPÙ±Ð^ÐÎPÚ±Ð^ÐÎPÛ±&%submenuAction:PܱÐ.Ð^PݱЀÐ.PޱЀРPß±&%cut:Pà±Ð>Ð.Pá±Ð>РPâ±&%copy:Pã±Ð\Ð.Pä±Ð\РPå±&%paste:Pæ±ÐÐ.Pç±ÐРPè±& % selectAll:Pé±Ð6Ð.Pê±ÐWÐ.Pë±Ð6РPì±&%undo:Pí±ÐWРPî±&%redo:Pï±ÐyÐqPð±°êÐŽPñ±ÐƒÐÎPò±&%submenuAction:Pó±Ð ÐÎPô±&%submenuAction:Põ±Ð]РPö±&%saveDocumentTo:P÷±Ð}РPø±&%saveAllDocuments:Pù±Ð;РPú±&%revertDocumentToSaved:Pû±Ð¡ÐÎPü±&%submenuAction:Pý±ÐÐÎPþ±&%submenuAction:Pÿ±ÐmÐÎP±&%submenuAction:P±Ð‹Ð P±&%hide:P±ÐiРP±& % terminate:P±ÐrÐÎP±ÐrÐÎP±&%submenuAction:P±ÐDÐrP ±Ð‰ÐDP ±Ð‰Ð P ±&%arrangeInFront:P ±Ð"ÐDP ±Ð"РP±&%performMiniaturize:P±ÐJÐDP±ÐJРP±& % performClose:P±ÐaÐqP±ÐÐŽP±ÐvÐ{P±ÐXÐŽP±ÐøÐŽP±ÐP±°8P±°øP±Ð)P±°øÐîP±&%savePreferences:P±Ð)ÐîP±&%cancelPreferences:P±ÐîÐP ±&%closePanelsCheckP!±Ðî°8P"±&%enlargeWindowsCheckP#±ÐˆÐdP$±ÐˆÐîP%±&%showPreferences:P&±ÐîÐøP'±& % prefPanelP(±ÐIÐŽP)±Ð|ÐêP*±Ð|РP+±&%printDocument:P,±ÐÞÐOP-±ÐÐŽP.±ÐÞÐP/±& % makeInverse:P0±°ÐŽP1±Ðn°P2±&%transformImage:P3±ÐˆÐŽP4±ÐgЈP5±&%rotateImage90:P6±Ð†ÐˆP7±&%rotateImage180:P8±Ð?ЈP9±&%rotateImage270:P:±Ð~ЈP;±&%flipImageVert:P<±ÐuЈP=±&%flipImageHoriz:P>±Ð%ЈP?±&%transposeImage:P@±ÐSÐHPA±& % showFilter:PB±Ð„ÐPC± & % showFilter:PD±Ð…ÐÐÐCPE±Ð(ÐIÐCPF±ÐŠÐ™ÐCPG±Ðy°êPH± & % showFilter:PI±ÐvÐXÐHPJ±ÐôÐ,ÐHPK±ÐªÐÐHPL±ÐËÐLÐHPM±ÐpÐêPN±Ð‡ÐpPO±ÐNЇPP±ÐpÐêPQ±&%submenuAction:PR±ÐNРPS± &%clearRecentDocuments:PT±Ð)ÐŽPU±ÐÏÐ{PV±ÐÏÐ)PW± & % showFilter:PX±ÐÝÐêPY±ÐÝРPZ±&%runPageLayout:P[±ÐaÐP\±& % showFilter:P]1 NSMutableSet1NSSet&ЉÐКÐÐM°°TÐÑÐ*ÐYÐIÐùÐïÐ-Ð}°ëÐÐcÐÐJPRICE-1.3.0/Resources/Median.gorm004075500017500000012000000000001245331715400157145ustar00multixusersPRICE-1.3.0/Resources/Median.gorm/data.classes010064400017500000012000000012351137072652200202610ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "changeSize:", "filterCancel:", "filterOK:", "medianCancel:", "medianOK:", "parametersChanged:", "showFilter:", "showMedian:" ); Super = NSObject; }; PRCMedian = { Actions = ( "changeSize:" ); Outlets = ( medianWindow, separableCheck, formSelect, sizeField, sizeSlider ); Super = PRFilterController; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/Median.gorm/data.info010064400017500000012000000002701137072652200175550ustar00multixusersGNUstep archive00002e7f:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.3.0/Resources/Median.gorm/objects.gorm010064400017500000012000000123461137072652200203150ustar00multixusersGNUstep archive00002e7f:00000027:0000008e:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A C € C&% Bð D €01 NSView% ?€ A C € C  C € C&01 NSMutableArray1NSArray&01 NSTextField1 NSControl% A Bæ B‚ A  B‚ A&0± &%0 1NSTextFieldCell1 NSActionCell1NSCell0 ±&%Size:0 1NSFont% A`&&&&&&&& &&&&&&%’0 1NSColor0 ±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±° °0±& % textColor’01 NSPopUpButton1NSButton% B¬ B BÚ A   BÚ A &0± &%01NSPopUpButtonCell1NSMenuItemCell1 NSButtonCell0±&0±%&&&&&&&&01NSMenu0±&0± &01 NSMenuItem0±& % Horizontal0±&&&ÿ%’%0±0±&%Vertical°&&ÿ%’%0±0 ±&%Cross°&&ÿ%0!1NSImage0"±& % common_Nibble’%0#±0$±&%Box0%±&&&ÿ%’%&&&&&&%’0&±&0'±&&&& &&°°°%%%%%0(±% C[ BÜ B` A¨  B` A¨&0)± &%0*±0+±&%3°&&&&&&&& &&&&&&%’° °’0,±% C[ Aè B` AÀ  B` AÀ&0-± &%0.±0/±&%Filter°&&&&&&&&&&&&&&%’00±&01±&&&& &&02±% C Aè Bd AÀ  Bd AÀ&03± &%04±05±&%Cancel°&&&&&&&&&&&&&&%’06±&07±&&&& &&08±% C[ B B° A€  B° A€&09± &%0:±0;±& % Separable0<±0=1NSMutableString&%common_SwitchOff°&&&&&&&&&&&&&&%’0>±&0?±&0@±0A±&%common_SwitchOn&&& &&0B±% A€ B” Bl A  Bl A&0C± &%0D±0E±&%Form:° &&&&&&&& &&&&&&%’° °’0F1NSSlider% B¬ Bæ BÚ A€  BÚ A€&0G± &%0H1 NSSliderCell0I±&%1°0J1!NSNumber1"NSValued ?ð&&&&&&&&&&&&&&%’ ?€ @À ¿€%0K±0L±&°&&&&&&&& &&&&&&%’° 0M±° 0N±&%System0O±&%controlTextColor0P±0Q±&0R±0S±&%common_SliderHoriz°&&&&&&&&&&&&&&%%0T±° °N0U±&%windowBackgroundColor0V±&%Window0W±&%Median°W ?€ Að F@ F@%0X±0Y±&%NSApplicationIcon&   D  D€0Z± &0[± &0\1#NSMutableDictionary1$ NSDictionary&0]±&%Button2°80^±&%NSOwner0_±& % PRCMedian0`±& % TextField1°(0a±& % TextField2°B0b±& % TextField°0c±&%GormNSPopUpButton°0d±&%Button°,0e±&%Slider°F0f±& % MenuItem1°0g±& % GormNSPanel°0h±& % MenuItem2°0i±&%Button1°20j±&%MenuItem°0k±& % MenuItem3°#0l± &0m1%NSNibConnector°g0n±&%NSOwner0o±%°b0p±%°c0q±%°`0r±%°d0s±%°i0t±%°]0u±%°j0v±%°f0w±%°h0x±%°k0y1&NSNibOutletConnector°n°g0z±& % medianWindow0{±%°a0|±&°n°`0}±& % sizeField0~±&°n°c0±& % formSelect0€±&°n°]0±&%separableCheck0‚±%°e0ƒ1'NSNibControlConnector°e°n0„±& % changeSize:0…±&°n°e0†±& % sizeSlider0‡±'°d°n0ˆ±& % filterOK:0‰±'°i°n0б& % filterCancel:0‹±'°c°n0Œ±&%parametersChanged:0±'°]°n°Œ0ޱ#&PRICE-1.3.0/Resources/PRWindow.gorm004075500017500000012000000000001245331715400162305ustar00multixusersPRICE-1.3.0/Resources/PRWindow.gorm/data.classes010064400017500000012000000014211203213710600205600ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "orderFrontFontPanel:", "scaleFromMenu:", "scalePanelCancel:", "scalePanelOk:", "setCompressionLevel:", "setCompressionType:" ); Super = NSObject; }; PRImageView = { Actions = ( ); Outlets = ( ); Super = NSImageView; }; PRWindowController = { Actions = ( "scaleFromMenu:", "scalePanelOk:", "scalePanelCancel:", "setCompressionType:", "setCompressionLevel:" ); Outlets = ( view, imageInfoLine, scalePanel, scalePanelScaleField, scalePopUp, saveOptionsView, fileTypePopUp, jpegCompressionField, jpegCompressionSlider ); Super = NSWindowController; }; }PRICE-1.3.0/Resources/PRWindow.gorm/data.info010064400017500000012000000002741234211410100200550ustar00multixusersGNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%GNUstep gui-0.10.30±& % Typed StreamPRICE-1.3.0/Resources/PRWindow.gorm/objects.gorm010064400017500000012000000270051234211410100206070ustar00multixusersGNUstep archive000f4240:0000002c:0000014a:00000002:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&-01NSString&%Button501NSButton1 NSControl1NSView1 NSResponder% Aà A  B` AÀ  B` AÀ&01 NSMutableArray1 NSArray&%01 NSButtonCell1 NSActionCell1NSCell0±&%Cancel01NSFont%&&&&&&&&&&&&&&%’0 ±&0 ±&&&& &&0 ±&% NSOwner0 ±&%PRWindowController0 ±&%MenuItem01 NSMenuItem0±&%Hide0±&%h&&ÿ%01NSImage01NSMutableString&%GSMenuSelected0±0±& % GSMenuMixed2 hide:v12@0:4@8%0±&%Button0±% B¨ Cn B` AÀ  B` AÀ&0± &%0± 0±&%Set°&&&&&&&&&&&&&&%’0±&0±&&&& &&0±&%Button40±% BÐ A  B` AÀ  B` AÀ&0± &%0± 0 ±&%Set°&&&&&&&&&&&&&&%’0!±&0"±&&&& &&0#±&%Button30$±% A0 BÄ B` AÀ  B` AÀ&0%± &%0&± 0'±&%Cancel°&&&&&&&&&&&&&&%’0(±&0)±&&&& &&0*±& % MenuItem(1)0+±0,±&%JPEG0-±&&&ÿ%’%0.±&%Button20/±% B¨ BÄ B` AÀ  B` AÀ&00± &%01± 02±&%Set°&&&&&&&&&&&&&&%’03±&04±&&&& &&05±&%Button106±% A Cn B` AÀ  B` AÀ&07± &%08± 09±&%Cancel°&&&&&&&&&&&&&&%’0:±&0;±&&&& &&0<±& % MenuItem(0)0=±0>±&%TIFF°-&&ÿ%0?±0@±& %  common_Nibble’%0A±& %  NSDeferred0B± &0C1GSWindowTemplate1GSClassSwapper0D±&% NSWindow1NSWindow% ?€ A CÔ€ C€&% CD D@0E±% ?€ A CÔ€ C€  CÔ€ C€&0F± &0G1 NSPopUpButton% A @  Bò A°  Bò A°&0H± &%0I1NSPopUpButtonCell1NSMenuItemCell0J±&°&&&&&&&&0K1NSMenu0L±&0M± &  0N±0O±&%12.50P±&&&ÿ%’% 0Q±0R±&%250S±&&&ÿ%’%0T±0U±&%500V±&&&ÿ%’%20W±0X±&%750Y±&&&ÿ%’%K0Z±0[±&%100°P&&ÿ%°?’%d0\±0]±&%1500^±&&&ÿ%’%–0_±0`±&%2000a±&&&ÿ%’%È0b±0c±&%400°P&&ÿ%’%0d±0e±&%Fit vertically0f±&&&ÿ%’%ÿÿÿÿ0g±0h±&%Fit horizontally0i±&&&ÿ%’%ÿÿÿþ0j±0k±&%Fit0l±&&&ÿ%’%ÿÿÿý0m±0n±& % Custom...0o±&&&ÿ%’%ÿÿÿü&&&&&&%’0p±&0q±&&&& &&°Z°K°Z%%%%%0r1 NSTextField% C @  Cw A¨  Cw A¨&0s± &%0t1NSTextFieldCell0u±&°&&&&&&&& &&&&&&%’0v1NSColor0w±&% NSNamedColorSpace0x±&%System0y±&%textBackgroundColor0z±°w°x0{±& % textColor’0|1 NSScrollView% B CÔ€ Cz  CÔ€ Cz&0}± &0~1 NSClipView% A¨ @ CÉ Cc C2 CÉ Cc&01GSControlTemplate0€±& % PRImageView1 NSImageView% C2 BÀ B  BÀ B&°°0± &%0‚1! NSImageCell°&&&&&&&&&&&&&&%%% ?€ ?€’0ƒ± &°0„±°w0…±&% System0†±&% controlBackgroundColor0‡1" NSScroller% A¨ Cf CÉ A  CÉ A&0ˆ± &%0‰±0б&°&&&&&&&&&&&&&&&’0‹±"% @ @ A Cv  A Cv&0Œ± &%0±°Š°&&&&&&&&&&&&&&&’°~% A A A A °‡°‹0ޱ°w°…0±&% windowBackgroundColor0±&%Window0‘±& % My Window°‘ Bì Aà F8 FÀ%0’±0“±&% NSApplicationIcon&   D€ D@0”±& % SaveOptions0•±°D±% ?€ A C® B¬&% CK D0–±% ?€ A C® B¬  C® B¬&0—± &0˜±% A B0 C A°  C A°&0™± &%0š±0›±&°&&&&&&&&0œ±0±&0ž± &0Ÿ±0 ±&%TIFF°›&&ÿ%°?’%0¡±0¢±&%JPEG°›&&ÿ%’%&&&&&&%’0£±&0¤±&&&& >ÌÌÍ =™™š&&°Ÿ°œ°Ÿ%%%%%0¥±% A Ap B¦ A  B¦ A&0¦± &%0§±0¨±&%Level:0©±% A@°¨&&&&&&&& &&&&&&%’°v°z’0ª1#NSSlider% Bè Ap Bô A€  Bô A€&0«± &%0¬1$ NSSliderCell0­±&%75°0®1%NSNumber1&NSValued @RÀ&&&&&&&&&&&&&&%’ BÈ ¿€%0¯±0°±&°&&&&&&&& &&&&&&%’°v0±±°w°…0²±&% controlTextColor0³±0´±&0µ±0¶±&%common_SliderHoriz°&&&&&&&&&&&&&&%%0·±% Cƒ€ Ap B` A¨  B` A¨&0¸± &%0¹±0º±&°°º&&&&&&&& &&&&&&%’°v°z’°Ž0»±&%Window°»0¼±&% Window ?€ @@ F8 FÀ%&  D€ D@0½±& % MenuItem9°W0¾±& % TextField2°r0¿±& % ZoomPanel0À±0Á±&% NSPanel1'NSPanel% ?€ A C4 Bº& % C¸€ D@0±% ?€ A C4 Bº  C4 Bº&0ñ &0ı% B¾ BT B‚ A¨  B‚ A¨&0ű &%0Ʊ0DZ&%100°&&&&&&&& &&&&&&%’°v°z’0ȱ% Ap BT BŠ A¨  BŠ A¨&0ɱ &%0ʱ0˱&%Zoom:°©&&&&&&&& &&&&&&%’°v°z’°°6°/°$°°°Ž0̱&%Window0ͱ&%Zoom°Í ¿€ Áø F8 FÀ%&   D€ D@0α& % MenuItem8°d0ϱ& % TextField1°È0б& % MenuItem7°\0ѱ& % Slider(0)°ª0Ò±& % TextField(1)°·0Ó±& % MenuItem6°Q0Ô±&%PopUpButton(0)°˜0Õ±& % MenuItem5°_0Ö±& % MenuItem(3)°¡0×±& % MenuItem14°j0ر& % Scroller(1)°‹0Ù±& % MenuItem13°g0Ú±& % MenuItem4°b0Û±& % My Window°C0ܱ& % MenuItem3°Z0ݱ&%GormNSPopUpButton°G0Þ±& % ScrollView(0)°|0ß±& % MenuItem11°m0à±& % TextField(0)°¥0á±& % MenuItem2°N0â±& % MenuItem10°T0ã±&%View(0)°–0ä±& % TextField°Ä0å±& % MenuItem(2)°Ÿ0æ±& % MenuItem10ç±0è±&%Quit0é±&%q&&ÿ%°°2 terminate:v12@0:4@8%0ê±&% GSCustomClassMap0ë±&0ì±& % ImageView(0)°€0í±& % Scroller(0)°‡0î±& %  NSVisible0ï± &0ð±& % ClipView(0)°~°ì°0ñ± &==0ò1(NSNibConnector°Û0ó±&% NSOwner0ô1)NSNibOutletConnector°Û°ó0õ±&%delegate0ö±(°Ý0÷±(°á0ø±(°Ü0ù±(°Ú0ú±(°Õ0û±(°Ó0ü±(°Ð0ý±(°Î0þ±(°½0ÿ±(°âP±(°ßP±(°ÙP±(°×P±(°¿°óP±(°äP±(°ÏP±(°P±(°5P±(°.P ±(°#P ±(°P ±(°P ±(°¾P ±(°ìP±(°ÞP±(°ð°ÞP±(°í°ÞP1*NSNibControlConnector°í°ÞP±& % _doScroll:P±(°Ø°ÞP±*°Ø°ÞP±& % _doScroll:P±)°ó°¾P±& % imageInfoLineP±)°ó°ÝP±& % scalePopUpP±)°ó°¿P±& % scalePanelP±)°ó°äP±&%scalePanelScaleFieldP±)°ó°ìP±&%viewP ±)°ó°ÛP!±&%windowP"±*°°óP#±& % scalePanelOk:P$±*°°óP%±&%scalePanelCancel:P&±*°Ý°óP'±&%scaleFromMenu:P(±(°±)°ó°ÒP?±&%jpegCompressionFieldP@±*°Ò°óPA±&%setCompressionLevel:PB±*°Ñ°óPC±&%setCompressionLevel:PD±)°ó°ãPE±&%saveOptionsViewPF1+ NSMutableSet1,NSSet&°C°•°ÀPRICE-1.3.0/Resources/Preview.gorm004075500017500000012000000000001245331715400161405ustar00multixusersPRICE-1.3.0/Resources/Preview.gorm/data.classes010064400017500000012000000010471237460565100205120ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "cleanPreview:", "scaleFromMenu:", "updatePreview:" ); Super = NSObject; }; PRImageView = { Actions = ( ); Outlets = ( ); Super = NSImageView; }; PRPreviewController = { Actions = ( "cleanPreview:", "updatePreview:", "scaleFromMenu:" ); Outlets = ( previewWindow, buttContinuous, view, scalePopUp, progressBar, activityDescription ); Super = NSObject; }; }PRICE-1.3.0/Resources/Preview.gorm/data.info010064400017500000012000000002701237460565100200050ustar00multixusersGNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed StreamPRICE-1.3.0/Resources/Preview.gorm/objects.gorm010064400017500000012000000135511237460565100205440ustar00multixusersGNUstep archive000f4240:00000029:000000a7:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A Câ C €& % CD D1€01 NSView% ?€ A Câ C €  Câ C €&01 NSMutableArray1 NSArray&01 NSScrollView% Bˆ Câ C}  Câ C}&0± &0 1 NSClipView% A¨ @ CÖ€ Cf C5 CÖ€ Cf&0 1GSControlTemplate0 ±& % PRImageView1 NSImageView1 NSControl% C5 BÀ B  BÀ B&° 0 ± &%0 1 NSImageCell1NSCell01NSFont%&&&&&&&&&&&&&&%%% ?€ ?€’0± &° 01NSColor0±&% NSNamedColorSpace0±&% System0±&% controlBackgroundColor01 NSScroller% A¨ Ci CÖ€ A  CÖ€ A&0± &%0±0±&°&&&&&&&&&&&&&&&’0±% @ @ A Cy  A Cy&0± &%0±°°&&&&&&&&&&&&&&&’° % A A A A °°01NSButton% A˜ B Bh AÀ  Bh AÀ&0± &%01 NSButtonCell1 NSActionCell0±&%Update°&&&&&&&&&&&&&&%’0±&0 ±&&&& &&0!±% A˜ A  BÀ A€  BÀ A€&0"± &%0#±0$±& % Continuous0%1NSImage0&1NSMutableString&%GSSwitch°&&&&&&&&&&&&&&%’0'±&0(±&0)±0*±&%GSSwitchSelected&&& &&0+1NSProgressIndicator% C— B C A   C A &0,± & ?µUUUUUU ?ð ?ð0-1 NSTextField% C‹ AP C! A  C! A&0.± &%0/1NSTextFieldCell00±&01±% A@°0&&&&&&&& &&&&&&%’02±°03±&%System04±&%textBackgroundColor05±°°306±& % textColor’071 NSPopUpButton% C B Bö A°  Bö A°&08± &%091!NSPopUpButtonCell1"NSMenuItemCell0:±&°&&&&&&&&0;1#NSMenu0<±&0=± &0>1$ NSMenuItem0?±&%12.5°:&&ÿ%’% 0@±$0A±&%25°:&&ÿ%’%0B±$0C±&%50°:&&ÿ%’%20D±$0E±&%1000F±&&&ÿ%0G±0H±& %  common_Nibble’%d0I±$0J±&%2000K±&&&ÿ%’%È0L±$0M±&%Fit vertically0N±&&&ÿ%’%ÿÿÿÿ0O±$0P±&%Fit horizontally0Q±&&&ÿ%’%ÿÿÿþ0R±$0S±&%Fit0T±&&&ÿ%’%ÿÿÿý&&&&&&%’0U±&0V±&&&& >ÌÌÍ =™™š&&°D°;°D%%%%%0W±°°0X±&% windowBackgroundColor0Y±&%Window0Z±&%Preview°Z @à @@ F8 FÀ%&   D€ D@0[± &0\± &0]1%NSMutableDictionary1& NSDictionary&0^±& % Button(0)°0_±& % MenuItem(5)°O0`±&%PopUpButtonCell(0)°90a±& % TextField(0)°-0b±&%PopUpButton(0)°70c±&%View(0)°0d±& % MenuItem(2)°B0e±& % Scroller(0)°0f±& % ClipView(0)° 0g±& % Button(1)°!0h±& % MenuItem(6)°R0i±& % ImageView(0)° 0j±&% NSOwner0k±&%PRPreviewController0l±&%ProgressIndicator(0)°+0m±& % MenuItem(3)°D0n±& % Scroller(1)°0o±& % MenuItem(0)°>0p±& % MenuItem(7)°I0q±& % ScrollView(0)°0r±& % MenuItem(4)°L0s±&%Panel(0)°0t±& % MenuItem(1)°@0u± &##0v1'NSNibConnector°s°j0w±'°c°s0x±'°i°c0y±'°q°c0z±'°f°q0{±'°e°q0|1(NSNibControlConnector°e°q0}±& % _doScroll:0~±'°n°q0±(°n°q0€±& % _doScroll:0±'°^°c0‚±'°g°c0ƒ1)NSNibOutletConnector°j°g0„±&%buttContinuous0…±)°j°s0†±& % previewWindow0‡±)°j°i0ˆ±&%view0‰±(°^°j0б&%updatePreview:0‹±'°l°c0Œ±'°a°c0±)°j°a0ޱ&%activityDescription0±)°j°l0±& % progressBar0‘±'°b°c0’±'°o0“±(°o°`0”±&%_popUpItemAction:0•±'°t0–±(°t°`0—±&%_popUpItemAction:0˜±'°d0™±(°d°`0š±&%_popUpItemAction:0›±'°`°b0œ±)°s°j0±&%delegate0ž±)°j°b0Ÿ±& % scalePopUp0 ±(°b°j0¡±&%scaleFromMenu:0¢±'°m0£±'°r0¤±'°_0¥±'°h0¦±'°p0§±%&°i° PRICE-1.3.0/Resources/ProgressPanel.gorm004075500017500000012000000000001245331715400173035ustar00multixusersPRICE-1.3.0/Resources/ProgressPanel.gorm/data.classes010064400017500000012000000067141042266220300216470ustar00multixusers{ FirstResponder = { Actions = ( "activateContextHelpMode:", "alignCenter:", "alignJustified:", "alignLeft:", "alignRight:", "arrangeInFront:", "cancel:", "capitalizeWord:", "changeColor:", "checkSpelling:", "close:", "complete:", "copy:", "copyFont:", "copyRuler:", "cut:", "delete:", "deleteBackward:", "deleteForward:", "deleteToBeginningOfLine:", "deleteToBeginningOfParagraph:", "deleteToEndOfLine:", "deleteToEndOfParagraph:", "deleteToMark:", "deleteWordBackward:", "deleteWordForward:", "deminiaturize:", "deselectAll:", "fax:", "hide:", "hideOtherApplications:", "indent:", "loosenKerning:", "lowerBaseline:", "lowercaseWord:", "makeKeyAndOrderFront:", "miniaturize:", "miniaturizeAll:", "moveBackward:", "moveBackwardAndModifySelection:", "moveDown:", "moveDownAndModifySelection:", "moveForward:", "moveForwardAndModifySelection:", "moveLeft:", "moveRight:", "moveToBeginningOfDocument:", "moveToBeginningOfLine:", "moveToBeginningOfParagraph:", "moveToEndOfDocument:", "moveToEndOfLine:", "moveToEndOfParagraph:", "moveUp:", "moveUpAndModifySelection:", "moveWordBackward:", "moveWordBackwardAndModifySelection:", "moveWordForward:", "moveWordForwardAndModifySelection:", "newDocument:", "ok:", "open:", "openDocument:", "orderBack:", "orderFront:", "orderFrontColorPanel:", "orderFrontDataLinkPanel:", "orderFrontHelpPanel:", "orderFrontStandardAboutPanel:", "orderFrontStandardInfoPanel:", "orderOut:", "pageDown:", "pageUp:", "paste:", "pasteAsPlainText:", "pasteAsRichText:", "pasteFont:", "pasteRuler:", "performClose:", "performMiniaturize:", "performZoom:", "print:", "raiseBaseline:", "revertDocumentToSaved:", "runPageLayout:", "runToolbarCustomizationPalette:", "saveAllDocuments:", "saveDocument:", "saveDocumentAs:", "saveDocumentTo:", "scrollLineDown:", "scrollLineUp:", "scrollPageDown:", "scrollPageUp:", "scrollViaScroller:", "selectAll:", "selectLine:", "selectNextKeyView:", "selectParagraph:", "selectPreviousKeyView:", "selectText:", "selectToMark:", "selectWord:", "showContextHelp:", "showGuessPanel:", "showHelp:", "showWindow:", "stop:", "subscript:", "superscript:", "swapWithMark:", "takeDoubleValueFrom:", "takeFloatValueFrom:", "takeIntValueFrom:", "takeObjectValueFrom:", "takeStringValueFrom:", "terminate:", "tightenKerning:", "toggle:", "toggleContinuousSpellChecking:", "toggleRuler:", "toggleToolbarShown:", "toggleTraditionalCharacterShape:", "transpose:", "transposeWords:", "turnOffKerning:", "turnOffLigatures:", "underline:", "unhide:", "unhideAllApplications:", "unscript:", "uppercaseWord:", "useAllLigatures:", "useStandardKerning:", "useStandardLigatures:", "yank:", "zoom:", "showProgress:" ); Super = NSObject; }; PRCProgress = { Actions = ( "showProgress:" ); Outlets = ( progressPanel, progressBar, activityDescription ); Super = NSObject; }; }PRICE-1.3.0/Resources/ProgressPanel.gorm/objects.gorm010064400017500000012000000032541042266220300216720ustar00multixusersGNUstep archive00002a95:00000016:0000002b:00000000:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0±& % PRCProgress0±&%GSCustomClassMap0±&0±&%ProgressIndicator01NSProgressIndicator1NSView1 NSResponder% AP Bh C9 A  C9 A&0 1 NSMutableArray1 NSArray& ?µUUUUUU @I ?ð0 ±& % GormNSPanel0 1 NSPanel1 NSWindow%  CW B¼& % C D@0 ±%  CW B¼  CW B¼&0 ± &°01 NSTextField1 NSControl% AP A` C9 A¨  C9 A¨&0± &%01NSTextFieldCell1 NSActionCell1NSCell0±&%Text01NSFont%&&&&&&&&%’01NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±°0±&%System0±&%windowBackgroundColor0±&%Window0±& % Progress...° ?€ B F@ F@%01NSImage0±&%NSApplicationIcon0 ±& % TextField°0!± &0"1NSNibConnector° 0#±&%NSOwner0$±°0%±° 0&1NSNibOutletConnector°#° 0'±& % progressPanel0(±°#°0)±& % progressBar0*±°#° 0+±&%activityDescriptionPRICE-1.3.0/Resources/Scale.gorm004075500017500000012000000000001245331715400155465ustar00multixusersPRICE-1.3.0/Resources/Scale.gorm/data.classes010064400017500000012000000015321137072652300201140ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "changePercentX:", "changePercentY:", "changePixelsX:", "changePixelsY:", "filterCancel:", "filterOK:", "parametersChanged:", "scaleCancel:", "scaleOK:", "showFilter:", "showScale:" ); Super = NSObject; }; PRCScale = { Actions = ( "changePixelsX:", "changePixelsY:", "changePercentX:", "changePercentY:" ); Outlets = ( scaleWindow, pixelsXField, pixelsYField, percentXField, percentYField, uniformToggle, methodSelect ); Super = PRFilterController; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/Scale.gorm/data.info010064400017500000012000000002701237461165500174140ustar00multixusersGNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed StreamPRICE-1.3.0/Resources/Scale.gorm/objects.gorm010064400017500000012000000141511237461165500201500ustar00multixusersGNUstep archive000f4240:00000022:000000a0:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C} CZ&% C\ D/@01 NSView% ?€ A C} CZ  C} CZ&01 NSMutableArray1 NSArray&  01 NSTextField1 NSControl% B° C$ BŠ A¨  BŠ A¨&0± &%0 1NSTextFieldCell1 NSActionCell1NSCell0 ±&0 1NSFont%° &&&&&&&& &&&&&&%’0 1NSColor0 ±&% NSNamedColorSpace0±&%System0±&%textBackgroundColor0±° °0±& % textColor’0±% B° C BŠ A¨  BŠ A¨&0± &%0±0±&° °&&&&&&&& &&&&&&%’° °’01NSButton% C4 A B` AÀ  B` AÀ&0± &%01 NSButtonCell0±&%OK° &&&&&&&&&&&&&&%’0±&0±&&&& &&0±% Bâ A B` AÀ  B` AÀ&0± &%0±0±&%Cancel° &&&&&&&&&&&&&&%’0 ±&0!±&&&& &&0"±% B° C> BŠ A  BŠ A&0#± &%0$±0%±&%Pixels0&±% A@&&&&&&&& &&&&&&%’° °’0'±% C- C$ B| A¨  B| A¨&0(± &%0)±0*±&° °*&&&&&&&& &&&&&&%’° °’0+±% C- C B| A¨  B| A¨&0,± &%0-±0.±&° °.&&&&&&&& &&&&&&%’° °’0/±% C- C> B| A  B| A&00± &%01±02±&%Percent°&&&&&&&&& &&&&&&%’° °’03±% AP C$ BŒ A  BŒ A&04± &%05±06±&%Width:°&&&&&&&&& &&&&&&%’° °’07±% AP C BŒ A  BŒ A&08± &%09±0:±&%Height:°&&&&&&&&& &&&&&&%’° °’0;±% C- BÌ Bˆ A€  Bˆ A€&0<± &%0=±0>±&%uniform° &&&&&&&&&&&&&&%’0?±&0@±&0A1NSImage0B1NSMutableString&%GSSwitchSelected&&& &&0C1 NSPopUpButton% BÊ B„ C A°  C A°&0D± &%0E1NSPopUpButtonCell1NSMenuItemCell0F±&° &&&&&&&&0G1NSMenu0H±&0I± &0J1 NSMenuItem0K±&%Nearest neighbour0L±&&&ÿ%’%0M±0N±&%Bilinear°L&&ÿ%0O±0P±& %  common_Nibble’%&&&&&&%’0Q±&0R±&&&& &&°M°G°M%%%%%0S±% AP BŒ B¦ A  B¦ A&0T± &%0U±0V±&%Method:°&&&&&&&&& &&&&&&%’° °’0W±° 0X±&% System0Y±&% windowBackgroundColor0Z±&%Window0[±&%Scale°[ ¿€ Á¸ F8 Fà%&   D€ D@0\± &0]± &°0^1NSMutableDictionary1 NSDictionary&0_±& % GormNSPanel°0`±& % TextField8°S0a±& % TextField1°0b±& % TextField°0c±& % TextField3°'0d±& % MenuItem1°M0e±&%Button1°0f±& % TextField5°/0g±& % TextField7°70h±&% NSOwner0i±&%PRCScale0j±& % TextField2°"0k±&%MenuItem°J0l±& % TextField4°+0m±& % TextField6°30n±&%Button°0o±&%GormNSPopUpButton°C0p±&%Button2°;0q± &0r1 NSNibConnector°_0s±&% NSOwner0t± °b0u± °a0v± °n0w± °e0x1!NSNibOutletConnector°s°_0y±& % scaleWindow0z±!°s°b0{±& % pixelsXField0|±!°s°a0}±& % pixelsYField0~1"NSNibControlConnector°a°s0±&%changePixelsY:0€±"°b°s0±&%changePixelsX:0‚± °j0ƒ± °c0„± °l0…± °f0†± °m0‡± °g0ˆ±!°s°c0‰±& % percentXField0б!°s°l0‹±& % percentYField0Œ±"°l°s0±&%changePercentY:0ޱ"°c°s0±&%changePercentX:0± °p0‘±!°s°p0’±& % uniformToggle0“± °o0”± °k0•± °d0–± °`0—±!°s°o0˜±& % methodSelect0™±"°n°s0š±& % filterOK:0›±"°e°s0œ±& % filterCancel:0±"°o°s0ž±&%parametersChanged:0Ÿ±"°p°s°ž0 ±&PRICE-1.3.0/Resources/TraceEdges.gorm004075500017500000012000000000001245331715400165255ustar00multixusersPRICE-1.3.0/Resources/TraceEdges.gorm/data.classes010064400017500000012000000015371137072652300211000ustar00multixusers{ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "changeThreshold:", "edgeCancel:", "edgeOK:", "filterCancel:", "filterOK:", "filterTypeToggle:", "orderFrontFontPanel:", "parametersChanged:", "showEdges:", "showFilter:", "thresholdToggle:", "zeroCrossToggle:" ); Super = NSObject; }; PRCTraceEdges = { Actions = ( "thresholdToggle:", "changeThreshold:", "filterTypeToggle:" ); Outlets = ( edgeWindow, thresholdCheck, thresholdSlider, zeroCrossCheck, thresholdField, filterType ); Super = PRFilterController; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.3.0/Resources/TraceEdges.gorm/data.info010064400017500000012000000002701237502516000203620ustar00multixusersGNUstep archive000f4240:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed StreamPRICE-1.3.0/Resources/TraceEdges.gorm/objects.gorm010064400017500000012000000136061237502516000211220ustar00multixusersGNUstep archive000f4240:00000026:000000a9:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C‡€ C & % C D€01 NSView% ?€ A C‡€ C   C‡€ C &01 NSMutableArray1 NSArray&01NSButton1 NSControl% C1 A€ BŽ AÀ  BŽ AÀ&0± &%0 1 NSButtonCell1 NSActionCell1NSCell0 ±&%Trace0 1NSImage0 ±& %  common_ret0 1NSFont%&&&&&&&&&&&&&&%’0±&% 0±&&&& &&0±% BÚ A€ B` AÀ  B` AÀ&0± &%0±0±&%Cancel° &&&&&&&&&&&&&&%’0±&0±&&&& &&0±% C! BÊ B® A€  B® A€&0± &%0±0±& % Threshold0±01NSMutableString&%GSSwitch° &&&&&&&&&&&&&&%’0±&0±&0±0±&%GSSwitchSelected&&& &&0 1 NSTextField% C! BX B® A¨  B® A¨&0!± &%0"1NSTextFieldCell0#±&%0.5° &&&&&&&& &&&&&&%’0$1NSColor0%±&% NSNamedColorSpace0&±&%System0'±&%textBackgroundColor0(±°%°&0)±& % textColor’0*1NSSlider% A Bl C A€  C A€&0+± &%0,1 NSSliderCell0-±&%0.5° 0.1NSNumber1NSValued ?à&&&&&&&&&&&&&&%’ ?€ ¿€%0/±00±&° &&&&&&&& &&&&&&%’°$01±°%02±&% System03±&% controlTextColor04±05±&06±07±&%common_SliderHoriz° &&&&&&&&&&&&&&%%081 NSPopUpButton% A BØ C A   C A &09± &%0:1NSPopUpButtonCell1NSMenuItemCell0;±&° &&&&&&&&0<1 NSMenu0=±&0>± &  0?1! NSMenuItem0@±&%Pixel Difference0A±&&&ÿ%0B±0C±& %  common_Nibble’%0D±!0E±&%Separated PixDiff°A&&ÿ%’%0F±!0G±&%Roberts°A&&ÿ%’%0H±!0I±&%Prewitt0J±&&&ÿ%’%0K±!0L±&%Sobel0M±&&&ÿ%’%0N±!0O±&%Abdou0P±&&&ÿ%’%0Q±!0R±& % Laplacian (4)0S±&&&ÿ%’%0T±!0U±& % Laplacian (8)0V±&&&ÿ%’%0W±!0X±&%Laplacian (Prewitt)0Y±&&&ÿ%’% &&&&&&%’0Z±&0[±&&&& &&°?°<°?%%%%%0\±% C! B  BÈ A€  BÈ A€&0]± &%0^±0_±& % Zero Cross°° &&&&&&&&&&&&&&%’0`±&0a±&°&&& &&0b±°%°20c±&% windowBackgroundColor0d±&%Window0e±& % Trace Edges°e ¿€  F8 FÀ%0f±0g±&% NSApplicationIcon&   D€ D@0h± &0i± &0j1"NSMutableDictionary1# NSDictionary&0k±& % GormNSPanel°0l±& % MenuItem4°K0m±& % MenuItem6°Q0n±& % MenuItem8°W0o±& % TextField° 0p±&%Slider°*0q±& % MenuItem1°D0r±&%Button1°0s±& % MenuItem3°H0t±&%Button3°\0u±&% NSOwner0v±& % PRCTraceEdges0w±& % MenuItem5°N0x±& % MenuItem7°T0y±&%MenuItem°?0z±&%GormNSPopUpButton°80{±&%Button°0|±& % MenuItem2°F0}±&%Button2°0~± &01$NSNibConnector°k0€±&% NSOwner0±$°{0‚±$°r0ƒ±$°}0„±$°o0…±$°p0†1%NSNibOutletConnector°€°}0‡±&%thresholdCheck0ˆ±%°€°k0‰±& % edgeWindow0б%°€°p0‹±&%thresholdSlider0Œ±%°€°o0±&%thresholdField0Ž1&NSNibControlConnector°p°€0±&%changeThreshold:0±&°}°€0‘±&%thresholdToggle:0’±$°z0“±%°€°z0”±& % filterType0•±$°y0–±$°q0—±$°|0˜±$°s0™±$°l0š±$°w0›±$°m0œ±$°x0±$°n0ž±$°t0Ÿ±&°z°€0 ±&%filterTypeToggle:0¡±%°€°t0¢±&%zeroCrossCheck0£±&°{°€0¤±& % filterOK:0¥±&°r°€0¦±& % filterCancel:0§±&°t°€0¨±&%parametersChanged:0©±"&