PRICE-1.1.0/000755 001751 000024 00000000000 11745454641 013047 5ustar00multixstaff000000 000000 PRICE-1.1.0/README000644 001751 000024 00000021601 11745312511 013714 0ustar00multixstaff000000 000000 ========================== 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: 23 April 2012 Current Version: 1.1.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, it should be portable to OpenSTEP (I hope so, currently I don't have the computers to do the porting). TO DO ----- - check for planar/striped images - Implement color median filter for luma only ? - Brightness and Contrast should preserve the alpha channel - Convolution should preserve the alpha channel - Scale should work and preserve the alpha channel - Crop should work and preserve the alpha channel - Median filter should preserve the alpha channel - Equalization filter should preserve the alpha channel NOTES ----- - development and testing is currently done on MacOS-X 10.2, 10.3, 10.4 and a G3, G4, please report problems on other versions. 10.1 is now rarely tested but appears to continue to work. - GNUstep versions have been tested by me on Solaris, Linux (x86, ppc, 68k), MkLinux-ppc, OpenBSD/sparc, FreeBSD, NetBSD HISTORY ------- -- what's new in 1.1.0 -- (23 April 2010) + Bilinear scaling + bug fixes in custom edge tracer + filters now close preview on Cancel + Curves level correction * GNUstep convolve mantrix 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 + improvments 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-2011 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.1.0/.cvsignore000644 001751 000024 00000000006 10521763516 015036 0ustar00multixstaff000000 000000 build PRICE-1.1.0/AppController.h000644 001751 000024 00000002560 11340327243 015773 0ustar00multixstaff000000 000000 // // 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.1.0/AppController.m000644 001751 000024 00000005532 11340327243 016002 0ustar00multixstaff000000 000000 // // 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]; doc = [dc openDocumentWithContentsOfFile:filename display:YES]; 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.1.0/FFT.c000644 001751 000024 00000010560 11053357233 013623 0ustar00multixstaff000000 000000 /* * 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.1.0/FFT.h000644 001751 000024 00000002102 11053357233 013621 0ustar00multixstaff000000 000000 /* * 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.1.0/GNUmakefile000644 001751 000024 00000005533 11622275564 015126 0ustar00multixstaff000000 000000 # # 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.1.0 PACKAGE_NAME = PRICE APP_NAME = PRICE PRICE_APPLICATION_ICON = price-icon-os.tiff # # 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.1.0/GNUmakefile.preamble000644 001751 000024 00000001070 10745743470 016705 0ustar00multixstaff000000 000000 # # 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.1.0/Info-PRICE.plist000644 001751 000024 00000010601 11466362062 015650 0ustar00multixstaff000000 000000 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 CFBundleInfoDictionaryVersion 6.0 CFBundleName PRICE CFBundlePackageType APPL CFBundleSignature ???? CFBundleVersion 1.1.0 NSMainNibFile MainMenu NSPrincipalClass NSApplication PRICE-1.1.0/LICENSE000644 001751 000024 00000042307 10252400222 014034 0ustar00multixstaff000000 000000 The 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.1.0/MyDocument.h000644 001751 000024 00000002457 11114613572 015302 0ustar00multixstaff000000 000000 // // 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.1.0/MyDocument.m000644 001751 000024 00000025610 11622230651 015300 0ustar00multixstaff000000 000000 // // MyDocument.m // 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 "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" @implementation MyDocument - (NSData *)dataRepresentationOfType:(NSString *)aType { // Insert code here to write your document from the given data. You can also choose to override -fileWrapperRepresentationOfType: or -writeToFile:ofType: instead. return [activeImage TIFFRepresentation]; } - (BOOL)loadDataRepresentation:(NSData *)data ofType:(NSString *)aType { PRImage *tempImage; tempImage = [[PRImage alloc] initWithData:data]; if (tempImage != nil) { NSBitmapImageRep *tmpImageRep; PRImage *newImage; NSBitmapImageRep *newImageRep; unsigned char *dataPtr; unsigned char *dataPtr2; unsigned int k; unsigned int w, h, s; BOOL convertColorSpace; BOOL convertPlanar; int destSamplesPerPixel; /* 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 representations] objectAtIndex: 0]; w = [tmpImageRep pixelsWide]; h = [tmpImageRep pixelsHigh]; destSamplesPerPixel = 1; convertColorSpace = [[tmpImageRep colorSpaceName] isEqualToString: NSCalibratedBlackColorSpace] || [[tmpImageRep colorSpaceName] isEqualToString: NSDeviceBlackColorSpace]; convertPlanar = [tmpImageRep isPlanar]; if (convertColorSpace || convertPlanar) { /* 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]; s = w * h; dataPtr = [tmpImageRep bitmapData]; dataPtr2 = [newImageRep bitmapData]; if (convertPlanar) { int x, y; int 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) { 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"); } } [newImageRep setColorSpaceName:NSCalibratedWhiteColorSpace]; [newImage addRepresentation:newImageRep]; [newImageRep release]; [tempImage release]; tempImage = newImage; } } 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; } - (IBAction)saveDocumentAs:(id)sender /* we override the super class to change the extensionand type of the file */ { NSString *filepath; filepath = [self fileName]; filepath = [[filepath stringByDeletingPathExtension] stringByAppendingString: @".tiff"]; [self setFileName:filepath]; [self setFileType: @"tiff"]; [super saveDocumentAs: sender]; } - (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]; /* 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; 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]; /* instantiate and run the filter */ [self setActiveImage: [filter filterImage: activeImage with:parameters progressPanel:filterProgr]]; [filterProgr release]; /* reset the selected zoom ration, this will also cause a view update */ [windowController scaleImage]; } - (void)restoreLastImage { PRImage *tempImage; tempImage = [[PRImage alloc] initWithData: [activeImage TIFFRepresentation]]; [self setActiveImage: oldImage]; [oldImage release]; oldImage = tempImage; [[[self undoManager] prepareWithInvocationTarget: self] restoreLastImage]; [[windowController view] setFrameSize:[activeImage size]]; [windowController scaleImage]; [[windowController view] setNeedsDisplay:YES]; } - (void)saveCurrentImage { if (activeImage != nil) { if (oldImage != nil) [oldImage release]; oldImage = [[PRImage alloc] initWithData: [activeImage TIFFRepresentation]]; } } - (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]; } @end PRICE-1.1.0/PRBriCon.h000644 001751 000024 00000001424 11110404060 014607 0ustar00multixstaff000000 000000 // // 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.1.0/PRBriCon.m000644 001751 000024 00000012632 11341433723 014635 0ustar00multixstaff000000 000000 // // PRBriCon.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. #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; int w, h; int x, y; unsigned char *srcData; unsigned char *destData; int pixNum; BOOL isColor; int tempValue; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int destBytesPerRow; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; pixNum = h * w; /* check bith depth and color/greyscale image */ if ([srcImageRep hasAlpha]) { if ([srcImageRep samplesPerPixel] == 2) { isColor = NO; } else { isColor = YES; } } else { if ([srcImageRep samplesPerPixel] == 1) { isColor = NO; } else { isColor = YES; } } /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; if (isColor) { destSamplesPerPixel = 3; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bytesPerRow:w*destSamplesPerPixel bitsPerPixel:0]; } else { destSamplesPerPixel = 1; 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]; destBytesPerRow = [destImageRep bytesPerRow]; if (isColor) { for (y = 0; y < h; y++) for (x = 0; x < w; x++) { tempValue = rint((float)(srcData[srcBytesPerRow*y + srcSamplesPerPixel*x] - HALF_CHAR + bri) * con + HALF_CHAR); if (tempValue > UCHAR_MAX) tempValue = UCHAR_MAX; else if (tempValue < 0) tempValue = 0; destData[destSamplesPerPixel*(y*w + x)] = tempValue; tempValue = rint((float)(srcData[srcBytesPerRow*y + srcSamplesPerPixel*x + 1] - HALF_CHAR + bri) * con + HALF_CHAR); if (tempValue > UCHAR_MAX) tempValue = UCHAR_MAX; else if (tempValue < 0) tempValue = 0; destData[destSamplesPerPixel*(y*w + x) + 1] = tempValue; tempValue = rint((float)(srcData[srcBytesPerRow*y + srcSamplesPerPixel*x + 2] - HALF_CHAR + bri) * con + HALF_CHAR); if (tempValue > UCHAR_MAX) tempValue = UCHAR_MAX; else if (tempValue < 0) tempValue = 0; destData[destSamplesPerPixel*(y*w + x) + 2] = tempValue; } } else { for (y = 0; y < h; y++) for (x = 0; x < w; x++) { tempValue = rint((float)(srcData[srcBytesPerRow*y + x] - HALF_CHAR + bri) * con + HALF_CHAR); if (tempValue > UCHAR_MAX) tempValue = UCHAR_MAX; else if (tempValue < 0) tempValue = 0; destData[y*w + x] = tempValue; } } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (BOOL)displayProgress { return NO; } @end PRICE-1.1.0/PRCBriCon.h000644 001751 000024 00000002112 11343572676 014740 0ustar00multixstaff000000 000000 // // 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.1.0/PRCBriCon.m000644 001751 000024 00000007150 11344466171 014745 0ustar00multixstaff000000 000000 // // 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]; } - (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.1.0/PRCConvolve55.h000644 001751 000024 00000005667 11344462745 015547 0ustar00multixstaff000000 000000 // // 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.1.0/PRCConvolve55.m000644 001751 000024 00000015620 11344466171 015537 0ustar00multixstaff000000 000000 // // PRCConvolve55.m // 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 "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]; [previewController updatePreview: sender]; } - (IBAction)convMatrix12:(id)sender { convMatrix[0][1] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix13:(id)sender { convMatrix[0][2] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix14:(id)sender { convMatrix[0][3] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix15:(id)sender { convMatrix[0][4] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix21:(id)sender { convMatrix[1][0] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix22:(id)sender { convMatrix[1][1] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix23:(id)sender { convMatrix[1][2] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix24:(id)sender { convMatrix[1][3] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix25:(id)sender { convMatrix[1][4] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix31:(id)sender { convMatrix[2][0] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix32:(id)sender { convMatrix[2][1] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix33:(id)sender { convMatrix[2][2] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix34:(id)sender { convMatrix[2][3] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix35:(id)sender { convMatrix[2][4] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix41:(id)sender { convMatrix[3][0] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix42:(id)sender { convMatrix[3][1] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix43:(id)sender { convMatrix[3][2] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix44:(id)sender { convMatrix[3][3] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix45:(id)sender { convMatrix[3][4] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix51:(id)sender { convMatrix[4][0] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix52:(id)sender { convMatrix[4][1] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix53:(id)sender { convMatrix[4][2] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix54:(id)sender { convMatrix[4][3] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)convMatrix55:(id)sender { convMatrix[4][4] = [sender intValue]; [previewController updatePreview: sender]; } - (IBAction)autoRange:(id)sender { autoScale = !autoScale; if (autoScale) { [scaleField setEnabled:NO]; [offsetField setEnabled:NO]; } else { [scaleField setEnabled:YES]; [offsetField setEnabled:YES]; } [previewController updatePreview: sender]; } - (IBAction)scaleFactor:(id)sender { scale = [sender floatValue]; [previewController updatePreview: sender]; } - (IBAction)offsetFactor:(id)sender { offset = [sender intValue]; [previewController updatePreview: sender]; } - (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.1.0/PRCCrop.h000644 001751 000024 00000002412 11053357233 014456 0ustar00multixstaff000000 000000 // // PRCCrop.h // PRICE // // Created by Riccardo Mottola on Fri Jan 28 2005. // Copyright (c) 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 @interface PRCCrop : NSObject { IBOutlet NSWindow *cropWindow; IBOutlet NSTextField *topField; IBOutlet NSTextField *bottomField; IBOutlet NSTextField *leftField; IBOutlet NSTextField *rightField; IBOutlet NSTextField *widthField; IBOutlet NSTextField *heightField; int origWidth; int origHeight; } - (IBAction)showCrop:(id)sender; - (IBAction)cropOK:(id)sender; - (IBAction)cropCancel:(id)sender; - (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.1.0/PRCCrop.m000644 001751 000024 00000004630 11114613572 014466 0ustar00multixstaff000000 000000 // // PRCCrop.m // PRICE // // Created by Riccardo Mottola on Fri Jan 28 2005. // Copyright (c) 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 "PRCCrop.h" #import "MyDocument.h" #import "PRCrop.h" @implementation PRCCrop - (IBAction)showCrop:(id)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]; } - (IBAction)cropOK:(id)sender { NSArray *parameters; PRCrop *filter; /* encode parameters */ parameters = [NSArray arrayWithObjects: [NSNumber numberWithInt:[topField intValue]], [NSNumber numberWithInt:[bottomField intValue]], [NSNumber numberWithInt:[leftField intValue]], [NSNumber numberWithInt:[rightField intValue]], nil]; filter = [[PRCrop alloc] init]; [[[NSDocumentController sharedDocumentController] currentDocument] runFilter:filter with:parameters]; [filter release]; if ([[NSApp delegate] prefClosePanels]) [cropWindow performClose:nil]; } - (IBAction)cropCancel:(id)sender { [cropWindow performClose:nil]; } - (IBAction)changeTop:(id)sender { [self updateSize]; } - (IBAction)changeBottom:(id)sender { [self updateSize]; } - (IBAction)changeLeft:(id)sender { [self updateSize]; } - (IBAction)changeRight:(id)sender { [self updateSize]; } - (IBAction)resetValues:(id)sender { [topField setIntValue:0]; [bottomField setIntValue:0]; [leftField setIntValue:0]; [rightField setIntValue:0]; [self updateSize]; } - (void)updateSize { [widthField setIntValue:(origWidth - [rightField intValue] - [leftField intValue])]; [heightField setIntValue:(origHeight - [topField intValue] - [bottomField intValue])]; } @end PRICE-1.1.0/PRCCumHisto.h000644 001751 000024 00000001503 11053357233 015306 0ustar00multixstaff000000 000000 // // 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.1.0/PRCCumHisto.m000644 001751 000024 00000002110 11053357233 015306 0ustar00multixstaff000000 000000 // // 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.1.0/PRCCurves.h000644 001751 000024 00000002274 11624554742 015040 0ustar00multixstaff000000 000000 // // PRCCurves.h // PRICE // // Created by Riccardo Mottola on 7 August 2011. // 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 #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)curvesReset:(id)sender; - (IBAction)setBlackPoint:(id)sender; - (IBAction)setWhitePoint:(id)sender; @end PRICE-1.1.0/PRCCurves.m000644 001751 000024 00000007456 11657050116 015044 0ustar00multixstaff000000 000000 // // PRCCurves.m // PRICE // // Created by Riccardo Mottola on 7 August 2011. // 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 "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 isColor]) { 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)parametersChanged:(id)sender { [curvesView calculateTransformedHistograms]; [super parametersChanged: sender]; [curvesView setNeedsDisplay: YES]; } - (IBAction)curvesReset:(id)sender { [currPath removeAllPoints]; [currPath moveToPoint: NSMakePoint(0, 0)]; [currPath curveToPoint: NSMakePoint(255, 255) controlPoint1: NSMakePoint(10, 10) controlPoint2: NSMakePoint(245, 245)]; } - (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]; [blackPointField setIntValue: point]; [blackPointStepper setIntValue: point]; NSLog(@"black point: %d", 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]; [whitePointField setIntValue: point]; [whitePointStepper setIntValue: point]; NSLog(@"white point: %d", point); [curvesView setWhitePoint: point]; [self parametersChanged:sender]; } @end PRICE-1.1.0/PRCCustTraceEdges.h000644 001751 000024 00000003625 11344507060 016425 0ustar00multixstaff000000 000000 // // 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.1.0/PRCCustTraceEdges.m000644 001751 000024 00000016616 11344507060 016436 0ustar00multixstaff000000 000000 // // 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.1.0/PRCDFTHighPass.h000644 001751 000024 00000002431 11344465170 015623 0ustar00multixstaff000000 000000 // // 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.1.0/PRCDFTHighPass.m000644 001751 000024 00000011717 11344466171 015641 0ustar00multixstaff000000 000000 // // 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.1.0/PRCDFTLowPass.h000644 001751 000024 00000002426 11344465170 015511 0ustar00multixstaff000000 000000 // // 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.1.0/PRCDFTLowPass.m000644 001751 000024 00000011763 11344466171 015524 0ustar00multixstaff000000 000000 // // 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.1.0/PRCEqualize.h000644 001751 000024 00000001534 11344507060 015334 0ustar00multixstaff000000 000000 // // 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.1.0/PRCEqualize.m000644 001751 000024 00000003073 11374472131 015344 0ustar00multixstaff000000 000000 // // 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.1.0/PRCFourier.h000644 001751 000024 00000001371 11107357166 015176 0ustar00multixstaff000000 000000 // // 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.1.0/PRCFourier.m000644 001751 000024 00000001723 11107357166 015204 0ustar00multixstaff000000 000000 // // 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.1.0/PRCGrayscale.h000644 001751 000024 00000001535 11344462745 015502 0ustar00multixstaff000000 000000 // // 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.1.0/PRCGrayscale.m000644 001751 000024 00000003164 11470343040 015471 0ustar00multixstaff000000 000000 // // 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.1.0/PRCHisto.h000644 001751 000024 00000001405 11053357233 014642 0ustar00multixstaff000000 000000 // // 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.1.0/PRCHisto.m000644 001751 000024 00000002057 11053357233 014653 0ustar00multixstaff000000 000000 // // 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.1.0/PRCHistogram.h000644 001751 000024 00000001437 11053357233 015516 0ustar00multixstaff000000 000000 // // 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.1.0/PRCHistogram.m000644 001751 000024 00000001556 11053357233 015525 0ustar00multixstaff000000 000000 // // 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.1.0/PRCInvert.h000644 001751 000024 00000001374 11107357166 015035 0ustar00multixstaff000000 000000 // // 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.1.0/PRCInvert.m000644 001751 000024 00000001724 11107357166 015041 0ustar00multixstaff000000 000000 // // 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.1.0/PRCMedian.h000644 001751 000024 00000001705 11344507060 014752 0ustar00multixstaff000000 000000 // // 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.1.0/PRCMedian.m000644 001751 000024 00000004221 11344507060 014753 0ustar00multixstaff000000 000000 // // 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.1.0/PRCProgress.h000644 001751 000024 00000002032 11343522126 015352 0ustar00multixstaff000000 000000 // // 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.1.0/PRCProgress.m000644 001751 000024 00000002506 11053357233 015370 0ustar00multixstaff000000 000000 // // PRCProgress.m // 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 "PRCProgress.h" @implementation PRCProgress - (IBAction)showProgress:(id)sender { if (!progressPanel) [NSBundle loadNibNamed:@"ProgressPanel" owner:self]; [progressPanel makeKeyAndOrderFront:nil]; } - (void)setTitle:(NSString *)title { NSLog(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.1.0/PRCScale.h000644 001751 000024 00000002543 11344461220 014602 0ustar00multixstaff000000 000000 // // PRCScale.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 "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; int pixelsX; int pixelsY; int oldPixelsX; int oldPixelsY; float ratio; } - (IBAction)changePixelsX:(id)sender; - (IBAction)changePixelsY:(id)sender; - (IBAction)changePercentX:(id)sender; - (IBAction)changePercentY:(id)sender; @end PRICE-1.1.0/PRCScale.m000644 001751 000024 00000007711 11466362062 014622 0ustar00multixstaff000000 000000 // // PRCScale.m // 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. #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 / oldPixelsX *100)]; if ([uniformToggle intValue]) { pixelsY = (int)rint(pixelsX * ratio); [pixelsYField setIntValue:pixelsY]; [percentYField setFloatValue:[percentXField floatValue]]; } [previewController updatePreview: sender]; } - (IBAction)changePixelsY:(id)sender { pixelsY = [pixelsYField intValue]; [percentYField setFloatValue:((float)pixelsY / oldPixelsY *100)]; if ([uniformToggle intValue]) { pixelsX = (int)rint(pixelsY / ratio); [pixelsXField setIntValue:pixelsX]; [percentXField setFloatValue:[percentYField floatValue]]; } [previewController updatePreview: sender]; } - (IBAction)changePercentX:(id)sender { float percentX; percentX = [percentXField floatValue]; pixelsX = (int)rint(oldPixelsX * (percentX / 100)); [pixelsXField setIntValue:pixelsX]; if ([uniformToggle intValue]) { pixelsY = (int)rint(pixelsX * ratio); [pixelsYField setIntValue:pixelsY]; [percentYField setFloatValue:percentX]; } [previewController updatePreview: sender]; } - (IBAction)changePercentY:(id)sender { float percentY; percentY = [percentYField floatValue]; pixelsY = (int)rint(oldPixelsY * (percentY / 100)); [pixelsYField setIntValue:pixelsY]; if ([uniformToggle intValue]) { pixelsX = (int)rint(pixelsY / ratio); [pixelsXField setIntValue:pixelsX]; [percentXField setFloatValue:percentY]; } [previewController updatePreview: sender]; } - (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]; oldPixelsX = pixelsX; oldPixelsY = 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.1.0/PRCTraceEdges.h000644 001751 000024 00000002737 11344507060 015571 0ustar00multixstaff000000 000000 // // 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.1.0/PRCTraceEdges.m000644 001751 000024 00000006105 11344507060 015567 0ustar00multixstaff000000 000000 // // 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.1.0/PRCTransforms.h000644 001751 000024 00000001757 11107652430 015721 0ustar00multixstaff000000 000000 // // 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.1.0/PRCTransforms.m000644 001751 000024 00000006744 11107661044 015730 0ustar00multixstaff000000 000000 // // 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.1.0/PRConvolve55.h000644 001751 000024 00000001601 11107126531 015407 0ustar00multixstaff000000 000000 // // 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.1.0/PRConvolve55.m000644 001751 000024 00000121002 11470605546 015425 0ustar00multixstaff000000 000000 // // PRConvolve55.m // PRICE // // Created by Riccardo Mottola on Sat Jan 18 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. #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; int w, h; int x, y; /* image scanning variables */ int i, j; /* convolve matrix scanning */ unsigned char *srcData; unsigned char *destData; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; float normalizeFactor; int minVal, maxVal; BOOL isColored; 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]; destSamplesPerPixel = srcSamplesPerPixel; isColored = NO; if ([srcImageRep hasAlpha]) { if ([srcImageRep samplesPerPixel] == 2) { NSLog(@"Grayscale image with alpha"); return srcImage; } else { isColored = YES; NSLog(@"Color image with alpha"); return srcImage; } } else { if ([srcImageRep samplesPerPixel] == 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:w*destSamplesPerPixel bitsPerPixel:0]; } else { NSLog(@"colored image without alpha"); isColored = YES; /* 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:NSCalibratedRGBColorSpace bytesPerRow:w*destSamplesPerPixel bitsPerPixel:0]; } } srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; if (isColored) { 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)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 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))*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j-1))*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j-1))*srcSamplesPerPixel + 2]; } for (j = 0 - x; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 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))*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcSamplesPerPixel + 2]; } for (j = 0 - x; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 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[(y*w + x)*3] = (unsigned char)convSumR; destData[(y*w + x)*3 + 1] = (unsigned char)convSumG; destData[(y*w + x)*3 + 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)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 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)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 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[(y*w + x)*3] = (unsigned char)convSumR; destData[(y*w + x)*3 + 1] = (unsigned char)convSumG; destData[(y*w + x)*3 + 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)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 2]; } for (j = 0 - (x - w); j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel + 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)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 2]; } for (j = 0 - (x - w); j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel + 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[(y*w + x)*3] = (unsigned char)convSumR; destData[(y*w + x)*3 + 1] = (unsigned char)convSumG; destData[(y*w + x)*3 + 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))*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcSamplesPerPixel + 2]; } for (j = 0 - x; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 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[(y*w + x)*3] = (unsigned char)convSumR; destData[(y*w + x)*3 + 1] = (unsigned char)convSumG; destData[(y*w + x)*3 + 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)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 2]; } for (j = 0 - (x - w); j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel + 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[(y*w + x)*3] = (unsigned char)convSumR; destData[(y*w + x)*3 + 1] = (unsigned char)convSumG; destData[(y*w + x)*3 + 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))*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j-1))*srcSamplesPerPixel + 2]; } for (j = 0 - x; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 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))*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j-1))*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j-1))*srcSamplesPerPixel + 2]; } for (j = 0 - x; j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 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[(y*w + x)*3] = (unsigned char)convSumR; destData[(y*w + x)*3 + 1] = (unsigned char)convSumG; destData[(y*w + x)*3 + 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)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 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)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 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[(y*w + x)*3] = (unsigned char)convSumR; destData[(y*w + x)*3 + 1] = (unsigned char)convSumG; destData[(y*w + x)*3+ 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)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 2]; } for (j = 0 - (x - w); j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel + 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)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 2]; } for (j = 0 - (x - w); j <= 2; j++) { convSumR += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j+1))*srcSamplesPerPixel + 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[(y*w + x)*3] = (unsigned char)convSumR; destData[(y*w + x)*3 + 1] = (unsigned char)convSumG; destData[(y*w + x)*3 + 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)*srcSamplesPerPixel]; convSumG += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 1]; convSumB += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)*srcSamplesPerPixel + 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[(y*w + x)*3] = (unsigned char)convSumR; destData[(y*w + x)*3 + 1] = (unsigned char)convSumG; destData[(y*w + x)*3 + 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-j) * w + (x-i)]; 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))]; for (j = 0 - x; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+j)]; } 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))]; for (j = 0 - x; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)]; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[y*w + 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)]; 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)]; convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[y*w + 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)]; for (j = 0 - (x - w); j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i-1)) * srcBytesPerRow + (x+(-j+1))]; } 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)]; for (j = 0 - (x - w); j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))]; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[y*w + 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))]; for (j = 0 - x; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)]; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[y*w + 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)]; for (j = 0 - (x - w); j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))];; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[y*w + 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))]; for (j = 0 - x; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+j)]; } 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))]; for (j = 0 - x; j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+j)]; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[y*w + 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)]; 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)]; convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[y*w + 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)]; for (j = 0 - (x - w); j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+i) * srcBytesPerRow + (x+(-j+1))]; } 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)]; for (j = 0 - (x - w); j <= 2; j++) convSum += convMat[i+2][j+2] * (int)srcData[(y+(-i+1)) * srcBytesPerRow + (x+(-j+1))]; } convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[y*w + 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)]; convSum += offset; convSum = (int)rint((float)convSum / scale); if (convSum < 0) convSum = 0; if (convSum > UCHAR_MAX) convSum = UCHAR_MAX; destData[y*w + x] = (unsigned char)convSum; } } if (progPanel != nil) { [self setActivity:@"Done"]; [self showProgress]; } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.1.0/PRCrop.h000644 001751 000024 00000001464 11114613572 014360 0ustar00multixstaff000000 000000 // // 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.1.0/PRCrop.m000644 001751 000024 00000010223 11310011363 014342 0ustar00multixstaff000000 000000 // // PRCrop.m // PRICE // // Created by Riccardo Mottola on Fri Jan 28 2005. // Copyright (c) 2005-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. #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; int origW, origH; int newW, newH; int x, y; int i; unsigned char *srcData; unsigned char *destData; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int destBytesPerRow; BOOL isColor; /* some trace */ NSLog(@"top: %d left:%d", pixTop, pixLeft); /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; origW = [srcImageRep pixelsWide]; origH = [srcImageRep pixelsHigh]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = srcSamplesPerPixel; newW = origW - pixLeft - pixRight; newH = origH - pixTop - pixBottom; /* check bith depth and color/greyscale image */ if ([srcImageRep hasAlpha]) { if ([srcImageRep samplesPerPixel] == 2) isColor = NO; else isColor = YES; } else { if ([srcImageRep samplesPerPixel] == 1) isColor = NO; else isColor = YES; } /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(newW, newH)]; if (isColor) { destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:newW pixelsHigh:newH bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bytesPerRow:newW*destSamplesPerPixel bitsPerPixel:0]; } else { destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:newW pixelsHigh:newH bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedWhiteColorSpace bytesPerRow:newW*destSamplesPerPixel bitsPerPixel:0]; } srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; for (y = 0; y < newH; y++) for (x = 0; x < newW; x++) for (i = 0; i < srcSamplesPerPixel; i++) destData[destBytesPerRow * y + destSamplesPerPixel * x + i] = srcData[srcBytesPerRow * (y + pixTop) + srcSamplesPerPixel * (x + pixRight) + i]; [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.1.0/PRCumHisto.h000644 001751 000024 00000001265 11053357233 015210 0ustar00multixstaff000000 000000 // // 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.1.0/PRCumHisto.m000644 001751 000024 00000005152 11053357233 015214 0ustar00multixstaff000000 000000 // // PRCumHisto.m // 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 "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 (isColor) { 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.1.0/PRCurves.h000644 001751 000024 00000001544 11622027012 014713 0ustar00multixstaff000000 000000 // // 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.1.0/PRCurves.m000644 001751 000024 00000013326 11651764674 014751 0ustar00multixstaff000000 000000 // // PRCurves.m // 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 "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", [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: %d", [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: %d", [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: %d", [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: %d", [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; int w, h; int x, y; unsigned char *srcData; unsigned char *destData; int pixNum; BOOL isColor; int tempValue; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int destBytesPerRow; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; pixNum = h * w; /* check bith depth and color/greyscale image */ if ([srcImageRep hasAlpha]) { if ([srcImageRep samplesPerPixel] == 2) { isColor = NO; } else { isColor = YES; } } else { if ([srcImageRep samplesPerPixel] == 1) { isColor = NO; } else { isColor = YES; } } /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; if (isColor) { destSamplesPerPixel = 3; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bytesPerRow:w*destSamplesPerPixel bitsPerPixel:0]; } else { destSamplesPerPixel = 1; 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]; destBytesPerRow = [destImageRep bytesPerRow]; if (isColor) { for (y = 0; y < h; y++) for (x = 0; x < w; x++) { tempValue = arrayR[srcData[srcBytesPerRow*y + srcSamplesPerPixel*x]]; destData[destSamplesPerPixel*(y*w + x)] = tempValue; tempValue = arrayG[srcData[srcBytesPerRow*y + srcSamplesPerPixel*x + 1]]; destData[destSamplesPerPixel*(y*w + x) + 1] = tempValue; tempValue = arrayB[srcData[srcBytesPerRow*y + srcSamplesPerPixel*x + 2]]; destData[destSamplesPerPixel*(y*w + x) + 2] = tempValue; } } else { for (y = 0; y < h; y++) for (x = 0; x < w; x++) { destData[y*w + x] = arrayL[srcData[srcBytesPerRow*y + x]]; } } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (BOOL)displayProgress { return NO; } @end PRICE-1.1.0/PRCurvesPath.h000644 001751 000024 00000001511 11622027012 015522 0ustar00multixstaff000000 000000 // // PRCurvesPath.h // PRICE // // Created by Riccardo Mottola on Thu 11 August 2011. // 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 @interface PRCurvesPath : NSBezierPath { BOOL isEditing; } -(BOOL)isEditing; -(void)setIsEditing: (BOOL)flag; -(NSArray *)values; @end PRICE-1.1.0/PRCurvesPath.m000644 001751 000024 00000006557 11651532317 015561 0ustar00multixstaff000000 000000 // // PRCurvesPath.m // PRICE // // Created by Riccardo Mottola on Thu 11 August 2011. // 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 "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[2].x - 1, cp[2].y - 1, 3, 3); [NSBezierPath fillRect: cpRect]; } else if (pe == NSCurveToBezierPathElement) { [[NSColor orangeColor] set]; cpRect = NSMakeRect(cp[0].x - 1, cp[0].y - 1, 3, 3); [NSBezierPath fillRect: cpRect]; [[NSColor orangeColor] set]; cpRect = NSMakeRect(cp[1].x - 1, cp[1].y - 1, 3, 3); [NSBezierPath fillRect: cpRect]; [[NSColor purpleColor] set]; cpRect = NSMakeRect(cp[2].x - 1, cp[2].y - 1, 3, 3); [NSBezierPath fillRect: cpRect]; } } } -(BOOL)isEditing; { return isEditing; } -(void)setIsEditing: (BOOL)flag { isEditing = flag; } -(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; } @end PRICE-1.1.0/PRCurvesView.h000644 001751 000024 00000005145 11651764674 015577 0ustar00multixstaff000000 000000 // // PRCurvesView.h // PRICE // // Created by Riccardo Mottola on 7 August 2011. // 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 #import #import "PRCurvesPath.h" @class PRCCurves; @class PRImage; @interface PRCurvesView : NSView { PRCCurves *controller; BOOL isColor; unsigned pixNum; float histogramScale; /* scale factor for both in and out histograms */ unsigned long int histogramDenormL[UCHAR_MAX]; /* not normalized pixel count for each level */ unsigned long int histogramDenormR[UCHAR_MAX]; /* not normalized pixel count for each level */ unsigned long int histogramDenormG[UCHAR_MAX]; /* not normalized pixel count for each level */ unsigned long int histogramDenormB[UCHAR_MAX]; /* 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)isColor; -(PRCurvesPath *)luminancePath; -(PRCurvesPath *)redPath; -(PRCurvesPath *)greenPath; -(PRCurvesPath *)bluePath; -(void)setBlackPoint: (int)value; -(void)setWhitePoint: (int)value; -(void)setFilterController: (PRCCurves *)aFilterController; -(void)calculateHistogram: (PRImage *)image; -(void)calculateTransformedHistograms; @end PRICE-1.1.0/PRCurvesView.m000644 001751 000024 00000032403 11657231665 015574 0ustar00multixstaff000000 000000 // // PRCurvesView.m // PRICE // // Created by Riccardo Mottola on 7 August 2011. // 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 "PRCurvesView.h" #import "PRCCurves.h" @implementation PRCurvesView - (id)initWithFrame:(NSRect)frame { self = [super initWithFrame:frame]; if (self) { isColor = 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]; [pathLumi moveToPoint: NSMakePoint(0, 0)]; [pathLumi curveToPoint: NSMakePoint(255, 255) controlPoint1: NSMakePoint(50, 0) controlPoint2: NSMakePoint(205, 255)]; [pathR moveToPoint: NSMakePoint(0, 0)]; [pathR curveToPoint: NSMakePoint(255, 255) controlPoint1: NSMakePoint(50, 0) controlPoint2: NSMakePoint(205, 255)]; [pathG moveToPoint: NSMakePoint(0, 0)]; [pathG curveToPoint: NSMakePoint(255, 255) controlPoint1: NSMakePoint(50, 0) controlPoint2: NSMakePoint(205, 255)]; [pathB moveToPoint: NSMakePoint(0, 0)]; [pathB curveToPoint: NSMakePoint(255, 255) controlPoint1: NSMakePoint(50, 0) controlPoint2: NSMakePoint(205, 255)]; histogramScale = 0.3; } return self; } - (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)isColor { return isColor; } -(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 (1 <= [path elementCount]) { 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]; } } else if (pe == NSCurveToBezierPathElement) { float diff; diff = cp[0].x - (float)value; cp[0].x = (float)value; // cp[1].x = cp[1].x - diff; // cp[2].x = cp[2].x - diff; } [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 (isColor) { [[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; int w, h; int x, y; int i; int srcSamplesPerPixel; int 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]; srcSamplesPerPixel = [theImageRep samplesPerPixel]; /* check bith depth and color/greyscale image */ if ([theImageRep hasAlpha]) { if ([theImageRep samplesPerPixel] == 2) { printf("Grayscale image\n"); isColor = NO; } else { printf("Color image\n"); isColor = YES; } } else { if ([theImageRep samplesPerPixel] == 1) { printf("Grayscale image\n"); isColor = NO; } else { printf("Color image\n"); isColor = YES; } } theData = [theImageRep bitmapData]; if (isColor) { /* 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[theData[y*srcBytesPerRow + x]]++; histogramDenormG[theData[y*srcBytesPerRow + x + 1]]++; histogramDenormB[theData[y*srcBytesPerRow + x + 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]]++; /* 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 = 1/maxHisto * histogramScale; if (isColor) { [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 * viewHeight)]; [pathHG lineToPoint: NSMakePoint(i, histogramG[i] * histoScale * viewHeight)]; [pathHB lineToPoint: NSMakePoint(i, histogramB[i] * histoScale * viewHeight)]; } [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 * viewHeight)]; } [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]; /* not normalized pixel count for each level */ unsigned long int histogramDenormRTr[UCHAR_MAX]; /* not normalized pixel count for each level */ unsigned long int histogramDenormGTr[UCHAR_MAX]; /* not normalized pixel count for each level */ unsigned long int histogramDenormBTr[UCHAR_MAX]; /* 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 (isColor) { 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 = 1/maxHisto * histogramScale; [pathHLumiTr removeAllPoints]; [pathHLumiTr moveToPoint: NSMakePoint(0, 0)]; for (i = 0; i < UCHAR_MAX; i++) { [pathHLumiTr lineToPoint: NSMakePoint(histogramLTr[i] * histoScale * viewHeight, i)]; } [pathHLumiTr lineToPoint: NSMakePoint(0, viewHeight -1)]; [pathHRTr removeAllPoints]; [pathHGTr removeAllPoints]; [pathHBTr removeAllPoints]; [pathHRTr moveToPoint: NSMakePoint(0, 0)]; [pathHGTr moveToPoint: NSMakePoint(0, 0)]; [pathHBTr moveToPoint: NSMakePoint(0, 0)]; for (i = 0; i < UCHAR_MAX; i++) { [pathHRTr lineToPoint: NSMakePoint(histogramRTr[i] * histoScale * viewHeight, i)]; [pathHGTr lineToPoint: NSMakePoint(histogramGTr[i] * histoScale * viewHeight, i)]; [pathHBTr lineToPoint: NSMakePoint(histogramBTr[i] * histoScale * viewHeight, i)]; } [pathHRTr lineToPoint: NSMakePoint(0, viewHeight -1)]; [pathHGTr lineToPoint: NSMakePoint(0, viewHeight -1)]; [pathHBTr lineToPoint: NSMakePoint(0, viewHeight -1)]; NSLog(@"tranformed histogram calculculation ended"); } @end PRICE-1.1.0/PRCustTraceEdges.h000644 001751 000024 00000002154 11547061627 016327 0ustar00multixstaff000000 000000 // // 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.1.0/PRCustTraceEdges.m000644 001751 000024 00000024473 11470610706 016335 0ustar00multixstaff000000 000000 // // PRCustTraceEdges.m // PRICE // // Created by Riccardo Mottola on Fri Mar 19 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 "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 { NSBitmapImageRep *srcImageRep; unsigned char *srcData; PRImage *destImage; NSBitmapImageRep *destImageRep; unsigned char *destData; PRImage *firstImage, *secondImage, *thirdImage; NSBitmapImageRep *firstImageRep, *secondImageRep, *thirdImageRep; unsigned char *fiData, *siData, *tiData; int w, h; int i; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int pixNum; 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 = UCHAR_MAX / finalLevels; printf("Level number: %d\n", finalLevels); /* 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]; pixNum = h * w; printf("pixels: %d\n", pixNum); srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = 1; /* check bith depth and color/greyscale image */ if ([srcImageRep hasAlpha]) { if ([srcImageRep samplesPerPixel] == 2) { NSLog(@"Grayscale image\n"); } else { PRGrayscaleFilter *grayFilter; 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]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; } } else { if ([srcImageRep samplesPerPixel] == 1) { NSLog(@"Grayscale image\n"); } else { PRGrayscaleFilter *grayFilter; 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]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; } } /* 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]; destData = [destImageRep bitmapData]; /* let's make the paper white */ memset(destData, UCHAR_MAX, pixNum); /* allocate filters */ medianFilter = [[PRMedian alloc] init]; edgeFilter = [[PRTraceEdges alloc] init]; if (finalLevels > 0) { if (enable1) { 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]; fiData = [firstImageRep bitmapData]; for (i = 0; i < pixNum; i++) { if (*(fiData + i) == 0) *(destData + i) -= finalLevelSize; } } if (enable2) { 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]; siData = [secondImageRep bitmapData]; for (i = 0; i < pixNum; i++) { if (*(siData + i) == 0) *(destData + i) -= finalLevelSize; } } if (enable3) { 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]; tiData = [thirdImageRep bitmapData]; for (i = 0; i < pixNum; i++) { if (*(tiData + i) == 0) *(destData + i) -= finalLevelSize; } } } else { /* 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]; srcData = [srcImageRep bitmapData]; for (i = 0; i < pixNum; i++) { if (*(srcData + i) == 0) *(destData + i) = 0; } } /* release filters */ [medianFilter release]; [edgeFilter release]; if (progPanel != nil) { [self setActivity:@"Done"]; [self showProgress]; } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.1.0/PRDFTFilter.h000644 001751 000024 00000001561 11053357233 015237 0ustar00multixstaff000000 000000 // // 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.1.0/PRDFTFilter.m000644 001751 000024 00000026366 11470546737 015272 0ustar00multixstaff000000 000000 // // PRDFTFilter.m // PRICE // // Created by Riccardo Mottola on Tue Nov 18 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 "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; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; 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]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; /* calculate back the bit number */ 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 ([srcImageRep hasAlpha]) { if ([srcImageRep samplesPerPixel] == 2) { printf("Grayscale image\n"); } else { printf("Color image\n"); return srcImage; } } else { if ([srcImageRep samplesPerPixel] == 1) { printf("Grayscale image\n"); } else { 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]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; } } /* 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] / 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 addRepresentation: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.1.0/PRDFTHighPass.h000644 001751 000024 00000001570 11053357233 015520 0ustar00multixstaff000000 000000 // // 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.1.0/PRDFTHighPass.m000644 001751 000024 00000011022 11306157553 015522 0ustar00multixstaff000000 000000 // // 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.1.0/PRDFTLowPass.h000644 001751 000024 00000001567 11053357233 015410 0ustar00multixstaff000000 000000 // // 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.1.0/PRDFTLowPass.m000644 001751 000024 00000010060 11306157553 015405 0ustar00multixstaff000000 000000 // // 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.1.0/PREqualize.h000644 001751 000024 00000001505 11110372726 015227 0ustar00multixstaff000000 000000 // // 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.1.0/PREqualize.m000644 001751 000024 00000027307 11310511156 015236 0ustar00multixstaff000000 000000 // // PREqualize.m // PRICE // Image level equalization // // Created by Riccardo Mottola on Fri Dec 05 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. #include #include #import "PREqualize.h" @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; int w, h; int x, y; int i; unsigned char *srcData; unsigned char *destData; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int destBytesPerRow; int pixNum; BOOL isColor; /* some trace */ printf("levels: %d\n", UCHAR_MAX); printf("space: %d\n", space); /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; pixNum = h * w; printf("pixels: %d\n", pixNum); srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = srcSamplesPerPixel; /* check bith depth and color/greyscale image */ if ([srcImageRep hasAlpha]) { if (srcSamplesPerPixel == 2) { printf("Grayscale image\n"); isColor = NO; } else { printf("Color image\n"); isColor = YES; } } else { if (srcSamplesPerPixel == 1) { printf("Grayscale image\n"); isColor = NO; } else { printf("Color image\n"); isColor = YES; } } /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; if (isColor) { destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bytesPerRow:w*destSamplesPerPixel bitsPerPixel:0]; } else { 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]; destBytesPerRow = [destImageRep bytesPerRow]; if (isColor) { 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 + x]]++; histogramDenormG[srcData[y*srcBytesPerRow + x + 1]]++; histogramDenormB[srcData[y*srcBytesPerRow + 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*3; x += 3) { destData[y*destBytesPerRow + x] = floor((UCHAR_MAX+0.9)*cumulativeHistogramR[srcData[y*srcBytesPerRow + x]]); destData[y*destBytesPerRow + x + 1] = floor((UCHAR_MAX+0.9)*cumulativeHistogramG[srcData[y*srcBytesPerRow + x + 1]]); destData[y*destBytesPerRow + x + 2] = floor((UCHAR_MAX+0.9)*cumulativeHistogramB[srcData[y*srcBytesPerRow + x + 2]]); } } 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*3; x += 3) { r = srcData[y*srcBytesPerRow + x]; g = srcData[y*srcBytesPerRow + x + 1]; b = srcData[y*srcBytesPerRow + 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 + x] = yy; destData[y*destBytesPerRow + x + 1] = cb; destData[y*destBytesPerRow + x + 2] = cr; } /* calculate the histogram */ for (i = 0; i <= UCHAR_MAX; i++) histogramDenormY[i] = 0; for (y = 0; y < h; y++) for (x = 0; x < w*3; x += 3) histogramDenormY[destData[y*destBytesPerRow + 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*3; x += 3) { destData[y*destBytesPerRow + x] = floor((UCHAR_MAX+0.9)*cumulativeHistogramY[destData[y*destBytesPerRow + x]]); } /* now we convert back to RGB */ for (y = 0; y < h; y++) for (x = 0; x < w*3; x += 3) { yy = destData[y*destBytesPerRow + x]; cb = destData[y*destBytesPerRow + x + 1]; cr = destData[y*destBytesPerRow + 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 + x] = r; destData[y*destBytesPerRow + x + 1] = g; destData[y*destBytesPerRow + x + 2] = b; } } } 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 + x] = floor((UCHAR_MAX+0.9)*cumulativeHistogram[srcData[y*srcBytesPerRow + x]]); } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.1.0/PRFilter.h000644 001751 000024 00000001733 11343522127 014700 0ustar00multixstaff000000 000000 // // 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.1.0/PRFilter.m000644 001751 000024 00000002136 11622026622 014702 0ustar00multixstaff000000 000000 // // 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.1.0/PRFilterController.h000644 001751 000024 00000002102 11342605414 016733 0ustar00multixstaff000000 000000 // // PRFilterController.h // PRICE // Filter Controller // // Created by Riccardo Mottola on 2/19/10. // Copyright 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" @class PRPreviewController; @class PRFilter; @interface PRFilterController : NSObject { PRPreviewController *previewController; PRFilter *filter; } - (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.1.0/PRFilterController.m000644 001751 000024 00000005023 11651534313 016747 0ustar00multixstaff000000 000000 // // 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 { [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 { 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.1.0/PRFourier.h000644 001751 000024 00000001402 11107357166 015066 0ustar00multixstaff000000 000000 // // 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.1.0/PRFourier.m000644 001751 000024 00000021517 11310175124 015070 0ustar00multixstaff000000 000000 // // PRFourier.m // PRICE // // Created by Riccardo Mottola on Fri Jan 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 "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 srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; 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]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = 1; if (w > h) bitNum = binaryLog(w); else bitNum = binaryLog(h); num = binpow(bitNum); /* 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 ([srcImageRep hasAlpha]) { if ([srcImageRep samplesPerPixel] == 2) { printf("Grayscale image + alpha\n"); } else { printf("Color image + alpha\n"); return srcImage; } } else { if ([srcImageRep samplesPerPixel] == 1) { printf("Grayscale image\n"); } else { 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 representations] objectAtIndex:0]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; } } /* 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); /* the image is greyscale, no bit-depth displace */ 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-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); 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 addRepresentation: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.1.0/PRGrayscaleFilter.h000644 001751 000024 00000001523 11107126531 016525 0ustar00multixstaff000000 000000 // // 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.1.0/PRGrayscaleFilter.m000644 001751 000024 00000007375 11470343040 016544 0ustar00multixstaff000000 000000 // // PRGrayscaleFilter.m // PRICE // // Created by Riccardo Mottola on Mon Dec 23 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 "PRGrayscaleFilter.h" #include @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; int w, h; int x, y; unsigned char *srcData; unsigned char *destData; unsigned char *p1; int srcSamplesPerPixel; int srcBytesPerRow; int destBytesPerRow; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; /* if the image is already greyscale... */ if ([srcImageRep hasAlpha]) { if ([srcImageRep samplesPerPixel] == 2) return srcImage; } else { if ([srcImageRep samplesPerPixel] == 1) return srcImage; } /* 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:1 hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedWhiteColorSpace bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; 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 + x * srcSamplesPerPixel; destData[y*destBytesPerRow + x] = (unsigned char)rint((p1[0] + p1[1] + p1[2]) / 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 + x * srcSamplesPerPixel; destData[y*destBytesPerRow + x] = (unsigned char)rintf(0.2990f*p1[0] + 0.5870f*p1[1] + 0.1140f*p1[2]); } } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (BOOL)displayProgress { return NO; } @end PRICE-1.1.0/PRHisto.h000644 001751 000024 00000001264 11053357233 014542 0ustar00multixstaff000000 000000 // // 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.1.0/PRHisto.m000644 001751 000024 00000012361 11053357233 014547 0ustar00multixstaff000000 000000 // // PRHisto.m // 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 "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 (isColor) { 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.1.0/PRHistogram.h000644 001751 000024 00000003144 11306157553 015414 0ustar00multixstaff000000 000000 // // PRHistogram.h // PRICE // // Created by Riccardo Mottola on Thu Dec 11 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 #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 isColor; } - (void)setImage :(PRImage *)image; - (void)calculateHistogram; - (void)displayHistogram :(NSRect)viewRect; @end PRICE-1.1.0/PRHistogram.m000644 001751 000024 00000012546 11310507766 015427 0ustar00multixstaff000000 000000 // // PRHistogram.m // PRICE // // Created by Riccardo Mottola on Thu Dec 11 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 "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; int w, h; int x, y; int i; int srcSamplesPerPixel; int srcBytesPerRow; int pixNum; unsigned long int histogramDenorm[UCHAR_MAX]; /* not normalized pixel count for each level */ unsigned long int histogramDenormR[UCHAR_MAX]; /* not normalized pixel count for each level */ unsigned long int histogramDenormG[UCHAR_MAX]; /* not normalized pixel count for each level */ unsigned long int histogramDenormB[UCHAR_MAX]; /* 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]; srcSamplesPerPixel = [theImageRep samplesPerPixel]; /* check bith depth and color/greyscale image */ if ([theImageRep hasAlpha]) { if ([theImageRep samplesPerPixel] == 2) { printf("Grayscale image\n"); isColor = NO; } else { printf("Color image\n"); isColor = YES; } } else { if ([theImageRep samplesPerPixel] == 1) { printf("Grayscale image\n"); isColor = NO; } else { printf("Color image\n"); isColor = YES; } } theData = [theImageRep bitmapData]; if (isColor) { /* 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[theData[y*srcBytesPerRow + x]]++; histogramDenormG[theData[y*srcBytesPerRow + x + 1]]++; histogramDenormB[theData[y*srcBytesPerRow + x + 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]]++; /* 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.1.0/PRICEInfo.plist000644 001751 000024 00000002735 11737274551 015612 0ustar00multixstaff000000 000000 { ApplicationDescription = "Precision Raster Image Convolution Engine"; ApplicationIcon = "price-icon-os.tiff"; ApplicationName = PRICE; ApplicationRelease = "1.1.0"; Authors = ( "Riccardo Mottola" ); Copyright = "Copyright (C) 2002-2012"; CopyrightDescription = "Released under the GNU General Public License v2+."; FullVersionID = "1.1.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 = Viewer; 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.1.0/PRImage.h000644 001751 000024 00000002267 11342572332 014502 0ustar00multixstaff000000 000000 // // PRImage.h // PRICE // // Created by Riccardo Mottola on Wed Oct 12 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. // 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 @interface PRImage : NSImage { @private NSBitmapImageRep *bitRep; @private int pixelH; @private int pixelW; @private int bitsPerPixel; } - (int)height; - (int)width; - (int)bitsPP; - (NSSize)pixelSize; - (NSBitmapImageRep *)bitmapRep; @end PRICE-1.1.0/PRImage.m000644 001751 000024 00000004363 11342572332 014506 0ustar00multixstaff000000 000000 // // PRImage.m // PRICE // // Created by Riccardo Mottola on Wed Oct 12 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 "PRImage.h" @implementation PRImage - (void)addRepresentation:(NSImageRep *)imageRep { [super addRepresentation:imageRep]; bitRep = [[self representations] objectAtIndex:0]; if (![bitRep isKindOfClass:[NSBitmapImageRep class]]) { NSLog(@"we got %@", [bitRep class]); } pixelH = [bitRep pixelsHigh]; pixelW = [bitRep pixelsWide]; bitsPerPixel = [bitRep bitsPerPixel]; } - (id)initWithData:(NSData*)data { self = [super initWithData:data]; bitRep = [[self representations] objectAtIndex:0]; if (![bitRep isKindOfClass:[NSBitmapImageRep class]]) { NSLog(@"we got %@", [bitRep class]); } pixelH = [bitRep pixelsHigh]; pixelW = [bitRep pixelsWide]; bitsPerPixel = [bitRep bitsPerPixel]; [self setSize: [self pixelSize]]; return self; } - (id)initWithSize:(NSSize)aSize { self = [super initWithSize:aSize]; return self; } - (void)dealloc { [super dealloc]; } - (int)height { return pixelH; } - (int)width { return pixelW; } - (int)bitsPP { return bitsPerPixel; } - (NSSize)pixelSize { return NSMakeSize((float)pixelW,(float)pixelH); } - (NSBitmapImageRep *)bitmapRep { NSBitmapImageRep *currBitRep; currBitRep = [[self representations] objectAtIndex:0]; if (bitRep != currBitRep) { NSLog(@"old bitmap representation got invalidated."); if ([currBitRep isKindOfClass:[NSCachedImageRep class]]) { NSLog(@"We got cached, we need to regenerate."); bitRep = [NSBitmapImageRep imageRepWithData: [self TIFFRepresentation]]; } } return bitRep; } @end PRICE-1.1.0/PRImageView.h000644 001751 000024 00000001353 11053357233 015330 0ustar00multixstaff000000 000000 // // PRImageView.h // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // 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. #import @interface PRImageView : NSImageView { } - (void)scaleFrameBy:(float)scale; @end PRICE-1.1.0/PRImageView.m000644 001751 000024 00000004576 11315217005 015340 0ustar00multixstaff000000 000000 // // PRImageView.m // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // Copyright (c) 2002-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 "PRImageView.h" @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; imageSize = [[self image] size]; at = [NSAffineTransform transform]; [at scaleBy:scale]; [self setFrameSize:[at transformSize:imageSize]]; [self setNeedsDisplay:YES]; } - (BOOL) knowsPageRange: (NSRangePointer) range { range->location = 1; range->length = 1; return YES; } - (NSRect ) rectForPage: (int) pageNumber { NSPrintInfo *pi = [[[NSDocumentController sharedDocumentController] currentDocument] printInfo]; return [pi imageablePageBounds]; } -(void) dealloc { [super dealloc]; } @end PRICE-1.1.0/PRInvert.h000644 001751 000024 00000001400 11107351575 014716 0ustar00multixstaff000000 000000 // // 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.1.0/PRInvert.m000644 001751 000024 00000010766 11470614622 014740 0ustar00multixstaff000000 000000 // // PRInvert.m // PRICE // // Created by Riccardo Mottola on Fri Dec 07 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. #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; int w, h; int x, y; unsigned char *srcData; unsigned char *destData; unsigned char *p1; unsigned char *p2; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int destBytesPerRow; /* get source image representation and associated information */ srcImageRep = [srcImage bitmapRep]; w = [srcImageRep pixelsWide]; h = [srcImageRep pixelsHigh]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; srcBytesPerRow = [srcImageRep bytesPerRow]; /* 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:[srcImageRep samplesPerPixel] hasAlpha:[srcImageRep hasAlpha] isPlanar:NO colorSpaceName:[srcImageRep colorSpaceName] bytesPerRow:0 bitsPerPixel:0]; srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destSamplesPerPixel = [destImageRep samplesPerPixel]; destBytesPerRow = [destImageRep bytesPerRow]; /* 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 hasAlpha]) { if ([srcImageRep samplesPerPixel] == 2) for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcSamplesPerPixel * x; p2 = destData + destBytesPerRow * y + destSamplesPerPixel * x; p2[0] = UCHAR_MAX - p1[0]; } else for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcSamplesPerPixel * x; p2 = destData + destBytesPerRow * y + destSamplesPerPixel * x; p2[0] = UCHAR_MAX - p1[0]; p2[1] = p1[1]; } } else { if ([srcImageRep samplesPerPixel] == 1) for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcSamplesPerPixel * x; p2 = destData + destBytesPerRow * y + destSamplesPerPixel * x; p2[0] = UCHAR_MAX - p1[0]; } else for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcSamplesPerPixel * x; p2 = destData + destBytesPerRow * y + destSamplesPerPixel * x; p2[0] = UCHAR_MAX - p1[0]; p2[1] = UCHAR_MAX - p1[1]; p2[2] = UCHAR_MAX - p1[2]; } } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (BOOL)displayProgress { return NO; } @end PRICE-1.1.0/PRMedian.h000644 001751 000024 00000001652 11053357233 014652 0ustar00multixstaff000000 000000 // // 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.1.0/PRMedian.m000644 001751 000024 00000040374 11310016361 014651 0ustar00multixstaff000000 000000 // // PRMedian.m // PRICE // // Created by Riccardo Mottola on Thu Mar 25 2004. // Copyright (c) 2004-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 "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; int w, h; int x, y; int i, j; unsigned char *srcData; unsigned char *destData; int pixNum; unsigned char *filterMask; /* the median window */ int realSize; /* real width of the median window */ int chNum; /* channels to filter, grey or RGB */ int c; /* current channel */ int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int 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]; pixNum = h * w; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = srcSamplesPerPixel; /* check bith depth and color/greyscale image */ if ([srcImageRep hasAlpha]) { if ([srcImageRep samplesPerPixel] == 2) { NSLog(@"Grayscale image with alpha"); return srcImage; } else { NSLog(@"Color image with alpha"); return srcImage; } } else { /* allocate destination image and its representation */ destImage = [[PRImage alloc] initWithSize:NSMakeSize(w, h)]; if ([srcImageRep samplesPerPixel] == 1) { destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedWhiteColorSpace bytesPerRow:w*destSamplesPerPixel bitsPerPixel:0]; chNum = 1; } else { destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:w pixelsHigh:h bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bytesPerRow:w*destSamplesPerPixel bitsPerPixel:0]; chNum = 3; } } destData = [destImageRep bitmapData]; srcData = [srcImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; 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 < chNum; c++) { for (i = 0; i < realSize; i++) filterMask[i] = srcData[srcBytesPerRow*y + (x - size + i)*srcSamplesPerPixel + 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*destSamplesPerPixel + 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 < chNum; c++) { for (i = 0; i < realSize; i++) filterMask[i] = srcData[(y - size + i) * srcBytesPerRow + x*srcSamplesPerPixel + 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*destSamplesPerPixel + 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 < chNum; c++) { for (i = 0; i < realSize; i++) filterMask[i] = srcData[y*srcBytesPerRow + (x - size + i)*srcSamplesPerPixel + 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*srcSamplesPerPixel + 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*destSamplesPerPixel + 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 < chNum; c++) { k = 0; for (i = 0; i < realSize; i++) filterMask[k++] = srcData[y * srcBytesPerRow + (x - size + i)*srcSamplesPerPixel + c]; for (i = 1; i <= size; i++) filterMask[k++] = srcData[(y - i) * srcBytesPerRow + x*srcSamplesPerPixel + c]; for (i = 1; i <= size; i++) filterMask[k++] = srcData[(y + i) * srcBytesPerRow + x*srcSamplesPerPixel + 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*destSamplesPerPixel + 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 < chNum; c++) { for (i = 0; i < realSize; i++) { for (j = 0; j < realSize; j++) filterMask[j] = srcData[(y - size + i) * srcBytesPerRow + (x - size + j)*srcSamplesPerPixel + 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*destSamplesPerPixel + 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 < chNum; 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)*srcSamplesPerPixel + 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*destSamplesPerPixel + c] = filterMask[size*(realSize) + size]; /* center */ } } } free(filterMask); } } else NSLog(@"Unrecognized median filter type."); if (progPanel != nil) { [self setActivity:@"Done"]; [self showProgress]; } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.1.0/PRPreviewController.h000644 001751 000024 00000002421 11343522130 017125 0ustar00multixstaff000000 000000 // // PRPreviewController.h // PRICE // // Created by Riccardo Mottola on 2/19/10. // Copyright 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 "PRImageView.h" #import "PRFilterController.h" #import "PRCProgress.h" @interface PRPreviewController : NSObject { IBOutlet NSPanel *previewWindow; IBOutlet NSButton *buttContinuous; IBOutlet PRImageView *view; 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; @end PRICE-1.1.0/PRPreviewController.m000644 001751 000024 00000003671 11343522130 017142 0ustar00multixstaff000000 000000 // // PRPreviewController.m // PRICE // // Created by Riccardo Mottola on 2/19/10. // Copyright 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 "PRPreviewController.h" @implementation PRPreviewController - (id)init { if ((self = [super init])) { [NSBundle loadNibNamed:@"Preview" owner:self]; } return self; } - (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]; [view scaleFrameBy:1.0]; } /* ---- 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.1.0/PRProgressAction.h000644 001751 000024 00000002071 11107126531 016406 0ustar00multixstaff000000 000000 // // 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.1.0/PRProgressAction.m000644 001751 000024 00000001762 11053357233 016426 0ustar00multixstaff000000 000000 // // 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.1.0/PRScale.h000644 001751 000024 00000001615 11466362062 014507 0ustar00multixstaff000000 000000 // // 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.1.0/PRScale.m000644 001751 000024 00000017266 11470605251 014520 0ustar00multixstaff000000 000000 // // PRScale.m // 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. #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; int origW, origH; int x, y; int i; unsigned char *srcData; unsigned char *destData; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int 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]; origW = [srcImageRep pixelsWide]; origH = [srcImageRep pixelsHigh]; xRatio = (float)origW / (float)sizeX; yRatio = (float)origH / (float)sizeY; /* check bith depth and color/greyscale image */ if ([srcImageRep hasAlpha]) { NSLog(@"image scaling not supported for images with alpha channel."); if ([srcImageRep samplesPerPixel] == 2) return srcImage; else return srcImage; } else { destImage = [[PRImage alloc] initWithSize:NSMakeSize(sizeX, sizeY)]; if ([srcImageRep samplesPerPixel] == 1) { destSamplesPerPixel = 1; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:sizeX pixelsHigh:sizeY bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedWhiteColorSpace bytesPerRow:destSamplesPerPixel*sizeX bitsPerPixel:0]; } else { destSamplesPerPixel = 3; destImageRep = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:sizeX pixelsHigh:sizeY bitsPerSample:8 samplesPerPixel:destSamplesPerPixel hasAlpha:NO isPlanar:NO colorSpaceName:NSCalibratedRGBColorSpace bytesPerRow:destSamplesPerPixel*sizeX bitsPerPixel:0]; } } srcData = [srcImageRep bitmapData]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; 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[destSamplesPerPixel * (y * sizeX + x) + i] = srcData[srcBytesPerRow * (int)(y * yRatio) +srcSamplesPerPixel * (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 + srcSamplesPerPixel * x0 + i]; v2 = srcData[srcBytesPerRow * y0 + srcSamplesPerPixel * (x0+1) + i]; v3 = srcData[srcBytesPerRow * (y0+1) + srcSamplesPerPixel * x0 + i]; v4 = srcData[srcBytesPerRow * (y0+1) + srcSamplesPerPixel * (x0+1) + i]; destData[destSamplesPerPixel * (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 + srcSamplesPerPixel * x0 + i]; v2 = srcData[srcBytesPerRow * y0 + srcSamplesPerPixel * (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 + srcSamplesPerPixel * x0 + i]; v3 = srcData[srcBytesPerRow * (y0+1) + srcSamplesPerPixel * x0 + i]; destData[destSamplesPerPixel * (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 < srcSamplesPerPixel; i++) { v1 = srcData[srcBytesPerRow * y0 + srcSamplesPerPixel * x0 + i]; destData[destSamplesPerPixel * (y * sizeX + x) + i] = \ (int)(v1*(1-xDiff)*(1-yDiff)); } } } else NSLog(@"Unknown scaling method"); if (progPanel != nil) { [self setActivity:@"Done"]; [self showProgress]; } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.1.0/PRTraceEdges.h000644 001751 000024 00000001526 11110651747 015464 0ustar00multixstaff000000 000000 // // 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.1.0/PRTraceEdges.m000644 001751 000024 00000023714 11310550537 015471 0ustar00multixstaff000000 000000 // // PRTraceEdges.m // 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 "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; int w, h; int x, y; int i, j; unsigned char *srcData; unsigned char *destData; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int destBytesPerRow; int pixNum; 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]; pixNum = h * w; srcBytesPerRow = [srcImageRep bytesPerRow]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; destSamplesPerPixel = 1; /* check bith depth and color/greyscale image */ if ([srcImageRep hasAlpha]) { if (srcSamplesPerPixel == 2) { printf("Grayscale image\n"); } else { printf("Color image\n"); return srcImage; } } else { if (srcSamplesPerPixel == 1) { printf("Grayscale image\n"); } else { 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]; srcSamplesPerPixel = [srcImageRep samplesPerPixel]; } } 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] / 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 */ // NSLog(@"%d", filterType); 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:w*destSamplesPerPixel bitsPerPixel:0]; destData = [destImageRep bitmapData]; destBytesPerRow = [destImageRep bytesPerRow]; /* copy the image back from the float matrix */ if (useThreshold) { if (useZeroCross) { /* zero crossing */ for (y = 0; y < h; y++) { p1 = destData + (y * w); for (x = 0; x < w; x++) { float temp; temp = fabs(N[y*w + x]); if (temp < thresholdLevel) p1[x] = UCHAR_MAX; else p1[x] = 0; } } } else { /* no zero crossing */ for (y = 0; y < h; y++) { p1 = destData + (y * w); for (x = 0; x < w; x++) { if (N[y*w + x] > thresholdLevel) p1[x] = 0; else p1[x] = UCHAR_MAX; } } } } else { /* thresholding to prevent clipping */ for (y = 0; y < h; y++) { p1 = destData + (y * w); for (x = 0; x < w; x++) { float temp; temp = fabs(N[y*w + x]); if (temp < 0) p1[x] = 0; else if (temp < 1) p1[x] = (unsigned char) rint(temp * UCHAR_MAX); else p1[x] = UCHAR_MAX; } } } /* let's free the float data */ free(M); free(N); [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } @end PRICE-1.1.0/PRTransforms.h000644 001751 000024 00000002321 11107661044 015603 0ustar00multixstaff000000 000000 // // 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.1.0/PRTransforms.m000644 001751 000024 00000033160 11307575540 015624 0ustar00multixstaff000000 000000 // // PRTransforms.m // PRICE // // Created by Riccardo Mottola on Mon Dec 23 2002. // Copyright (c) 2002-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 "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; int w, h; int x, y; int s; /* sample */ unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int 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]; /* 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]; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcSamplesPerPixel * x; p2 = destData + destSamplesPerPixel * y + destBytesPerRow * x; for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (PRImage *)rotateImage90:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; int w, h; int x, y; int s; /* sample */ unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int 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]; /* 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]; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcSamplesPerPixel * x; p2 = destData + destBytesPerRow * (w-x-1) + destSamplesPerPixel * y; for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (PRImage *)rotateImage180:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; int w, h; int x, y; int s; /* sample */ unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int 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]; /* 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]; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcSamplesPerPixel * x; p2 = destData + destBytesPerRow * (h-y-1) + destSamplesPerPixel * (w-x-1); for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (PRImage *)rotateImage270:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; int w, h; int x, y; int s; unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int 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]; /* 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]; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcSamplesPerPixel * x; p2 = destData + destBytesPerRow * x + destSamplesPerPixel * (h-y-1); for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (PRImage *)flipImageVert:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; int w, h; int x, y; int s; unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int 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]; /* 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]; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcSamplesPerPixel * x; p2 = destData + destBytesPerRow * (h-y-1) + destSamplesPerPixel * x; for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (PRImage *)flipImageHoriz:(PRImage *)srcImage { NSBitmapImageRep *srcImageRep; PRImage *destImage; NSBitmapImageRep *destImageRep; int w, h; int x, y; int s; unsigned char *srcData; unsigned char *destData; unsigned char *p1, *p2; int srcSamplesPerPixel; int destSamplesPerPixel; int srcBytesPerRow; int 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]; /* 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]; for (y = 0; y < h; y++) for (x = 0; x < w; x++) { p1 = srcData + srcBytesPerRow * y + srcSamplesPerPixel * x; p2 = destData + destBytesPerRow * y + destSamplesPerPixel * (w-x-1); for (s = 0; s < srcSamplesPerPixel; s++) p2[s] = p1[s]; } [destImage addRepresentation:destImageRep]; [destImageRep release]; [destImage autorelease]; return destImage; } - (BOOL)displayProgress { return NO; } @end PRICE-1.1.0/PRWindowController.h000644 001751 000024 00000002423 11317164026 016764 0ustar00multixstaff000000 000000 // // PRWindowController.h // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // Copyright (c) 2002-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 #import "PRImageView.h" #import "PRImage.h" @interface PRWindowController : NSWindowController { IBOutlet PRImageView *view; IBOutlet NSTextField *imageInfoLine; IBOutlet NSPanel *scalePanel; IBOutlet NSTextField *scalePanelScaleField; IBOutlet NSPopUpButton *scalePopUp; float scale; /* image scaling factor */ } - (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; @end PRICE-1.1.0/PRWindowController.m000644 001751 000024 00000020367 11342605325 017000 0ustar00multixstaff000000 000000 // // PRWindowController.m // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // Copyright (c) 2002-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 "PRWindowController.h" #import "MyDocument.h" @implementation PRWindowController - (void)dealloc { NSLog(@"dealloc window controller"); /* 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 = [[sender 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; /* display the data by MyDocument's activeImage method */ currImage = [[self document] activeImage]; [view setImage: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]; } /* update the information */ [self setImageInfo:currImage]; /* add an observer for the window resize */ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_windowDidResize:) name:NSWindowDidResizeNotification object:currWin]; } - (PRImageView *)view /* view accessor */ { return view; } - (void)setImageToDraw:(PRImage *)image { [view setImage:image]; [self setImageInfo:image]; } - (void)setImageInfo:(PRImage *)image { [imageInfoLine setStringValue: [NSString stringWithFormat: @"%d x %d, %d bpp", [image width], [image height], [image bitsPP] ]]; } @end PRICE-1.1.0/English.lproj/000755 001751 000024 00000000000 11745454640 015564 5ustar00multixstaff000000 000000 PRICE-1.1.0/main.m000644 001751 000024 00000001340 11053357233 014136 0ustar00multixstaff000000 000000 // // main.m // PRICE // // Created by Riccardo Mottola on Thu Dec 12 2002. // 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. #import int main(int argc, const char *argv[]) { return NSApplicationMain(argc, argv); } PRICE-1.1.0/price128.icns000644 001751 000024 00000145551 10236147531 015264 0ustar00multixstaff000000 000000 icnsË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.1.0/PRICE.pbproj/000755 001751 000024 00000000000 11745454641 015204 5ustar00multixstaff000000 000000 PRICE-1.1.0/PRICE.pcproj/000755 001751 000024 00000000000 11745454641 015205 5ustar00multixstaff000000 000000 PRICE-1.1.0/PRICE.xcode/000755 001751 000024 00000000000 11745454641 015012 5ustar00multixstaff000000 000000 PRICE-1.1.0/PRICE.xcodeproj/000755 001751 000024 00000000000 11745454641 015705 5ustar00multixstaff000000 000000 PRICE-1.1.0/Resources/000755 001751 000024 00000000000 11745454641 015021 5ustar00multixstaff000000 000000 PRICE-1.1.0/Resources/BriCon.gorm/000755 001751 000024 00000000000 11745454641 017140 5ustar00multixstaff000000 000000 PRICE-1.1.0/Resources/price-icon-os.tiff000644 001751 000024 00000100434 10422661601 020327 0ustar00multixstaff000000 000000 MM*þ@@þ@ð@@(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 ÿ±&%Pixel Difference0?±&&&ÿ%0@±0A±& % common_Nibble’%0B±"0C±&%Separated PixDiff°?&&ÿ%’%0D±"0E±&%Roberts°?&&ÿ%’%0F±"0G±&%Prewitt0H±&&&ÿ%’%0I±"0J±&%Sobel0K±&&&ÿ%’%0L±"0M±&%Abdou0N±&&&ÿ%’%0O±"0P±& % Laplacian (4)0Q±&&&ÿ%’%0R±"0S±& % Laplacian (8)0T±&&&ÿ%’%0U±"0V±&%Laplacian (Prewitt)0W±&&&ÿ%’% &&&&&&%’0X±&0Y±&&&& &&°=°:°=%%%%%0Z±% C! B  BÈ A€  BÈ A€&0[± &%0\±0]±& % Zero Cross°° &&&&&&&&&&&&&&%’0^±&0_±&°&&& &&0`±°#°00a±&%windowBackgroundColor0b±&%Window0c±& % Trace Edges°c ?€ B F@ F@%0d±0e±&%NSApplicationIcon&   D  D€0f± &0g± &0h1#NSMutableDictionary1$ NSDictionary&0i±&%Button2°0j±& % MenuItem4°I0k±&%Button3°Z0l±& % MenuItem5°L0m±& % MenuItem6°O0n±&%NSOwner0o±& % PRCTraceEdges0p±& % MenuItem7°R0q±& % MenuItem8°U0r±& % TextField°0s±&%GormNSPopUpButton°60t±&%Button°0u±&%Slider°(0v±& % MenuItem1°B0w±& % GormNSPanel°0x±& % MenuItem2°D0y±&%Button1°0z±&%MenuItem°=0{±& % MenuItem3°F0|± &0}1%NSNibConnector°w0~±&%NSOwner0±%°t0€±%°y0±%°i0‚±%°r0ƒ±%°u0„1&NSNibOutletConnector°~°i0…±&%thresholdCheck0†±&°~°w0‡±& % edgeWindow0ˆ±&°~°u0‰±&%thresholdSlider0б&°~°r0‹±&%thresholdField0Œ1'NSNibControlConnector°u°~0±&%changeThreshold:0ޱ'°i°~0±&%thresholdToggle:0±%°s0‘±&°~°s0’±& % filterType0“±%°z0”±%°v0•±%°x0–±%°{0—±%°j0˜±%°l0™±%°m0š±%°p0›±%°q0œ±%°k0±'°s°~0ž±&%filterTypeToggle:0Ÿ±&°~°k0 ±&%zeroCrossCheck0¡±'°t°~0¢±& % filterOK:0£±'°y°~0¤±& % filterCancel:0¥±'°k°~0¦±&%parametersChanged:0§±#&PRICE-1.1.0/Resources/Scale.gorm/data.classes000644 001751 000024 00000001532 11370726523 021277 0ustar00multixstaff000000 000000 { "## 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.1.0/Resources/Scale.gorm/data.info000644 001751 000024 00000000270 11466364512 020575 0ustar00multixstaff000000 000000 GNUstep archive00002ee1:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.1.0/Resources/Scale.gorm/objects.gorm000644 001751 000024 00000014056 11466364512 021335 0ustar00multixstaff000000 000000 GNUstep archive00002ee1:00000023:000000a0:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A C€ CY&% C\ D/@01 NSView% ?€ A C€ CY  C€ CY&01 NSMutableArray1NSArray&  01 NSTextField1 NSControl% B° C# BŠ A¨  BŠ A¨&0± &%0 1NSTextFieldCell1 NSActionCell1NSCell0 ±&0 1NSFont%° &&&&&&&& &&&&&&%’0 1NSColor0 ±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±° °0±& % textColor’0±% B° Bô BŠ A¨  BŠ A¨&0± &%0±0±&° °&&&&&&&& &&&&&&%’° °’01NSButton% C4 Ap B` AÀ  B` AÀ&0± &%01 NSButtonCell0±&%OK° &&&&&&&&&&&&&&%’0±&0±&&&& &&0±% Bâ Ap 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- Bô 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 Bô BŒ A  BŒ A&08± &%09±0:±&%Height:°&&&&&&&&& &&&&&&%’° °’0;±% C- BÊ Bˆ A€  Bˆ A€&0<± &%0=±0>±&%uniform° &&&&&&&&&&&&&&%’0?±&0@±&0A1NSImage0B1NSMutableString&%common_SwitchOn&&& &&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°[ ?€ ?€ F@ F@%&   D€ D@0\± &0]± &°0^1NSMutableDictionary1 NSDictionary&0_±&%Button2°;0`±&%NSOwner0a±&%PRCScale0b±& % TextField1°0c±& % TextField2°"0d±& % TextField°0e±& % TextField3°'0f±& % TextField4°+0g±& % TextField5°/0h±&%GormNSPopUpButton°C0i±&%Button°0j±& % TextField6°30k±& % TextField7°70l±& % MenuItem1°M0m±& % TextField8°S0n±& % GormNSPanel°0o±&%Button1°0p±&%MenuItem°J0q± &0r1!NSNibConnector°n0s±&%NSOwner0t±!°d0u±!°b0v±!°i0w±!°o0x1"NSNibOutletConnector°s°n0y±& % scaleWindow0z±"°s°d0{±& % pixelsXField0|±"°s°b0}±& % pixelsYField0~1#NSNibControlConnector°b°s0±&%changePixelsY:0€±#°d°s0±&%changePixelsX:0‚±!°c0ƒ±!°e0„±!°f0…±!°g0†±!°j0‡±!°k0ˆ±"°s°e0‰±& % percentXField0б"°s°f0‹±& % percentYField0Œ±#°f°s0±&%changePercentY:0ޱ#°e°s0±&%changePercentX:0±!°_0‘±"°s°_0’±& % uniformToggle0“±!°h0”±!°p0•±!°l0–±!°m0—±"°s°h0˜±& % methodSelect0™±#°i°s0š±& % filterOK:0›±#°o°s0œ±& % filterCancel:0±#°h°s0ž±&%parametersChanged:0Ÿ±#°_°s°ž0 ±&PRICE-1.1.0/Resources/ProgressPanel.gorm/data.classes000644 001751 000024 00000006714 10422662203 023032 0ustar00multixstaff000000 000000 { 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.1.0/Resources/ProgressPanel.gorm/objects.gorm000644 001751 000024 00000003254 10422662203 023055 0ustar00multixstaff000000 000000 GNUstep 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.1.0/Resources/Preview.gorm/data.classes000644 001751 000024 00000000750 11414601342 021660 0ustar00multixstaff000000 000000 { "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "cleanPreview:", "updatePreview:" ); Super = NSObject; }; PRImageView = { Actions = ( ); Outlets = ( ); Super = NSImageView; }; PRPreviewController = { Actions = ( "cleanPreview:", "updatePreview:" ); Outlets = ( previewWindow, buttContinuous, view, progressBar, activityDescription ); Super = NSObject; }; }PRICE-1.1.0/Resources/Preview.gorm/data.info000644 001751 000024 00000000270 11414601342 021153 0ustar00multixstaff000000 000000 GNUstep archive00002f45:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.1.0/Resources/Preview.gorm/objects.gorm000644 001751 000024 00000010115 11414601342 021703 0ustar00multixstaff000000 000000 GNUstep archive00002f45:00000024:00000067:00000000:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A Câ C”& % C¥ 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 ± &0 1GSControlTemplate0 ±& % PRImageView1 NSImageView1 NSControl% C5 BÀ B  BÀ B&0 ± &%01 NSImageCell1NSCell01NSFont%&&&&&&&&&&&&&&%%% ?€ ?€’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˜ A Bh AÀ  Bh AÀ&0± &%01 NSButtonCell1 NSActionCell0±&%Update°&&&&&&&&&&&&&&%’0±&0 ±&&&& &&0!±% BÞ A@ BÀ A€  BÀ A€&0"± &%0#±0$±& % Continuous0%1NSImage0&1NSMutableString&%common_SwitchOff°&&&&&&&&&&&&&&%’0'±&0(±&0)±0*±&%common_SwitchOn&&& &&0+1NSProgressIndicator% CÌ€ A0 Að A   Að A &0,± & ?µUUUUUU ?ð ?ð0-1 NSTextField% CT A0 C6 A  C6 A&0.± &%0/1NSTextFieldCell00±&01±% A@°0&&&&&&&& &&&&&&%’02±°03±&%System04±&%textBackgroundColor05±°°306±& % textColor’07±°°08±&%windowBackgroundColor09±&%Window0:±&%Preview°: A B  F@ F@%&   DŸ@ DrÀ0;± &0<± &0=1 NSMutableDictionary1! NSDictionary& 0>±& % Button(0)°0?±& % TextField(0)°-0@±&%NSOwner0A±&%PRPreviewController0B±& % Scroller(1)°0C±& % ScrollView(0)°0D±&%Panel(0)°0E±& % ClipView(0)° 0F±& % Scroller(0)°0G±& % ImageView(0)° 0H±&%ProgressIndicator(0)°+0I±& % Button(1)°!0J±&%View(0)°0K± &0L1"NSNibConnector°D°@0M±"°J°D0N±"°G°J0O±"°C°J0P±"°E°C0Q±"°F°C0R1#NSNibControlConnector°F°C0S±& % _doScroll:0T±"°B°C0U±#°B°C0V±& % _doScroll:0W±"°>°J0X±"°I°J0Y1$NSNibOutletConnector°@°I0Z±&%buttContinuous0[±$°@°D0\±& % previewWindow0]±$°@°G0^±&%view0_±#°>°@0`±&%updatePreview:0a±"°H°J0b±"°?°J0c±$°@°?0d±&%activityDescription0e±$°@°H0f±& % progressBar0g± &°G° PRICE-1.1.0/Resources/PRWindow.gorm/data.classes000644 001751 000024 00000001076 11315220371 021751 0ustar00multixstaff000000 000000 { "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "scalePanelOk:", "scalePanelCancel:", "orderFrontFontPanel:", "scaleFromMenu:" ); Super = NSObject; }; PRImageView = { Actions = ( ); Outlets = ( ); Super = NSImageView; }; PRWindowController = { Actions = ( "scaleFromMenu:", "scalePanelOk:", "scalePanelCancel:" ); Outlets = ( view, imageInfoLine, scalePanel, scalePanelScaleField, scalePopUp ); Super = NSWindowController; }; }PRICE-1.1.0/Resources/PRWindow.gorm/data.info000644 001751 000024 00000000274 11314733646 021263 0ustar00multixstaff000000 000000 GNUstep archive00002e7f:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%GNUstep gui-0.10.30±& % Typed StreamPRICE-1.1.0/Resources/PRWindow.gorm/objects.gorm000644 001751 000024 00000024073 11315220371 022002 0ustar00multixstaff000000 000000 GNUstep archive00002e7f:00000029:00000117:00000003:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&%01NSString& % GormNSPanel01GSWindowTemplate1GSClassSwapper0±&%NSPanel1NSPanel1 NSWindow1 NSResponder% ?€ A C4 Bº& % C¸€ D@01 NSView% ?€ A C4 Bº  C4 Bº&01 NSMutableArray1 NSArray&01 NSTextField1 NSControl% B¾ BT B‚ A¨  B‚ A¨&0 ± &%0 1NSTextFieldCell1 NSActionCell1NSCell0 ±&%1000 1NSFont%&&&&&&&& &&&&&&%’0 1NSColor0±&%NSNamedColorSpace0±&%System0±&%textBackgroundColor0±°°0±& % textColor’0±% Ap BT BŠ A¨  BŠ A¨&0± &%0±0±&%Zoom:0±% A@&&&&&&&& &&&&&&%’° °’01NSButton% B¨ Cn B` AÀ  B` AÀ&0± &%01 NSButtonCell0±&%Set° &&&&&&&&&&&&&&%’0±&0±&&&& &&0±% A Cn B` AÀ  B` AÀ&0± &%0 ±0!±&%Cancel° &&&&&&&&&&&&&&%’0"±&0#±&&&& &&0$±% B¨ BÄ B` AÀ  B` AÀ&0%± &%0&±0'±&%Set° &&&&&&&&&&&&&&%’0(±&0)±&&&& &&0*±% A0 BÄ B` AÀ  B` AÀ&0+± &%0,±0-±&%Cancel° &&&&&&&&&&&&&&%’0.±&0/±&&&& &&00±% BÐ A  B` AÀ  B` AÀ&01± &%02±03±&%Set° &&&&&&&&&&&&&&%’04±&05±&&&& &&06±% Aà A  B` AÀ  B` AÀ&07± &%08±09±&%Cancel° &&&&&&&&&&&&&&%’0:±&0;±&&&& &&0<±°0=±&%System0>±&%windowBackgroundColor0?±&%Window0@±&%Zoom°@ ?€ ?€ F@ F@%&   D  D€0A±&%Button5°60B±& % MenuItem70C1 NSMenuItem0D±&%1500E±&&&ÿ%’%–0F±& % NSDeferred0G± &0H±0I±&%NSWindow± % ?€ A CÔ€ C€&% CD DIÀ0J± % ?€ A CÔ€ C€  CÔ€ C€&0K± &0L1 NSPopUpButton% A @  Bò A°  Bò A°&0M± &%0N1NSPopUpButtonCell1NSMenuItemCell0O±&° &&&&&&&&0P1NSMenu0Q±&0R± &  0S±0T±&%12.50U±&&&ÿ%’% 0V±0W±&%250X±&&&ÿ%’%0Y±0Z±&%500[±&&&ÿ%’%20\±0]±&%750^±&&&ÿ%’%K0_±0`±&%100°U&&ÿ%0a1NSImage0b±& % common_Nibble’%d°C0c±0d±&%2000e±&&&ÿ%’%È0f±0g±&%400°U&&ÿ%’%0h±0i±&%Fit vertically0j±&&&ÿ%’%ÿÿÿÿ0k±0l±&%Fit horizontally0m±&&&ÿ%’%ÿÿÿþ0n±0o±&%Fit0p±&&&ÿ%’%ÿÿÿý0q±0r±& % Custom...0s±&&&ÿ%’%ÿÿÿü&&&&&&%’0t±&0u±&&&& &&°_°P°_%%%%%0v±% C @  Cw A¨  Cw A¨&0w± &%0x±0y±&° &&&&&&&& &&&&&&%’° °’0z1 NSScrollView% B CÔ€ Cz  CÔ€ Cz&0{± &0|1 NSClipView% A¨ @ CÉ Cc C2 CÉ Cc&0}± &0~1GSControlTemplate0±& % PRImageView1 NSImageView% C2 BÀ B  BÀ B&0€± &%01! NSImageCell° &&&&&&&&&&&&&&%%% ?€ ?€’0‚±°°=0ƒ±&%controlBackgroundColor0„1" NSScroller% A¨ Cf CÉ A  CÉ A&0…± &%0†±0‡±&° &&&&&&&&&&&&&&&’0ˆ±"% @ @ A Cv  A Cv&0‰± &%0б°‡° &&&&&&&&&&&&&&&’°|% A A A A °„°ˆ°<0‹±&%Window0Œ±& % My Window°Œ Bð Bp F@ F@%0±0ޱ&%NSApplicationIcon&   D  D€0±& % MenuItem10°Y0±& % MenuItem8°h0‘±& % MenuItem11°q0’±& % MenuItem9°\0“±& % My Window°H0”±&%Button°0•±& % MenuItem13°k0–±& % MenuItem14°n0—±& % TextField°0˜±& % ClipView(0)°|0™±&%GSCustomClassMap0š±&0›±& % ImageView(0)°0œ±& % ScrollView(0)°z0±& % Scroller(1)°ˆ0ž±& % Scroller(0)°„0Ÿ±& % NSVisible0 ± &0¡±& % ScrollView0¢±% Ap C C € CG  C € CG&0£± &0¤±% A¨ @ C• C0  C• C0&0¥± &0¦± %  C € CG  C € CG&0§± &0¨±°0©±&%System0ª±& % controlColor0«±"% A¨ C3 C• A  C• A&0¬± &%0­±0®±&° &&&&&&&&&&&&&&&°¢2 _doScroll:v12@0:4@80¯±"% @ @ A CC  A CC&0°± &%0±±°®° &&&&&&&&&&&&&&&°¢²°¤% A A A A °«°¯0²±& % TextField1°0³±& % TextField2°v0´±& % ScrollView10µ±% Ap C C¹ Ce  C¹ Ce&0¶± &0·±% A¨ @ C­€ CN  C­€ CN&0¸± &0¹± %  C¹ Ce  C¹ Ce&0º± &°¨0»±"% A¨ CQ C­€ A  C­€ A&0¼± &%0½±0¾±&° &&&&&&&&&&&&&&&°µ²0¿±"% @ @ A Ca  A Ca&0À± &%0Á±°¾° &&&&&&&&&&&&&&&°µ²°·% A A A A °»°¿°›°~0±&%NSOwner0ñ&%PRWindowController0ı& % MenuItem10ű0Ʊ&%Quit0DZ&%q&&ÿ%0ȱ0É1#NSMutableString&%common_2DCheckMark0ʱ0˱#& % common_2DDash2 terminate:v12@0:4@8%0̱& % MenuItem2°S0ͱ&%MenuItem0α0ϱ&%Hide0б&%h&&ÿ%°È°Ê2 hide:v12@0:4@8%0ѱ& % MenuItem3°_0Ò±&%Button1°0Ó±&%Button2°$0Ô±& % MenuItem4°f0Õ±&%Button3°*0Ö±&%GormNSPopUpButton°L0×±& % MenuItem5°c0ر&%Button4°00Ù±& % MenuItem6°V0Ú± &++0Û1$NSNibConnector°“0ܱ&%NSOwner0ݱ$°¡0Þ1%NSNibOutletConnector°“°Ü0ß±&%delegate0à±$°´0á±$°Ö0â±$°Ì0ã±$°Ñ0ä±$°Ô0å±$°×0æ±$°Ù0ç±$°B0è±$°0é±$°’0ê±$°0ë±$°‘0ì±$°•0í±$°–0î±$°°Ü0ï±$°—0ð±$°²0ñ±$°”0ò±$°Ò0ó±$°Ó0ô±$°Õ0õ±$°Ø0ö±$°A0÷±$°³0ø±$°›0ù±$°œ0ú±$°˜°œ0û±$°ž°œ0ü1&NSNibControlConnector°ž°œ0ý±& % _doScroll:0þ±$°°œ0ÿ±&°°œP±& % _doScroll:P±%°Ü°³P±& % imageInfoLineP±%°Ü°ÖP±& % scalePopUpP±%°Ü°P±& % scalePanelP±%°Ü°—P±&%scalePanelScaleFieldP ±%°Ü°›P ±&%viewP ±%°Ü°“P ±#&%windowP ±&°Ø°ÜP±& % scalePanelOk:P±&°A°ÜP±&%scalePanelCancel:P±&°Ö°ÜP±&%scaleFromMenu:P1' GSMutableSet1( NSMutableSet1)NSSet&°°HPRICE-1.1.0/Resources/Median.gorm/data.classes000644 001751 000024 00000001235 11370726522 021444 0ustar00multixstaff000000 000000 { "## 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.1.0/Resources/Median.gorm/data.info000644 001751 000024 00000000270 11370726522 020740 0ustar00multixstaff000000 000000 GNUstep archive00002e7f:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.1.0/Resources/Median.gorm/objects.gorm000644 001751 000024 00000012346 11370726522 021500 0ustar00multixstaff000000 000000 GNUstep 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.1.0/Resources/MainMenu.gorm/data.classes000644 001751 000024 00000017510 11622275566 021772 0ustar00multixstaff000000 000000 { "## 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:", "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 = ( "showCrop:", "cropOK:", "cropCancel:", "changeTop:", "changeBottom:", "changeLeft:", "changeRight:" ); Outlets = ( cropWindow, topField, bottomField, leftField, rightField, widthField, heightField ); Super = NSObject; }; 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.1.0/Resources/MainMenu.gorm/data.info000644 001751 000024 00000000274 11622275566 021267 0ustar00multixstaff000000 000000 GNUstep archive0000300c:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%GNUstep gui-0.10.30±& % Typed StreamPRICE-1.1.0/Resources/MainMenu.gorm/objects.gorm000644 001751 000024 00000060165 11622275566 022025 0ustar00multixstaff000000 000000 GNUstep archive0000300c:0000001e:00000355:00000001:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&z01NSString& % MenuItem3301 NSMenuItem0±&%Custom Trace Edges0±&&&ÿ%01NSImage01NSMutableString&%common_2DCheckMark0 ±0 ±& % common_2DDash’%0 ±& % MenuItem2240 ±0 ±& % Select All0±&%a&&ÿ%°° ’%0±& % MenuItem340±0±&%Median0±&&&ÿ%°° ’%0±& % MenuItem2250±0±&%Make Grayscale0±&&&ÿ%°° ’%0±& % MenuItem350±0±& % Transpose0±&&&ÿ%°° ’%0±& % MenuItem2260±0±& % Convolve 5x50±&&&ÿ%°° ’%0±& % MenuItem360 ±0!±&%Rotate0"±&&&ÿ%°° 2 submenuAction:v12@0:4@8%0#1 NSMenu°!0$1 NSMutableArray1 NSArray&0%±0&±&%900'±&&&ÿ%°° ’%0(±0)±&%1800*±&&&ÿ%°° ’%0+±0,±&%2700-±&&&ÿ%°° ’%0.± 0/±& % Transforms00± &° 01±02±&%Flip03±&&&ÿ%°° ²%04± °205± &06±07±&%Vertical08±&&&ÿ%°° ’%09±0:±& % Horizontal0;±&&&ÿ%°° ’%°.°0<±0=±&%Scale0>±&&&ÿ%°° ’%0?±0@±&%Crop0A±&&&ÿ%°° ’%0B±& % MenuItem2270C±0D±&%FFT0E±&&&ÿ%°° ’%0F±& % MenuItem37°%0G±& % MenuItem2280H±0I±& % DFT Low Pass0J±&&&ÿ%°° ’%0K±& % MenuItem38°(0L±& % MenuItem2290M±0N±& % DFT High Pass0O±&&&ÿ%°° ’%0P±& % MenuItem110°<0Q±& % MenuItem39°+0R±& % MenuItem1110S±0T±& % Enhancement0U±&&&ÿ%°° ²%0V± °T0W± &0X±0Y±&%Brightness & Contrast0Z±&&&ÿ%°° ’%0[±0\±& % Histogram0]±&&&ÿ%°° ’%0^±0_±&%Cumulative Histogram0`±&&&ÿ%°° ’%0a±0b±&%Equalize0c±&&&ÿ%°° ’%0d±0e±&%Curves0f±&&&ÿ%0g±0h±&%NSMenuCheckmark0i±0j±&%NSMenuMixedState’%°0k±0l±& % Trace Edges0m±&&&ÿ%°° ’%°0n± 0o±&%PRICE0p± &  0q±0r±&%Info0s±&&&ÿ%°° ²%0t± °r0u± &0v±0w±& % InfoPanel...0x±&&&ÿ%°° ’%0y±0z±& % Preferences0{±&&&ÿ%°° ’%°n0|±0}±&%Image0~±&&&ÿ%°° ²%0± °}0€± &  0±0‚±&%Open...0ƒ±&%o&&ÿ%°° ’%0„±0…±& % Open Recent0†±&&&ÿ%°g°i’%0‡± 0ˆ±& % Open Recent0‰± &0б0‹±& % Clear List°†&&ÿ%°g°i’%°0Œ±0±&%New0ޱ&%n&&ÿ%°° ’%0±0±&%Save...0‘±&%s&&ÿ%°° ’%0’±0“±& % Save As...0”±&%S&&ÿ%°° ’%0•±0–±& % Save To...0—±&&&ÿ%°° ’%0˜±0™±&%Save All0š±&&&ÿ%°° ’%0›±0œ±&%Revert To Saved0±&&&ÿ%°° ’%0ž±0Ÿ±&%Print0 ±&&&ÿ%°° ’%0¡±0¢±&%Close0£±&&&ÿ%°° ’%°n0¤±0¥±&%Edit0¦±&&&ÿ%°° ²%0§± °¥0¨± &0©±0ª±&%Undo0«±&%z&&ÿ%°° ’%0¬±0­±&%Redo0®±&&&ÿ%°° ’%0¯±0°±&%Cut0±±&%x&&ÿ%°° ’%0²±0³±&%Copy0´±&%c&&ÿ%°° ’%0µ±0¶±&%Paste0·±&%v&&ÿ%°° ’%° °n0¸±0¹±&%Filters0º±&&&ÿ%°° ²%0»± °¹0¼± &°0½±0¾±&%Invert0¿±&&&ÿ%°° ’%°°C°H°M°n0À±°/0Á±&&&ÿ%°° ²%°.°n°S0±0ñ&%Windows0ı&&&ÿ%°° ²%0ű °Ã0Ʊ &0DZ0ȱ&%Arrange In Front0ɱ&&&ÿ%°° ’%0ʱ0˱&%Miniaturize Window0̱&%m&&ÿ%°° ’%0ͱ0α& % Close Window0ϱ&%w&&ÿ%°° ’%°n0б0ѱ&%Hide0Ò±&%h&&ÿ%°° ’%0Ó±0Ô±&%Quit0Õ±&%q&&ÿ%°° ’%0Ö±& % MenuItem112°[0×±& % MenuItem113°^0ر& % MenuItem114°a0Ù±& % MenuItem115°Â0Ú±& % MenuItem116°Ç0Û±& % MenuItem117°Ê0ܱ& % MenuItem118°Í0ݱ& % MenuItem119°Ð0Þ±&%PRCTransforms(0)0ß1 GSNibItem0à±& % PRCTransforms  &0á±& % MenuItem230° 0â±& % PRCInvert(0)0ã± 0ä±& % PRCInvert  &0å±& % MenuItem40°10æ±& % MenuItem231°%0ç±& % MenuItem41°90è±& % MenuItem232°(0é±& % MenuItem42°60ê±& % MenuItem233°+0ë±& % MenuItem(2)°ž0ì±& % MenuItem43°¤0í±& % MenuItem234°10î±& % MenuItem44°¯0ï±& % MenuItem235°60ð±& % MenuItem45°²0ñ±& % MenuItem236°90ò±& % MenuItem46°µ0ó±& % MenuItem237°0ô±& % MenuItem47° 0õ±& % MenuItem238°<0ö±& % MenuItem48°©0÷±& % MenuItem239°?0ø±& % MenuItem120°Ó0ù±& % MenuItem49°¬0ú±& % MenuItem121°?0û±& % MenuItem122°q0ü±& % MenuItem123°v0ý±& % MenuItem124°|0þ±& % MenuItem125°0ÿ±& % MenuItem126°ŒP±& % MenuItem127°P±& % MenuItem128°’P±& % MenuItem129°•P±& % NSWindowsMenu°ÅP±&%ButtonP1 NSButton1 NSControl1NSView1 NSResponder% B BÖ CL A€  CL A€&P± &%P1 NSButtonCell1 NSActionCell1NSCellP±&#%#Close filter panels after executionP ±P ±&%common_SwitchOffP 1NSFont%&&&&&&&&&&&&&&%’P ±&P ±&P±P±&%common_SwitchOn&&& &&P±& % MenuItem240°SP±& % MenuItem50°±& % MenuItem61°¡P?±& % MenuItem252°yP@±& % GormNSMenu3°tPA±&%GSCustomClassMapPB±&PC±& % MenuItem62°¤PD±&%NSRecentDocumentsMenu°‡PE±& % MenuItem253°|PF±& % MenuItem(4)°„PG±& % GormNSMenu4°VPH±& % MenuItem63°©PI±& % MenuItem254°PJ±& % GormNSMenu5°#PK±& % MenuItem64°¬PL±& % MenuItem255°ŒPM±& % GormNSMenu6°4PN±& % MenuItem65°¯PO±& % MenuItem256°PP±& % GormNSMenu7°§PQ±& % MenuItem66°²PR±& % MenuItem257°’PS±& % GormNSMenu8°PT±& % MenuItem67°µPU±& % MenuItem258°•PV±& % GormNSMenu9°ÅPW±& % MenuItem68° PX±& % MenuItem259°˜PY±& % MenuItem140°¸PZ±& % MenuItem69°¸P[±& % MenuItem141°P\±& % MenuItem142°P]±& % MenuItem143°CP^±& % MenuItem144°HP_±& % MenuItem145°MP`±& % MenuItem146°ÀPa±& % MenuItem147°1Pb±& % MenuItem148°6Pc±& % MenuItem149°9Pd±&%PRCCustTraceEdgesPe± Ðd  &Pf±& % MenuItem260°›Pg±& % MenuItem70°Ph±& % MenuItem261°¡Pi±& % MenuItem71°Pj±& % MenuItem262°¤Pk±& % MenuItem72°CPl±& % MenuItem263°©Pm±& % MenuItem(5)°ŠPn±& % MenuItem73°HPo±& % MenuItem264°¬Pp±& % MenuItem74°MPq±& % MenuItem265°¯Pr±& % MenuItem75°ÀPs±& % MenuItem266°²Pt±& % MenuItem76°1Pu±& % MenuItem267°µPv±& % MenuItem77°6Pw±& % MenuItem268° Px±& % MenuItem150°±& % MenuItem1°ÓP?±& % MenuItem12°ÐP@±& % MenuItem2°|PA±& % MenuItem203°ÍPB±& % MenuItem204°ÓPC±& % MenuItem3°PD±& % MenuItem13°ÐPE±& % MenuItem205°yPF±& % MenuItem4°ŒPG±& % MenuItem14°ÐPH±& % MenuItem206°qPI±& % MenuItem5°PJ±& % MenuItem15°ÐPK±& % MenuItem207°vPL±& % MenuItem16°ÀPM±& % MenuItem6°’PN±& % MenuItem208°yPO±& % MenuItem17°PP±& % MenuItem7°•PQ±& % MenuItem209°|PR±& % MenuItem18°¸PS±& % MenuItem8°˜PT±& % MenuItem19°PU±& % MenuItem9°›PV±& % AppControllerPW± ÐV  &PX±&%MenuItem°ÐPY±& % MenuItem210°PZ±& % MenuItem211°ŒP[±& % MenuItem20°P\±& % MenuItem212°P]±& % MenuItem21°CP^±& % MenuItem(0)°žP_±& % MenuItem213°’P`±& % MenuItem22°HPa±& % MenuItem214°•Pb±& % MenuItem23°qPc±& % MenuItem215°˜Pd±& % MenuItem24°vPe±& % MenuItem216°›Pf±& % MenuItem25°MPg±& % MenuItem217°¡Ph±& % MenuItem26°SPi±& % MenuItem218°¤Pj±& % MenuItem27°aPk±& % MenuItem219°©Pl±& % MenuItem100°¸Pm±& % MenuItem28°[Pn±& % MenuItem101°Po±& % MenuItem29°^Pp±& % MenuItem102°Pq±& % MenuItem103°CPr±& % MenuItem104°HPs±& % PRCCurves(0)Pt± Pu±& % PRCCurves  &Pv±& % MenuItem105°MPw±& % MenuItem106°ÀPx±& % MenuItem107°1Py±& % MenuItem108°6Pz±& % MenuItem109°9P{±& % MenuItem220°¬P|±& % MenuItem30°¸P}±& % MenuItem221°¯P~±& % MenuItem31°ÀP±& % MenuItem222°²P€±& % MenuItem(1)°žP±& % MenuItem32°kP‚±& % MenuItem223°µPƒ± &––P„1NSNibConnectorÐúP…±&%NSOwnerP†±ÐXÐúP‡±ÐBÐúPˆ±ÐVÐ…P‰±Ð5Ð…PŠ1NSNibOutletConnectorÐ…ÐVP‹±&%delegatePŒ±ÐQÐúP±ÐÐQPޱÐYÐP±ÐZÐP±Ð\ÐP‘±Ð_ÐP’±ÐaÐP“±ÐcÐP”±ÐeÐP•±ÐgÐP–1NSNibControlConnectorÐYP—±&%NSFirstP˜±& % openDocument:P™±ÐgЗPš±& % performClose:P›±Ð\ЗPœ±& % saveDocument:P±Ð_ЗPž±&%saveDocumentAs:PŸ±ÐZЗP ±& % newDocument:P¡±Ð~ÐúP¢±ÐÐ~P£±ÐOÐP¤±Ð|ÐúP¥±ÐÐ|P¦±ÐnÐP§±ÐpÐP¨±ÐqÐP©±ÐrÐPª±ÐËÐ…P«±ÐbÐúP¬±Ð ÐbP­±ÐdÐ P®±ÐdЗP¯±&%orderFrontStandardInfoPanel:P°±ÐvÐP±±Ð÷Ð…P²±ÐhÐúP³±Ð!ÐhP´±ÐjÐ!Pµ±ÐÐ…P¶±ÐmÐ!P·±Ð3Ð…P¸±ÐûÐ…P¹±ÐmÐûPº±&%showHistogram:P»±ÐoÐ!P¼±ÐoÐ3кP½±ÐÐ!P¾±Ð7Ð…P¿±ÐdÐ…PÀ±°Ð!PÁ±Ð/Ð…P±°Ð!PñÐÐPıÐÐPű&%submenuAction:PƱÐÐPDZÐÐPȱÐÐPɱÐÐPʱÐxÐP˱ÐxÐP̱&%submenuAction:PͱÐÐxPαÐzÐPϱÐyÐPбÐiÐúPѱÐiÐúPÒ±&%submenuAction:PÓ±ÐÐiPÔ±Ð}ÐPÕ±Ð}ЗPÖ±&%cut:P×±ÐÐPرÐЗPÙ±&%copy:PڱЂÐP۱ЂЗPܱ&%paste:PݱÐùÐPÞ±ÐùЗPß±& % selectAll:Pà±ÐkÐPá±Ð{ÐPâ±ÐkЗPã±&%undo:Pä±Ð{ЗPå±&%redo:Pæ±Ð%ÐPç±Ð„Ð…Pè±ÐbÐúPé±&%submenuAction:Pê±ÐQÐúPë±&%submenuAction:Pì±ÐaЗPí±&%saveDocumentTo:Pî±ÐcЗPï±&%saveAllDocuments:Pð±ÐeЗPñ±&%revertDocumentToSaved:Pò±Ð|ÐúPó±&%submenuAction:Pô±Ð~ÐúPõ±&%submenuAction:Pö±ÐhÐúP÷±&%submenuAction:Pø±ÐXЗPù±&%hide:Pú±ÐBЗPû±& % terminate:Pü±Ð7ÐúPý±Ð7ÐúPþ±&%submenuAction:Pÿ±Ð#Ð7P±Ð:Ð#P±Ð:ЗP±&%arrangeInFront:P±Ð<Ð#P±Ð<ЗP±&%performMiniaturize:P±ÐAÐ#P±ÐAЗP±& % performClose:P ±Ð&ÐP ±ÐÐ…P ±Ð&ÐP ±& % showCrop:P ±Ð(Ð!P±Ð‡Ð…P±Ð,Ð…P±ÐP±ÐP±Ð§P±Ð²P±Ð§ÐVP±&%savePreferences:P±Ð²ÐVP±&%cancelPreferences:P±ÐVÐP±&%closePanelsCheckP±ÐVÐP±&%enlargeWindowsCheckP±ÐNÐ P±ÐNÐVP±&%showPreferences:P±ÐVÐ,P ±& % prefPanelP!±Ð‰Ð…P"±Ð€ÐP#±Ð€Ð—P$±&%printDocument:P%±ÐÐP&±°âÐ…P'±Ð°âP(±& % makeInverse:P)±ÐÐ…P*±ÐqÐP+±&%transformImage:P,±°ÞÐ…P-±Ð°ÞP.±&%rotateImage90:P/±Ð°ÞP0±&%rotateImage180:P1±Ð°ÞP2±&%rotateImage270:P3±Ðy°ÞP4±&%flipImageVert:P5±Ðz°ÞP6±&%flipImageHoriz:P7±ÐO°ÞP8±&%transposeImage:P9±ÐjÐP:±& % showFilter:P;±ÐpÐ5P<±& % showFilter:P=±ÐvÐ÷бÐnЉб&%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.1.0/Resources/Equalize.gorm/data.classes000644 001751 000024 00000001152 11370557675 022037 0ustar00multixstaff000000 000000 { "## 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.1.0/Resources/Equalize.gorm/data.info000644 001751 000024 00000000270 11414610556 021320 0ustar00multixstaff000000 000000 GNUstep archive00002f45:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.1.0/Resources/Equalize.gorm/objects.gorm000644 001751 000024 00000006266 11414610556 022064 0ustar00multixstaff000000 000000 GNUstep 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.1.0/Resources/DFTLowPass.gorm/data.classes000644 001751 000024 00000001547 11370571123 022176 0ustar00multixstaff000000 000000 { "## 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.1.0/Resources/DFTLowPass.gorm/data.info000644 001751 000024 00000000270 11370571123 021464 0ustar00multixstaff000000 000000 GNUstep archive00002e7f:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.1.0/Resources/DFTLowPass.gorm/objects.gorm000644 001751 000024 00000017155 11370571123 022227 0ustar00multixstaff000000 000000 GNUstep 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.1.0/Resources/DFTHighPass.gorm/data.classes000644 001751 000024 00000001641 11370571122 022306 0ustar00multixstaff000000 000000 { "## 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.1.0/Resources/DFTHighPass.gorm/objects.gorm000644 001751 000024 00000023257 11370571122 022344 0ustar00multixstaff000000 000000 GNUstep 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.1.0/Resources/CustTraceEdges.gorm/data.classes000644 001751 000024 00000002373 11370726521 023117 0ustar00multixstaff000000 000000 { "## 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.1.0/Resources/CustTraceEdges.gorm/data.info000644 001751 000024 00000000270 11370726521 022407 0ustar00multixstaff000000 000000 GNUstep archive00002e7f:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.1.0/Resources/CustTraceEdges.gorm/objects.gorm000644 001751 000024 00000037633 11370726521 023155 0ustar00multixstaff000000 000000 GNUstep archive00002e7f:00000029:000001ba:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A C± C_& % B° D€01 NSView% ?€ A C± C_  C± C_&01 NSMutableArray1NSArray&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± % ? ?€ C¥€ C€  C¥€ C€&0± &01 NSPopUpButton% Aˆ BÖ C A   C A &0± &%01NSPopUpButtonCell1NSMenuItemCell0±&° &&&&&&&&01NSMenu0±&0± &  01 NSMenuItem0 ±&%Pixel Difference0!±&&&ÿ%0"1NSImage0#±& % common_Nibble’%0$±0%±&%Separated PixDIff°!&&ÿ%’%0&±0'±&%Roberts°!&&ÿ%’%0(±0)±&%Prewitt0*±&&&ÿ%’%0+±0,±&%Sobel0-±&&&ÿ%’%0.±0/±&%Abdou00±&&&ÿ%’%01±02±& % Laplacian (4)03±&&&ÿ%’%04±05±& % Laplacian (8)06±&&&ÿ%’%07±08±&%Laplacian (Prewitt)09±&&&ÿ%’% &&&&&&%’0:±&0;±&&&& &&°°°%%%%%0<±% Aˆ AÀ Bö A€  Bö A€&0=± &%0>±0?±& % Zero Cross0@±0A1NSMutableString&%common_SwitchOff° &&&&&&&&&&&&&&%’0B±&0C±&0D±0E±&%common_SwitchOn&&& &&0F1 NSTextField% Aˆ Bl B¦ A  B¦ A&0G± &%0H1NSTextFieldCell0I±& % Threshold:0J±% A@&&&&&&&& &&&&&&%’0K1NSColor0L±&%NSNamedColorSpace0M±&%System0N±&%textBackgroundColor0O±°L°M0P±& % textColor’0Q1 NSSlider% BÒ Bl B A€  B A€&0R± &%0S1! NSSliderCell0T±&%0.2° 0U1"NSNumber1#NSValued ?É™™™™™š&&&&&&&&&&&&&&%’ ?€ ¿€%0V±0W±&° &&&&&&&& &&&&&&%’°K0X±°L0Y±&%System0Z±&%controlTextColor0[±0\±&0]±0^±&%common_SliderHoriz° &&&&&&&&&&&&&&%%0_±% Cs Bl B` A¨  B` A¨&0`± &%0a±0b±&%0.2° &&&&&&&& &&&&&&%’°K°O’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±&°D&&& &&0r±% A B¬ Bl A  Bl A&0s± &%0t±0u±&%Size:°J&&&&&&&& &&&&&&%’°K°O’0v± % B” B¬ BÞ A€  BÞ A€&0w± &%0x±!0y±&%1° 0z±"d ?ð&&&&&&&&&&&&&&%’ ?€ @À ¿€%0{±0|±&° &&&&&&&& &&&&&&%’°K°X0}±0~±&°]° &&&&&&&&&&&&&&%%0±% Ca B¬ B` A¨  B` A¨&0€± &%0±0‚±&%3° &&&&&&&& &&&&&&%’°K°O’0ƒ±% A Að Bl A  Bl A&0„± &%0…±0†±&%Form:°J&&&&&&&& &&&&&&%’°K°O’0‡±% B” Að B² A   B² A &0ˆ± &%0‰±0б&° &&&&&&&&0‹±0Œ±&0± &0ޱ0±& % Horizontal0±&&&ÿ%°"’%0‘±0’±&%Vertical°&&ÿ%’%0“±0”±&%Cross°&&ÿ%’%0•±0–±&%Box0—±&&&ÿ%’%&&&&&&%’0˜±&0™±&&&& &&°Ž°‹°Ž%%%%%0š±% Ca Að BÈ A€  BÈ A€&0›± &%0œ±0±& % Separable°@° &&&&&&&&&&&&&&%’0ž±&0Ÿ±&°D&&& &&%°0 ±$0¡±&%30¢±&%Second0£± % ? ?€ C¥€ C€  C¥€ C€&0¤± &0¥±% Aˆ Bî B˜ A€  B˜ A€&0¦± &%0§±0¨±&%Enabled°@° &&&&&&&&&&&&&&%’0©±&0ª±&°D&&& &&0«±% A B¬ Bl A  Bl A&0¬± &%0­±0®±&%Size:°J&&&&&&&& &&&&&&%’°K°O’0¯± % B” B¬ BÞ A€  BÞ A€&0°± &%0±±!0²±&%1° 0³±"d ?ð&&&&&&&&&&&&&&%’ ?€ @À ¿€%0´±0µ±&° &&&&&&&& &&&&&&%’°K°X0¶±0·±&°]° &&&&&&&&&&&&&&%%0¸±% Ca B¬ B` A¨  B` A¨&0¹± &%0º±0»±&%3° &&&&&&&& &&&&&&%’°K°O’0¼±% A Að Bl A  Bl A&0½± &%0¾±0¿±&%Form:°J&&&&&&&& &&&&&&%’°K°O’0À±% B” Að B² A   B² A &0Á± &%0±0ñ&° &&&&&&&&0ı0ű&0Ʊ &0DZ0ȱ& % Horizontal0ɱ&&&ÿ%°"’%0ʱ0˱&%Vertical°É&&ÿ%’%0̱0ͱ&%Cross°É&&ÿ%’%0α0ϱ&%Box0б&&&ÿ%’%&&&&&&%’0ѱ&0Ò±&&&& &&°Ç°Ä°Ç%%%%%0Ó±% Ca Að BÈ A€  BÈ A€&0Ô± &%0Õ±0Ö±& % Separable°@° &&&&&&&&&&&&&&%’0×±&0ر&°D&&& &&%°0Ù±$0Ú±&%40Û±&%Third0ܱ % ? ?€ C¥€ C€  C¥€ C€&0ݱ &0Þ±% Aˆ Bî B˜ A€  B˜ A€&0ß± &%0à±0á±&%Enabled°@° &&&&&&&&&&&&&&%’0â±&0ã±&°D&&& &&0ä±% A B¬ Bl A  Bl A&0å± &%0æ±0ç±&%Size:°J&&&&&&&& &&&&&&%’°K°O’0è± % B” B¬ BÞ A€  BÞ A€&0é± &%0ê±!0ë±&%1° 0ì±"d ?ð&&&&&&&&&&&&&&%’ ?€ @À ¿€%0í±0î±&° &&&&&&&& &&&&&&%’°K°X0ï±0ð±&°]° &&&&&&&&&&&&&&%%0ñ±% Ca B¬ B` A¨  B` A¨&0ò± &%0ó±0ô±&%3° &&&&&&&& &&&&&&%’°K°O’0õ±% A B Bl A  Bl A&0ö± &%0÷±0ø±&%Form:°J&&&&&&&& &&&&&&%’°K°O’0ù±% B” Að B² A   B² A &0ú± &%0û±0ü±&° &&&&&&&&0ý±0þ±&0ÿ± &P±P±& % HorizontalP±&&&ÿ%°"’%P±P±&%VerticalÐ&&ÿ%’%P±P±&%CrossÐ&&ÿ%’%P±P±&%BoxP ±&&&ÿ%’%&&&&&&%’P ±&P ±&&&& &&аýÐ%%%%%P ±% Ca Að BÈ A€  BÈ A€&P ± &%P±P±& % Separable°@° &&&&&&&&&&&&&&%’P±&P±&°D&&& &&%°° %%P±°L°YP±&%windowBackgroundColorP±&%WindowP±&%Custom Trace EdgesÐ ?€ AÀ F@ F@%P±P±&%NSApplicationIcon&   D  D€P± &P± &P1%NSMutableDictionary1& NSDictionary&-P±& % TextField13°õP±& % MenuItem7°(P±&%Button5°šP±& % GormNSPanel°P±& % MenuItem8°+P ±& % MenuItem10°1P!±& % MenuItem9°.P"±& % MenuItem11°4P#±& % MenuItem12°7P$±&%Button8°¥P%±&%View(0)°P&±&%Button9°ÓP'±&%Button°P(±&%Button10°ÞP)±& % TextField°FP*±&%Button11Ð P+±&%TabView°P,±& % TextField1°_P-±& % TextField2°rP.±& % TextField3°P/±& % TextField4°ƒP0±&%NSOwnerP1±&%PRCCustTraceEdgesP2±&%GormNSPopUpButton1°‡P3±& % TextField8°«P4±& % MenuItem1°‘P5±&%MenuItem°ŽP6±& % MenuItem2°“P7±& % TextField9°¸P8±& % MenuItem3°•P9±&%GormNSPopUpButton3°ÀP:±&%Button1°P;±&%Slider1°vP<±& % MenuItem4°P=±&%Slider°QP>±&%GormNSPopUpButton4°ùP?±& % TextField10°¼P@±& % MenuItem5°$PA±&%Button3°ÐKP±'Ð*ÐKPޱ(ÐKÐ$P±& % enableCheck2P±(ÐKÐDP‘±& % sizeSlider2P’±(ÐKÐ9P“±& % formSelect2P”±(ÐKÐ&P•±&%separableCheck2P–±(ÐKÐ7P—±& % sizeField2P˜±)ÐDÐKP™±& % changeSize2:Pš±)Ð$ÐKP›±& % enablePane2:Pœ±)ÐHÐKP±& % changeSize3:Pž±)Ð(ÐKPŸ±& % enablePane3:P ±(ÐKÐ(P¡±& % enableCheck3P¢±(ÐKÐHP£±& % sizeSlider3P¤±(ÐKÐ>P¥±& % formSelect3P¦±(ÐKÐ*P§±&%separableCheck3P¨±(ÐKÐGP©±& % sizeField3Pª±'Ð%Ð+P«±)Ð'ÐKP¬±& % filterOK:P­±)Ð:ÐKP®±& % filterCancel:P¯±)ÐAÐKP°±&%parametersChanged:P±±)ÐBÐKаP²±)Ð2ÐKаP³±)ÐÐKаP´±)ÐFÐKPµ±& % enablePane1:P¶±)Ð9ÐKаP·±)Ð&ÐKаP¸±)Ð*ÐKаP¹±)Ð>ÐKаPº±%&PRICE-1.1.0/Resources/Curves.gorm/data.classes000644 001751 000024 00000001464 11657034500 021516 0ustar00multixstaff000000 000000 { "## 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.1.0/Resources/Curves.gorm/data.info000644 001751 000024 00000000270 11657034500 021006 0ustar00multixstaff000000 000000 GNUstep archive0000300d:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.1.0/Resources/Curves.gorm/objects.gorm000644 001751 000024 00000011235 11657060300 021537 0ustar00multixstaff000000 000000 GNUstep 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.1.0/Resources/CumulHistogram.gorm/data.classes000644 001751 000024 00000007327 10422662203 023212 0ustar00multixstaff000000 000000 { 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.1.0/Resources/CumulHistogram.gorm/objects.gorm000644 001751 000024 00000002173 10422662203 023233 0ustar00multixstaff000000 000000 GNUstep 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.1.0/Resources/Crop.gorm/data.classes000644 001751 000024 00000001133 10422662203 021137 0ustar00multixstaff000000 000000 { "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "changeBottom:", "changeLeft:", "changeRight:", "changeTop:", "cropCancel:", "cropOK:", "resetValues:" ); Super = NSObject; }; PRCCrop = { Actions = ( "cropOK:", "cropCancel:", "changeTop:", "changeBottom:", "changeLeft:", "changeRight:", "resetValues:" ); Outlets = ( cropWindow, topField, bottomField, leftField, rightField, widthField, heightField ); Super = NSObject; }; }PRICE-1.1.0/Resources/Crop.gorm/data.info000644 001751 000024 00000000270 11117574440 020445 0ustar00multixstaff000000 000000 GNUstep archive00002db4:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%Latest Version0±& % Typed StreamPRICE-1.1.0/Resources/Crop.gorm/objects.gorm000644 001751 000024 00000014224 11117574441 021203 0ustar00multixstaff000000 000000 GNUstep archive00002db4:0000001e:000000b3:00000000:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSPanel1 NSPanel1 NSWindow1 NSResponder% ?€ A C~ Ce& % C! D#01 NSView% ?€ A C~ Ce  C~ Ce&01 NSMutableArray1NSArray&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"±°0#±&%System0$±&%textBackgroundColor0%±°°#0&±& % textColor’0'±% Bˆ Bx A  Bx A&0(± &%0)±0*±&%width:0+±% A@&&&&&&&& &&&&&&%’0,±°0-±&%System0.±&%textBackgroundColor0/±°°-00±& % textColor’01±% Bô Bˆ BT A  BT A&02± &%03±04±&%height:°+&&&&&&&& &&&&&&%’05±°06±&%System07±&%textBackgroundColor08±°°609±& % textColor’0:±% A¸ A˜ B` AÀ  B` AÀ&0;± &%0<±0=±&%Reset° &&&&&&&&&&&&&&%’0>±&0?±&&&& &&0@1NSBox% Aø Bò C@ BÄ  C@ BÄ&0A± &0B± % @à @à C2 B’  C2 B’&0C± &0D±% Bt BP B` A¨  B` A¨&0E± &%0F±0G±&%0° °G&&&&&&&& &&&&&&%’0H±°0I±&%System0J±&%textBackgroundColor0K±°°I0L±& % textColor’0M±% AÐ B` A¨  B` A¨&0N± &%0O±0P±&%0° &&&&&&&& &&&&&&%’0Q±°0R±&%System0S±&%textBackgroundColor0T±°°R0U±& % textColor’0V±% Bt  B` A¨  B` A¨&0W± &%0X±0Y±&%0° &&&&&&&& &&&&&&%’0Z±°0[±&%System0\±&%textBackgroundColor0]±°°[0^±& % textColor’0_±% Bô AÐ B` A¨  B` A¨&0`± &%0a±0b±&%0° &&&&&&&& &&&&&&%’0c±°0d±&%System0e±&%textBackgroundColor0f±°°d0g±& % textColor’0h±0i±&%Margins° &&&&&&&&&&&&&& @  @ %%0j±°0k±&%System0l±&%windowBackgroundColor0m±&%Window0n±&%Crop°n ?€ ?€ F@ F@%&   D  D€0o± &0p± &0q1NSMutableDictionary1 NSDictionary&0r±&%Button2°:0s±&%NSOwner0t±&%PRCCrop0u±& % TextField1°V0v±& % TextField2°M0w±& % TextField°D0x±& % TextField3°_0y±& % TextField4°0z±& % TextField5°0{±&%Button°0|±& % TextField6°'0}±& % TextField7°10~±& % GormNSPanel°0±&%Box°@0€±&%Button1°0± &  0‚1NSNibConnector°~0ƒ±&%NSOwner0„±°w0…±°u0†±°v0‡±°x0ˆ±°{0‰±°€0б°y0‹±°z0Œ±°|0±°}0Ž1NSNibOutletConnector°ƒ°w0±&%topField0±°ƒ°u0‘±& % bottomField0’±°ƒ°v0“±& % leftField0”±°ƒ°x0•±& % rightField0–±°ƒ°y0—±& % widthField0˜±°ƒ°z0™±& % heightField0š1NSNibControlConnector°{°ƒ0›±&%cropOK:0œ±°€°ƒ0±& % cropCancel:0ž±°w°ƒ0Ÿ±& % changeTop:0 ±°u°ƒ0¡±& % changeBottom:0¢±°v°ƒ0£±& % changeLeft:0¤±°x°ƒ0¥±& % changeRight:0¦±°ƒ°~0§1NSMutableString& % cropWindow0¨±°r0©±°r°ƒ0ª±& % resetValues:0«±°0¬±°x°u0­±& % nextKeyView0®±°u°v°­0¯±°w°v0°±& % nextKeyView0±±°v°x°°0²±°y°z°°0³±&PRICE-1.1.0/Resources/Convolve55.gorm/data.classes000644 001751 000024 00000004374 11414577172 022227 0ustar00multixstaff000000 000000 { "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( "autoRange:", "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:", "filterCancel:", "filterOK:", "offsetFactor:", "orderFrontFontPanel:", "parametersChanged:", "scaleFactor:", "showConvolve55:", "showFilter:" ); Super = NSObject; }; 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; }; PRFilterController = { Actions = ( "showFilter:", "filterOK:", "filterCancel:", "parametersChanged:" ); Outlets = ( ); Super = NSObject; }; }PRICE-1.1.0/Resources/Convolve55.gorm/data.info000644 001751 000024 00000000266 11737274552 021525 0ustar00multixstaff000000 000000 GNUstep archive00003072:00000003:00000003:00000000:01GormFilePrefsManager1NSObject%01NSString&%GNUstep gui-0.10.30±& % Typed StreamPRICE-1.1.0/Resources/Convolve55.gorm/objects.gorm000644 001751 000024 00000057431 11737274552 022264 0ustar00multixstaff000000 000000 GNUstep archive00003072:0000001f:00000294:00000002:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&I01NSString& % TextField5601 NSTextField1 NSControl1NSView1 NSResponder% CX B¦ B A¨  B A¨&01 NSMutableArray1 NSArray&%01 NSTextFieldCell1 NSActionCell1NSCell0±&%101NSFont% A@&&&&&&&&&&&&&&%’0 1NSColor0 ±&% NSNamedColorSpace0 ±&%System0 ±&%textBackgroundColor0 ±° ° 0±& % textColor’0±&%Button101NSButton% C8 BŠ B` AÀ  B` AÀ&0± &%01 NSButtonCell0±&%Cancel°&&&&&&&&&&&&&&%’0±&0±&&&& &&0±& % TextField570±% B< Bæ B A¨  B A¨&0± &%0± 0±&%0°°&&&&&&&&&&&&&&%’° ° ’0±&%Button20±% C8 B B` AÀ  B` AÀ&0± &%0±0±&%OK°&&&&&&&&&&&&&&%’0 ±&0!±&&&& &&0"±&%Button30#±% AÈ BX B² A€  B² A€&0$± &%0%±0&±& % Auto range0'1NSImage0(1NSMutableString&%common_SwitchOff0)±%&&&&&&&&&&&&&&%’0*±&0+±&0,±0-±&%common_SwitchOn&&& &&0.±& %  NSVisible0/± &00±& % MenuItem1011 NSMenuItem02±&%Quit03±&%q&&ÿ%04±05±&%common_2DCheckMark06±07±& % common_2DDash2 terminate:v12@0:4@8%08±&%Button409±% Bú A° B` AÀ  B` AÀ&0:± &%0;±0<±&%Cancel°&&&&&&&&&&&&&&%’0=±&%0>±&&&& &&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.1.0/Resources/BriCon.gorm/data.classes000644 001751 000024 00000001416 11341604013 021410 0ustar00multixstaff000000 000000 { "## 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.1.0/Resources/BriCon.gorm/data.info000644 001751 000024 00000000270 11341604013 020703 0ustar00multixstaff000000 000000 GNUstep archive00002e7f:00000003:00000003:00000000:01GormFilePrefsManager1NSObject% 01NSString&%Latest Version0±& % Typed StreamPRICE-1.1.0/Resources/BriCon.gorm/objects.gorm000644 001751 000024 00000013764 11341604013 021450 0ustar00multixstaff000000 000000 GNUstep 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.1.0/PRICE.xcodeproj/project.pbxproj000755 001751 000024 00000202702 11622230652 020753 0ustar00multixstaff000000 000000 // !$*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.1.0/PRICE.xcode/project.pbxproj000644 001751 000024 00000155335 11623522147 020072 0ustar00multixstaff000000 000000 // !$*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.1.0/PRICE.pcproj/PC.project000644 001751 000024 00000011466 11737274552 017111 0ustar00multixstaff000000 000000 { 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-2012"; "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 = Viewer; 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.1.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.1.0/PRICE.pbproj/project.pbxproj000644 001751 000024 00000136024 11341335104 020246 0ustar00multixstaff000000 000000 // !$*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.1.0/English.lproj/BriCon.nib/000755 001751 000024 00000000000 11745454640 017507 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/.DS_Store000755 001751 000024 00000014004 11622230651 017235 0ustar00multixstaff000000 000000 Bud1 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.1.0/English.lproj/Credits.rtf000644 001751 000024 00000001420 11622230651 017657 0ustar00multixstaff000000 000000 {\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.1.0/English.lproj/InfoPlist.strings000644 001751 000024 00000001224 11737355364 021111 0ustar00multixstaff000000 000000 þÿ/* Localized versions of Info.plist keys */ CFBundleName = "PRICE"; CFBundleShortVersionString = "PRICE version 1.1.0"; CFBundleGetInfoString = "PRICE version 1.1.0, Copyright 2002-2012 Riccardo Mottola."; NSHumanReadableCopyright = "Copyright 2002-2012 Riccardo Mottola.\n This software is distributed under GPL v2 or later."; PRICE-1.1.0/English.lproj/Convolve55.nib/000755 001751 000024 00000000000 11745454640 020300 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/Crop.nib/000755 001751 000024 00000000000 11745454640 017236 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/CumulHistogram.nib/000755 001751 000024 00000000000 11745454640 021276 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/Curves.nib/000755 001751 000024 00000000000 11745454640 017602 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/CustTraceEdges.nib/000755 001751 000024 00000000000 11745454640 021200 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/DFTHighPass.nib/000755 001751 000024 00000000000 11745454640 020377 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/DFTLowPass.nib/000755 001751 000024 00000000000 11745454640 020261 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/Equalize.nib/000755 001751 000024 00000000000 11745454640 020112 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/Grayscale.nib/000755 001751 000024 00000000000 11745454640 020245 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/Histogram.nib/000755 001751 000024 00000000000 11745454640 020270 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/MainMenu.nib/000755 001751 000024 00000000000 11745454640 020044 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/Median.nib/000755 001751 000024 00000000000 11745454640 017530 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/PRWindow.nib/000755 001751 000024 00000000000 11745454640 020044 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/Preview.nib/000755 001751 000024 00000000000 11745454640 017754 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/ProgressPanel.nib/000755 001751 000024 00000000000 11745454640 021117 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/Scale.nib/000755 001751 000024 00000000000 11745454640 017362 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/TraceEdges.nib/000755 001751 000024 00000000000 11745454640 020341 5ustar00multixstaff000000 000000 PRICE-1.1.0/English.lproj/TraceEdges.nib/classes.nib000644 001751 000024 00000001731 11343317626 022466 0ustar00multixstaff000000 000000 { 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.1.0/English.lproj/TraceEdges.nib/objects.nib000644 001751 000024 00000005642 11343317626 022467 0ustar00multixstaff000000 000000  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 IBDocumentLocation 51 81 356 240 0 0 1440 938 IBFramework Version 489.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.1.0/English.lproj/Scale.nib/keyedobjects.nib000644 001751 000024 00000021253 11466362062 022526 0ustar00multixstaff000000 000000 bplist00Ô 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.1.0/English.lproj/Scale.nib/objects.nib000644 001751 000024 00000006367 11466362062 021515 0ustar00multixstaff000000 000000  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.1.0/English.lproj/ProgressPanel.nib/classes.nib000644 001751 000024 00000000737 10066561546 023254 0ustar00multixstaff000000 000000 { 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.1.0/English.lproj/ProgressPanel.nib/info.nib000644 001751 000024 00000000703 10066561546 022543 0ustar00multixstaff000000 000000 IBDocumentLocation 74 193 356 240 0 0 1152 848 IBFramework Version 283.0 IBOpenObjects 5 IBSystem Version 6R73 PRICE-1.1.0/English.lproj/ProgressPanel.nib/objects.nib000644 001751 000024 00000002126 10066561546 023242 0ustar00multixstaff000000 000000  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.1.0/English.lproj/Preview.nib/classes.nib000644 001751 000024 00000001763 11343522151 022075 0ustar00multixstaff000000 000000 { 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; showProgress = id; updatePreview = id; }; CLASS = PRPreviewController; LANGUAGE = ObjC; OUTLETS = { activityDescription = NSTextField; buttContinuous = NSButton; previewWindow = NSPanel; progressBar = NSProgressIndicator; view = PRImageView; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.1.0/English.lproj/Preview.nib/info.nib000644 001751 000024 00000000763 11343522151 021372 0ustar00multixstaff000000 000000 IBDocumentLocation 134 120 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 20 IBSystem Version 8S165 PRICE-1.1.0/English.lproj/Preview.nib/keyedobjects.nib000644 001751 000024 00000014526 11343522151 023114 0ustar00multixstaff000000 000000 bplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯Ž 156<=AENVpqrsw{ƒ‹—˜²³»¼¿ÀÂÇÍÕÖãäéêëïêóö ./09:;<=>?@IMPTU_`afhkxyz}…y†‡Š’“ž£¤§ª®¹»¾¿ÂÃÅÆÇÈÉÌÍÑÖ×ÜÝâãæëìñòýÿ É !%);MNOPªQRSTUVW«XYZ]`cU$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€n€Š€x€y€o€w€Œ€z€€€€p€l€‹€€#€Ò234[NSClassName€€_PRPreviewControllerÒ789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FM¦GHIJKL€ €a€c€e€h€j€:ÔOPQRST0]NSDestinationWNSLabelXNSSource€ €_€`€ÝWXYZ[\]^_`abcdefghijklmno_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass_NSFrameAutosaveName€[€ € € €Z€\€`x€^€€]_{{108, 515}, {456, 320}}WPreviewWNSPanelÒtuvYNS.stringTView€Ò78xy£yz;_NSMutableStringXNSStringÔ|}~.‚ZNSSubviews_NSNextResponderWNSFrame€€€X€YÒ>„M¥…†‡ˆ‰€€€(€K€S€:×}Œ~Žkk’“”•–[NSSuperviewYNSEnabledXNSvFlagsVNSCell€€€ €€_{{14, 12}, {85, 32}}Ý™š›œžŸ ¡¢£¤¥¦¦¨…ª«¬­®¯°±_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2€€€€€ÿÿÿÿ†‚@ÿ€Èþ€VUpdateÔ´µ¶·¸¹ºVNSSizeVNSNameXNSfFlags"AP€€\LucidaGrandeÒ78½¾¢¾;VNSFontPÒt¿v€Ò78ÃÄ¥ÄÅÆ;\NSButtonCell]%NSButtonCell\NSActionCellÒ78ÈÉ¥ÉÊËÌ;XNSButtonYNSControlVNSView[NSResponder×}Œ~ŽkkГҕԀ€€ €€_{{117, 21}, {95, 18}}Þ™š×›œžŸ ¡¢£¤°Ùڦ܆d«Þ­®à°â]NSNormalImage€€%€!€€ €HM£ÿ€*€B€F€:Ú|}Œ÷~އ‡YNSBGColorYNSDocViewYNScvFlags€+€(€(€,€<€,€; €AÒ>M¡€,€:Û }Œ!Ž"#2$ÿÿ'“”)*+“-[NSFrameSize_NSOriginalClassName[NSDragTypesZNSEditable€6€*€*€. €9€7€/ €-[PRImageView[NSImageViewÒ>1@¦234567€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}×ABCD¢¤ªâEâFGHWNSScaleWNSStyleZNSAnimatesWNSAlign€8þÒ78JK¤KL;[NSImageCell\%NSImageCellÒ78NO¢O;^NSClassSwapperÒ78QR£RS;^NSMutableArrayWNSArray_{{1, 1}, {439, 253}}ÕVWXYZ[\]^WNSColor[NSColorName\NSColorSpace]NSCatalogName€?€>€=€@VSystem\controlColorÓbXcd^WNSWhiteK0.66666669€@Ò78gV¢V;Ò78ij¤jËÌ;ZNSClipViewÙ}Œlm~Žno‡‡r‡t”uvwZNSCurValueXNSTargetYNSPercentXNSAction€(€("?€€(€C€E"?sƒ€D_{{440, 1}, {15, 253}}\_doScroller:Ò78{|¥|ÊËÌ;ZNSScrollerÙ}Œm~Žùno‡‡‡”ªuƒ„€(€(€(€G€E"?s¶F€H_{{1, 254}, {439, 15}}_{{0, 50}, {456, 270}}Ò78ˆ‰¤‰ËÌ;\NSScrollView×}Œ~Žkk“‘€€€L €R€M_{{238, 22}, {170, 17}}Ø”•›œ¢¤—¦°ˆ›œ_NSBackgroundColor[NSTextColor€<€N€€€K€Qþ@@ÕVWXYŸ \]^€P€O€=€@_controlTextColorÓbX¥d^B0€@Ò78¨©¤©Æ;_NSTextFieldCellÒ78«¬¦¬­ÊËÌ;[NSTextField\%NSTextFieldØ}Œ¯~°Ž±kk´µr¶·¸YNSpiFlagsZNSMaxValue\NSDrawMatrix€€€V€T€WѺ€UÒ78¼½¢½;ZNSPSMatrix_{{416, 18}, {30, 20}}Ò78ÀÁ¤ÁËÌ;_NSProgressIndicator_{{1, 1}, {456, 320}}Ò78ÄË£ËÌ;_{{0, 0}, {1440, 938}}Z{213, 129}_{3.40282e+38, 3.40282e+38}\PreviewPanelÒ78ÊË¢Ë;_NSWindowTemplate]previewWindowÒ78ÎÏ£ÏÐ;_NSNibOutletConnector^NSNibConnectorÔOPQÓT0€,€b€`€TviewÔOPQ†ÙT0€€d€`€^buttContinuousÔOPQ0ßà…€€f€g€^updatePreview:Ò78äå£åÐ;_NSNibControlConnectorÔOPQˆèT0€K€i€`€_activityDescriptionÔOPQ‰îT0€S€k€`€[progressBarÒ>óü¨‡…†kR‰ˆ€(€€€€ €,€S€K€mÒ78þS¢S;Ò>ü¨kkkR0‡kk€€€€ €€(€€€mÒ> ü¦0ˆ‰R…†€€K€S€ €€€mÒ>ü¦€q€r€s€t€u€v€m\File's Owner\NSTextField2Q1UPanelYNSButton4Ò>"ü¡€,€mÒ>&ü¡-€-€mÒ>*ü¯‡†KJ0GILkˆRH…‰€(€€h€e€€ €c€j€€,€K€ €a€€S€mÒ><ü¯=>?@ABCDEFGHIJK€{€|€}€~€€€€€‚€ƒ€„€…€†€‡€ˆ€‰€m "!Ò>[M €:Ò>^ü €mÒ>aü €mÒ78de¢e;^NSIBObjectData#,1:LQVdf…‹Öè!-;Wdw~Œš¨ÂÎÜæíïñóõ÷ùûýÿ   &(*@IR]bqz–¡¢¤­´ÁÇÐÝßáãåçéëü !#Xl~ˆ–¤±¾ÈÕßë   9AIR\acls…ŽŸª¼ÄÆÈÊÌÕàâäæèêì (/13569;=T‰›®¸ÃÑàõ!7DFHJLNPR[]_dfkrƒŠ‘šŸ¡£¦³¼ÁÈÉÒÔÝèõ$-7>JgikmnqsuÆÔÖØÚÜÞàåçðòôÿ    ! ) 2 ; B U i r ~ € ‚ ‹ ¦ Ó á í ö          ! # % ' 0 7 9 ; = ? h r | † ˆ Š Œ Ž ’ ” – ™ › ¤ § © « Ø ä ú          ! # / ; D Q S U W Y [ ] _ { ¯ Ð è  ! , I Q Y d l m o t y ‚ ‹ — ¤ ­ ² Á Ê Ñ à è ÿ   ( 5 C E G I K M T a n v ‚ „ † ” ¦ ± Ö á ê ô ý ÿ  +8ALW|~€‚„†‹¥½ÆÏÜùûýÿ AUacegikmrwŒŽ’”§´·¹ÂËÝæóÿ -7BOQSUWZ\^cens~–Ÿ¨¾ÕÞåý%2;@Sajqˆ—¨ª¬®°µÆÈÊÌÎÝîðòôö->@BDF\moqsuŠ›Ÿ¡£¥§©«­¶»ÄÕ×ÙÛÝßáãåçðýÿ  !#%')+-/<IKQ[dgiktwy{„¥§©«­¯±³µ·¹»½¿ÁÃÅÎïñóõ÷ùûýÿ   !#%')235>?AJKMV[fjPRICE-1.1.0/English.lproj/Preview.nib/objects.nib000644 001751 000024 00000004346 11343522151 022071 0ustar00multixstaff000000 000000  typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+PRPreviewController†…†„i–„„„ NSScrollViewâ„„NSView)„„ NSResponder”’„›’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’„„„NSButton„„ NSControl)›’™‚€………… U U ’’…’…’…„icc@„„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚þ‚„@@@@„˜˜Update†„„„NSFont”™$„[36c]þÿLucidaGrande„f „c«««†……„i:…’…’¡„ ssii@@@@@È‚†‚@ÿ„˜˜†„„„NSMutableString˜˜†…©…††’„¢’™‚€…………u__’’…’…’…¢„¥¦‚„þ§„˜˜ Continuous†©……¬…’…’®­È‚H¦¦‚þ@‚@§«©……¬…’…’¸„c@@„„„NSColor”«„@@@„˜˜System†„˜˜ controlColor†„½«„ffƒ?*ª«††„½«µ¾„˜˜controlTextColor†„½«¶†††’…„:…†’„„„NSProgressIndicatorÜ›’™‚A€…„„„ NSPSMatrix”„[12f]«««†…… ’’…’…’…„ccddc††………È@È@’…’…’…’…†™‚€„Ÿ™’„„„ 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††Ø{Ø{’É’…’…’…¢„„„ NSImageCell)§¦‚þ‚§…………„iii†«††………·ý·ý’™’…’Ì’…’Ì„@@ccc¼…†’„„„ NSScrollerÓ£’™™‚€…………¸ýý’™’…’…’…¢…’™„ff:ƒ?sƒ„ _doScroller:««†’„Ü’™™‚€…………þ··’™’…’…’…¢…’™Çƒ?s¶FÈ««††………2ÈÈ’’…’É’…’Û’Ý’É’…’…„ffffi ‚Ć–¡–®–„„„NSWindowTemplateø”„ iiffffi@@@@@clÈ@‚`x„˜˜Preview†„˜˜NSPanel†„­˜View†…„ffff ª«¶Õ’„˜˜ PreviewPanel†«¶ƒÿîƒÿޕ–Ì™–Ä–¸™–•„˜˜ File's Owner†–¸„˜˜ NSTextField2†–Ä„˜˜1†–Þ„˜˜Panel†–¡„˜˜NSButton†–®„˜˜ NSButton4†’„ц’„Ÿ™’„„„NSNibOutletConnectorÏ„„NSNibConnector”µ•Þ„˜˜ previewWindow††’„íµ•Ì„˜˜view††’„íµ•®„˜˜buttContinuous††’„„„NSNibControlConnectorÏ•„˜˜updatePreview:††’„íµ•¸„˜˜activityDescription††’„íµ•Ä„˜˜ progressBar†††’…™„@i™ЮÐ÷ ÐôЕÐìÐòÐù"ÐÐÌиÐÞÐðСÐÄ!™#™–ÌÎ’„˜˜IBCocoaFramework††PRICE-1.1.0/English.lproj/PRWindow.nib/classes.nib000644 001751 000024 00000001477 11317164027 022174 0ustar00multixstaff000000 000000 { 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 = {scaleFromMenu = id; scalePanelCancel = id; scalePanelOk = id; }; CLASS = PRWindowController; LANGUAGE = ObjC; OUTLETS = { imageInfoLine = NSTextField; scalePanel = NSPanel; scalePanelScaleField = NSTextField; scalePopUp = NSPopUpButton; view = PRImageView; }; SUPERCLASS = NSWindowController; } ); IBVersion = 1; }PRICE-1.1.0/English.lproj/PRWindow.nib/info.nib000644 001751 000024 00000001012 11317164027 021453 0ustar00multixstaff000000 000000 IBDocumentLocation 166 142 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 59 IBSystem Version 8S165 PRICE-1.1.0/English.lproj/PRWindow.nib/keyedobjects.nib000644 001751 000024 00000023773 11317164027 023215 0ustar00multixstaff000000 000000 bplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯ý 156<=AERZpqrst|ƒ ¡©ª­·¸¹¾ÀÅÆÉÍÔåëùý  )-0458CDEHPDQRU\]{ƒ‡‰¢£¨©ª®²³´¶¹ÈÒ³ÓݳÞç³èñ³òü³ý³³³'³(2³3=³>@FJQR[`adijkmnorsw|}‚Ž‘“˜Ÿ¦§¢²·¾¿ÉÊÍÎÏÑÓÚÛãäæèïð÷ømùúûü "#()FHewIqHb‰Š‹ŒÏŽÏ”˜Àèéêëìíîzïð´ñòóôõö÷øùúûüýáþÿ#  U$nullß  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€À€ù€Ñ€Ò€Á€Ð€û€Ó€€ü€€Â€¾€ú€€L€Ò234[NSClassName€€_PRWindowControllerÒ789:X$classesZ$classname¢:;^NSCustomObjectXNSObject_IBCocoaFrameworkÒ>?@ZNS.objects €Ò78BC£CD;\NSMutableSetUNSSetÒ>FQªGHIJKLMNOP€ €ˆ€Š€¯€±€³€¶€¸€º€¼€4ÔSTU0WXY]NSDestinationWNSLabelXNSSource€€†€‡€ Û[\]^_`abcdefghijklmno_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRect\NSWindowViewYNSWTFlags[NSViewClass€„€ € € €ƒ€ x€…€_{{161, 142}, {507, 405}}VWindowXNSWindowTViewÔuvwx.z{ZNSSubviews_NSNextResponderWNSFrame€€€€‚Ò>}Q¤~€€€"€@€y€4×v„w…†‡llŠ‹ŒŽ[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Ûuv„ÕwֆרÙÚllÝÞßàáâÝä]NSNextKeyView[NSHScrollerXNSsFlags[NSVScroller]NSContentView€#€€€$€>€;2€7€$€?Ò>æQ£Ýâ߀$€7€;€4Úuv„Õìíîw†ïò˜òõö÷øYNSBGColorYNSDocViewYNScvFlags€%€"€"€&€€&€5 €6Ò>úQ¡ò€&€4Ûþv„ÿ…†‡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þÒ78*+¤+,‡;[NSImageCell\%NSImageCellÒ78./¢/;^NSClassSwapperÒ7812£23;^NSMutableArrayWNSArray_{{1, 1}, {490, 363}}Ò7867¤7ÒÓ;ZNSClipViewØv„9:w†;>@ŒABZNSCurValueXNSTargetXNSAction€"€""?T¦Ú€"€8€:€9_{{491, 1}, {15, 363}}\_doScroller:Ò78FG¥GÑÒÓ;ZNSScrollerÙv„9:w†×;KMŒ#AO€"€""; %€"€<€:€=_{{1, 364}, {490, 15}}_{{0, 26}, {507, 380}}Ò78ST¤TÒÓ;\NSScrollView×v„w…†‡llX‹ŒZ[€€€A €x€B_{{2, 1}, {128, 22}}ß^–_`abcdef—g•h“ijklm#nopõq¼rst‹€wl‹z#_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ÜaŠ‹ŒŽ:‘;o“”#•–—[™š›œ]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µb¢b;Ò€·‚ZOtherViews€EÒ>ºQ¬»¼½¾pÀÁÂÃÄÅÆ€U€X€[€^€G€a€d€g€j€m€p€s€4ÛaŠ‹Ž:‘;o“”Ê–—[™šÐÑ€H€V€K€J€B€O€R €WT12.5ÛaŠ‹Ž:‘;o“”Õ–—[™šÛÜ€H€Y€K€J€B€O€R€ZR25ÛaŠ‹Ž:‘;o“”à–—[™šáæ€H€\€K€J€B€O€R€]R50ÛaŠ‹Ž:‘;o“”ê–—[™šzð€H€_€K€J€B€O€R€`R75ÛaŠ‹Ž:‘;o“”ô–—[™šúû€H€b€K€J€B€O€R–€cS150ÛaŠ‹Ž:‘;o“”ÿ–—[™š€H€e€K€J€B€O€RÈ€fS200ÛaŠ‹Ž:‘;o“” –—[™šr€H€h€K€J€B€O€R€iS400ÛaŠ‹Ž:‘;o“”–—[™š€H€k€K€J€B€O€Rÿÿÿÿÿÿÿÿ€l^Fit verticallyÛaŠ‹Ž:‘;o“”–—[™š%&€H€n€K€J€B€O€Rÿÿÿÿÿÿÿþ€o_Fit horizontallyÛaŠ‹Ž:‘;o“”*–—[™š01€H€q€K€J€B€O€Rÿÿÿÿÿÿÿý€rSFitÛaŠ‹Ž:‘;o“”5–—[™š;<€H€t€K€J€B€O€Rÿÿÿÿÿÿÿü€ugCustom &Ò78?a¢a;Ò78AB§BCDĖ;_NSPopUpButtonCell^NSMenuItemCell\NSButtonCell]%NSButtonCellÒ78GH¦HIÑÒÓ;]NSPopUpButtonXNSButton×v„w…†‡llM‹ŒP€€€z €!€{_{{144, 7}, {254, 14}}Ø‘’“”•–—STl—YZ€|€€C€J€y€ ÿÿÿÿ„þ@Õ®¯°±\]´µ¶€~€}€€_textBackgroundColorÓº°b¼¶B1€Õ®¯°±Áf´µ¶€€€€€YtextColor_{{1, 9}, {507, 405}}Ò78lÒ£ÒÓ;_{{0, 0}, {1440, 938}}Y{94, 108}Ò78pq¢q;_NSWindowTemplateXdelegateÒ78tu£uv;_NSNibOutletConnector^NSNibConnectorÔSTUòyX0€&€‰€‡€TviewÔSTU~X0€‹€®€‡€Û[]^_`aƒbcd¼„…†‡ˆ‰Š‹nYNSMaxSize€¬€€Ž€Œ€«€­€0x€…€_{{389, 370}, {213, 107}}TZoomWNSPanelÒ€s‚€EÔuvw”.–{€‘€€ª€‚Ò>™Q¤š›œ€’€—€ €¦€4×v„w…†‡ŠŠ¢‹Œ¥€€€“ €!€”_{{107, 68}, {86, 22}}Ù‘’“”•¨–—ST«¬š‹°±_NSDrawsBackground€|€€–€•€’ € ÿÿÿÿ”qþA@Ô¢£¤³¦§¶"AP€€×v„w…†‡ŠŠº‹Œ¼½€€€˜ €Ÿ€™_{{115, 12}, {84, 32}}Ýh^“”•_j`f–d—ÀÁ«Ã›#ÛÅÆž—È€€›€–€š€—ÿÿÿÿ†‚@ÿ€ž€J8SSetÔ¢£¤³˧¨€œ€YHelveticaQ Ò78ÐD¥DĖ;Ò78ÒI¥IÑÒÓ;×v„w…†‡ŠŠÖ‹Œ¼Ù€€€¡ €Ÿ€¢_{{31, 12}, {84, 32}}Ýh^“”•_j`f–d—ÜÁ«ßœ#ÛÅÆžâÈ€¥€›€–€£€ €ž€¤VCancelÒ€‚€EÒ€‚€E×v„w…†‡ŠŠ닌€§ €!€¨_{{17, 70}, {78, 17}}Ø‘’“”•–—˜™«ôžZ€€€–€©€¦€ VZoom: _{{1, 1}, {213, 107}}Z{213, 129}_{3.40282e+38, 3.40282e+38}ZscalePanelÔSTUšþX0€’€°€‡€_scalePanelScaleFieldÔSTUX0€y€²€‡€]imageInfoLineÔSTU0  €€€´€µ€@^scaleFromMenu:Ò78£v;_NSNibControlConnectorÔSTU0 ›€€·€µ€—]scalePanelOk:ÔSTU0 œ€€¹€µ€ _scalePanelCancel:ÔSTU€X0€@€»€‡€ZscalePopUpÔSTUY%X0€ €½€‡€VwindowÒ>*E¯¼ŠY»œl~›€ÀÃòÄÆÂžÁšop½~€X€€ €U€ €€‹€—€@€a€"€j€&€m€¦€s€g€p€^€y€d€’€H€G€[€€¿Ò78G3¢3;Ò>IE¯o~0oŠY0ŠlolooŠooooloŠ€ool€H€‹€€H€€ €€€€H€€H€"€H€€H€H€H€H€€H€€@€H€H€€¿Ò>fE¯›Y€l»½~~œ0o¼š€—€ €@€€U€[€‹€€ €€H€y€¦€X€’€¿Ò>xE¯yz{—}~—‚ƒ„…†‡€Ã€Ä€Å€J€Æ€Ç€È€J€É€Ê€Ë€Ì€Í€Î€Ï€¿[NSMenuItem2UPanelYNSButton1\File's OwnerYPopUpList\NSTextField2[NSMenuItem1Ò>‘E¡ò€&€¿Ò>•E¡ €'€¿Ò>™E¯%IÄÆo¾ÁPNGlŠK€ÀÂJYHÚMp»Åò0›¼L~~½œO€Š€m€s€H€y€^€d€¼€¸€ €€€±€@€a€g€¯€ €ˆ€j€’€¶€G€U€p€&€"€€—€¦€X€³€‹€€[€ €º€¿Ò>ÁE¯%ÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæ€Ô€Õ€Ö€×€Ø€Ù€Ú€Û€Ü€Ý€Þ€ß€à€á€â€ã€ä€å€æ€ç€è€é€ê€ë€ì€í€î€ï€ð€ñ€ò€ó€ô€õ€ö€÷€ø€¿A13&4+.I<E'-/D0=H,)%>@(F;*?JÒ> Q €4Ò> E €¿Ò>E €¿Ò78¢;^NSIBObjectData#,1:LQVdfci´Æâôÿ 5BU\jx† ¬ºÄËÍÏÑÓÕ×ÙÛÝßáãåçéëíïø&/:?NWjs~Š‘ž¤­ÂÄÆÈÊÌÎÐÒÔÖØé÷ÿ  =Qcm{‰–£°ºÆÈÊÌÎÐÒÔÖÛÝßú  +=EGIKMV_acegi†’œ¥¬®°²³¶¸ºÔõ *8DQSUWY[]bg…–¤­²´¶¸ÅÎÓÚï÷ "$&(/<IQ]_ajo„†ˆŠŒŸ¬¯±ºÃÕâëø    " . [ i u ~ Š ˜ š œ ž   ¢ ¤ § © « ­ ¯ ¸ ¿ Á Ã Å Ç ð ú           ! # , / 1 3 ` l ‚ Ž ™ › Ÿ ¡ ¢ ¤ ¦ ¨ © « · Ã Ì Ù Û Ý ß á ã å ç  7 X p © ´ Ñ Ù á ì ô ö ø ù û    # 0 9 > M V ] l t ‹ ” ¨ É Ô Ý æ è ê ï ñ ó õ ÷   % 0 ; ` b d i k m o q ‰ ¡ ª ³ À Ý ß á ã ä æ è þM`o}„¡·ÉÛéû%79BGIKMPRWXZ\^_arwy{„ޑ𡳼ÅÇø"*4?LRTY^`bdfhjln{‡‰‹‘ž­¯±³»ÍÖÝð*>GLU`bk„†ˆŠŒŽ’”–˜šœžËÍÏÑÓÕ×ÙÛÝâ!$QSUWY[]_ad‘“•—™›Ÿ¡¤ÑÓÕ×ÙÛÝßáãç "$&*WY[]_acegk˜šœž ¢¤¦¯±Àíïñóõ÷ùûFHJLNPRT]_c’”–˜šœž§©¸ÁÆÏÞò%2@Ifhjlmoq‰ª¬®°²´¶¿ÄÙÛÝßá÷  "$&0GPWoy‚‡š£¬³ÊÙêìîðò÷  =GIKMOQSUZ\^y~†‘¢¤¦¨ª³¼¾ÀÂÄÆãåçéêìî+?ACEGIJLUZkprtw”–˜š›Ÿ·ìîðòôöÿ !+-6AJUrtvxy{}”ÉËÍÏÑÓÕ×Þçéòô3TVXZ\^`g~‰¦±ÂÄÆÈÊáòôöøú!09@Xikmoq’”–˜¬½¿ÁÃÅÐáãåçéðù02468:<>@BDFHJLNPRTVXZ\^`bdfot}´¶¸º¼¾ÀÂÄÆÈÊÌÎÐÒÔÖØÚÜÞàâäæèêó "$&(*,.024=^`bdfhjlnprtvxz|~Šš§±¾ÊÓÖØÚãæèêó@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~€‚„†ˆŠŒ•âäæèêìîðòôöøúüþ   "$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnpyz|…†ˆ‘’”¢±PRICE-1.1.0/English.lproj/PRWindow.nib/objects.nib000644 001751 000024 00000007403 11317164027 022163 0ustar00multixstaff000000 000000  typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+PRWindowController†…†„i–„„„ NSMenuItemŸ”’„„„NSMenuÌ”„i@@@„„„NSMutableString˜˜ OtherViews†„„„NSMutableArray„„NSArray”™ ’„š’›„ i@@IIi@@@@:i@„˜˜12.5†„˜˜†‚‚ÿÿÿ…„„„NSCustomResource)”–„˜˜NSImage†„˜˜NSMenuCheckmark††…„¦–§„˜˜NSMenuMixedState††„_popUpItemAction: …’„„„NSPopUpButtonCell1„„NSMenuItemCellÒ„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚„Aþ@‚„@@@@…„„„NSFont”™$„[36c]þÿLucidaGrande„f „c­­­†……„i:…’…’„„„ NSPopUpButtonÌ„„NSButton„„ NSControl)„„NSView)„„ NSResponder”’„·’…™„ @@@@ffffffff„ ™’„„„ NSTextField¶’¹™‚€´…………w»  ’¹’…’…’…„icc@„„„NSTextFieldCell>¯¨‚þ‚@©„˜˜Your document contents here†„²™$«þÿLucidaGrande¬­­­­†……®…’…’»„c@@„„„NSColor”­„@@@„˜˜System†„˜˜ controlColor†„­„ffƒ?*ª«††„­ºÃ„˜˜controlTextColor†„­»†††’…„:…†’„„„ 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 ‚Ć’³’„¼’¹™‚€´…………þþ’¹’…’…’…¶„¾¨‚„þ‚@©¤±……®…’…’Ḅ­ºÃ„˜˜textBackgroundColor†„­»††„­ºÃ„˜˜ textColor†È††’…¼…††……… û•û•’…’…’…’…†™‚€´…………€€’¹’…’…’…¶«†„ ssii@@@@@K‚‚@ÿ„ž˜†„ž˜†…±…–„š’› „˜˜100†¤‚‚ÿÿÿ…¥…©¢d…’«’…†…„i@i‚=›†’…†’™’„š’› „˜˜50†¤‚‚ÿÿÿ…¥…©¢2…’«’…†’„š’› „˜˜75†¤‚‚ÿÿÿ…¥…©¢K…’«’…†’ê’„š’› „˜˜150†¤‚‚ÿÿÿ…¥…©¢–…’«’…†’„š’› „˜˜200†¤‚‚ÿÿÿ…¥…©¢È…’«’…†’„š’› „˜˜400†¤‚‚ÿÿÿ…¥…©¢…’«’…†’„š’› „˜˜Fit vertically†¤‚‚ÿÿÿ…¥…©¢ÿ…’«’…†’„š’› „˜˜Fit horizontally†¤‚‚ÿÿÿ…¥…©¢þ…’«’…†’„š’› „˜˜Fit†¤‚‚ÿÿÿ…¥…©¢ý…’«’…†’„š’› „˜˜ Custom…†¤‚‚ÿÿÿ…¥…©¢ü…’«’…††…† „˜˜25†¤‚‚ÿÿÿ…¥…©¢…’«’…†›–„·’…™´„ ™’„¼’ÿ™‚€´…………kDVV’ÿ’…’…’…¶„¾¨‚”qþA‚@©„˜˜100†„²™$«þÿLucidaGrande¬ ­­­­†……®…’…’¸ã憒…¼…†’„µ’ÿ™‚€´…………s T T ’ÿ’…’…’…¶„®¨‚þ‚8©„˜˜Set†……®…’…’ÌÈ‚†‚@ÿ¤„˜˜ †…„²™„[28c]þÿHelvetica¬ ­­­­†…††’„µ’ÿ™‚€´………… T T ’ÿ’…’…’…¶„®¨‚þ‚8©„˜˜Cancel†……®…’…’ ÌÈ‚†‚@ÿ„ž˜†„ž˜†… …††’„¼’ÿ™‚€´…………FNN’ÿ’…’…’…¶„¾¨‚þ‚@©„˜˜Zoom: †……®…’…’¸ÁƆ’…¼…††………ÕkÕk’…’…’…’…†„„„NSWindowTemplateø”„ iiffffi@@@@@c…rÕk‚0x„˜˜Zoom†„˜˜NSPanel†„ž˜View†ÿ…„ffff ª­»Õ’…­»ƒÿîƒÿ„СŽû•‚ x„˜˜Window†„˜˜NSWindow†„˜˜View†¹…Ñ ª­»^l’…­»†•–¢›– ÿ–¹–•–ÿ–³¹–ð›–ɹ–ö›–ÏÉ–ø›–ÿ–ü›–ô›–ú›–î›–á¹–ò›–ÿ–›³–ê›–ì›–»¹™–„˜˜NSButton†–„˜˜Window†–³„˜˜ NSPopUpButton†–¹¤–¢„˜˜ NSMenuItem†–섘˜ NSMenuItem2†–„˜˜Panel†–»¤– „˜˜ NSButton1†–•„˜˜ File's Owner†–›„˜˜ PopUpList†–ᄘ˜ NSTextField†–„˜˜ NSTextField2†–™„˜˜ NSMenuItem1†–„˜˜ NSTextField†’„ÔĆ’„ ™ ’„„„NSNibOutletConnectorÏ„„NSNibConnector”º•„˜˜delegate††’„+º•Ï„˜˜view††’„+º•„˜˜ scalePanel††’„+º•„˜˜scalePanelScaleField††’„+º•ᄘ˜ imageInfoLine††’„„„NSNibControlConnectorÏ,º³•„˜˜scaleFromMenu:††’„7º•„˜˜ scalePanelOk:††’„7º •„˜˜scalePanelCancel:††’„+º•³„˜˜ scalePopUp††’„+º•„˜˜window†††’…™%„@i0AÕø1Õü3Õ›&Õá4Õî+Õò.Õ?KÕ;IÕ*Õ¹Õÿ<Õ4EÕ³'Õð-Õô/Õ2DÕÕ.Õö0Õ=Õ9HÕê,Õ¢)Õú2ÕÏÕÉ%Õ•Õ>Õ@Õ™(Õ6FÕ;Õ»Õì*Õ ?Õ=J™L™–ÏÑ’„˜˜IBCocoaFramework††PRICE-1.1.0/English.lproj/Median.nib/classes.nib000644 001751 000024 00000001437 11341273154 021653 0ustar00multixstaff000000 000000 { IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {changeSize = id; showMedian = id; }; CLASS = PRCMedian; LANGUAGE = ObjC; OUTLETS = { formSelect = NSPopUpButton; medianWindow = NSWindow; separableCheck = NSButton; sizeField = NSTextField; sizeSlider = NSSlider; }; SUPERCLASS = PRFilterController; }, { ACTIONS = {filterCancel = id; filterOK = id; parametersChanged = id; showFilter = id; }; CLASS = PRFilterController; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.1.0/English.lproj/Median.nib/info.nib000644 001751 000024 00000000761 11342760761 021156 0ustar00multixstaff000000 000000 IBDocumentLocation 99 102 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.1.0/English.lproj/Median.nib/keyedobjects.nib000644 001751 000024 00000017307 11342761060 022673 0ustar00multixstaff000000 000000 bplist00Ô 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.1.0/English.lproj/Median.nib/objects.nib000644 001751 000024 00000005363 11342760761 021657 0ustar00multixstaff000000 000000  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.1.0/English.lproj/MainMenu.nib/classes.nib000644 001751 000024 00000026742 11622230652 022173 0ustar00multixstaff000000 000000 { 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; cropCancel = id; cropOK = id; resetValues = id; showCrop = id; }; CLASS = PRCCrop; LANGUAGE = ObjC; OUTLETS = { bottomField = NSTextField; cropWindow = NSWindow; heightField = NSTextField; leftField = NSTextField; rightField = NSTextField; topField = NSTextField; widthField = NSTextField; }; SUPERCLASS = NSObject; }, {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.1.0/English.lproj/MainMenu.nib/info.nib000644 001751 000024 00000001172 11622230652 021457 0ustar00multixstaff000000 000000 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 269 29 IBSystem Version 8S165 PRICE-1.1.0/English.lproj/MainMenu.nib/keyedobjects.nib000644 001751 000024 00000047751 11622230652 023214 0ustar00multixstaff000000 000000 bplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯q 159@CFJN†Œœ£¤¥ª«¬°´µ¸»¿ÃÊËÌÏÓÚÞßàãçîòóô÷û    !$)0149@ABGNOPQV]^_cjnopsw~€ƒ‡Ž“—žŸ £§®¯°³·¾¿ÀÃÇÎÏÒÖÝÞßàäëìíîòùúûü  #$%*-./27>BCFGHMTUXGY^eijmnotŒŽ’š¡­®ÇÈÏÐÓרÛàæíîö÷þÿ  !#%)*,-./2389>?DEJKPWXY]defglswx{|}‚‰ŠŽ”›œŸ ¡¦­±²³¸¿ÀÁÆÍÎÏÔÛßàáæíîïôûüÿ "#(/0349@ADEJQRUV[bcfglstwx}„…ˆ‰Ž•–™šŸ¦§ª« !,./=FQRSXZ]^gpqzƒŒ•R–˜œž¦¯R¯°¶¿R¿ÀÅÎÑÕÞãRãäíÏRöùÿR&.R/8R9;FRO RX÷RabdÏ·?FBfCD™"GHJ·UKLM{PQTwâUVÿˆY\_abeXhklŸn3o-Dªqmruxº»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöÃ÷øùúûüýþÿ                        ª   ! " # $ % & ' ( ) * + , - . / 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€€6€Ò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[NSMenuItemsz|K{XMinimizeQmÓ¦2§¨©^NSResourceName€€€WNSImage_NSMenuCheckmarkÒ:;­®£®¯?_NSCustomResource_%NSCustomResourceÓ¦2±¨©€€€_NSMenuMixedStateÒ:;¶·¢·?ZNSMenuItemÒ6¹8_performMiniaturize:€Ò:;¼½£½¾?_NSNibControlConnector^NSNibConnectorÓ‡ˆÀŠÂ€€€ØŽ‘’“”•–Řǚ›€ €€€€€_Bring All to FrontPÒ6Í8_arrangeInFront:€Ó‡ˆÐŠÒ€"€€ØŽ‘’“Ô•–՘ך›€€ €€!€€ÓžÛ¡Ý}K~]Page Setup...QPÒ6á8^runPageLayout:€Ó‡ˆäŠæ€(€€$ØŽ‘’“è•–é˜ëš›€%€&€€'€€Óžï¡ñoKpZPRICE HelpQ?Ò6õ8YshowHelp:€Ó‡ˆøŠú€-€€*ÙŽ‘ü’“ý•–þ˜Çš›\NSIsDisabled€+€,€ €€€Ôž¡_aK`ZClear MenuÒ6 8_clearRecentDocuments:€Ô‡ˆ0Š]NSDestination€€3€€/ØŽ‘’“•–˜š›€0€1€€2€€Ôž¡LXKMZQuit 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¡mŠK‹SCutQxÒ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˜Çš›€Œ€€€€€Óž?¡AIKJ_Cumulative HistogramÒ23E€€[PRCCumHisto^showHistogram:Ô‡ˆIJŠL€”€–€€’ØŽ‘’“8•–O˜Çš›€Œ€“€€€€YHistogramÒ23W€€•XPRCHistoÔ‡ˆZ[Š]€›€€€˜ØŽ‘’“_•–`˜Ç𛀙€š€€€€Óžf¡hbKcWCrop...Ò23l€€œWPRCCropYshowCrop:Ô‡ˆpq(&€Ÿ€Ê€‰€†Üuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€Ç€¡€¢€ €Æ€È€¤px€É€£_{{111, 378}, {300, 178}}[PreferencesWNSPanelÒ68TView€Ô“”•–.˜™ZNSSubviews_NSNextResponderWNSFrame€¥€€Ä€ÅÒG›…¤œžŸ€¦€²€¶€½€Ã×”¢•£¤¥ˆˆ¨ª«¬[NSSuperviewYNSEnabledXNSvFlagsVNSCell€¤€¤€§ €±€¨_{{30, 118}, {236, 18}}ݯ°±²³´µ¶·¸¹ºÇ¼½¾œÀÁÂÃÄÇÆ_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2€€­€ª€©€¦H@€<ØŽ‘’“8•–˜Çš›€Œ=€€€€XEqualizeÒ23˜€?[PRCEqualizeÔ‡ˆ›œŠžDF€BØŽ‘’“8•–¡˜Çš›€ŒC€€€€gCurves &Ò23©€EYPRCCurvesÒG¬¯hÓh‹F²86|Z†¹~ñh¾·åÁ8pžÕ\ykÊ8Ì_Å3Ñ]óÔUè×›¶ZÛOI“m”Ô¥ý(ˆkÿ韊ìídvðžòðbö÷øÒæûL ú'§Æ$5œ&Õ¦–IFW〲€ý€à€ €=H€Œ€0€‹6€›€QY€æ€s2€äZ€õO€9€ŸB€ì€i€Ø80[\€™€/€ù€ŽR€˜n€B€%qD€`*w€Ô$€ê€Þ€ €€ð€+€5€¤<€Ý€xW€½>r€G€L€¶‡€F di’€€$N€’€}€*€ñ€e„ŒV €€¦€†€þ€‚€[€V€”&,€n–ÚŽ‘ü’“•–ǘÇš›]NSIsSeparator€0€€ €€€ [EnhancementÒG"…¨óL6ž|kZ€’€‹<B60*€ÃÒ:;-¢?UPRICEÒG0…«(ûO²ÁF8Ué€5N€ÔHOV€=€9€BW€/€ÃÚŽ‘ü’“•–ǘÇš›€0€€ €€€ ÚŽG‘’“H•–ÑK˜Çš›PYNSSubmenuXNSAction€0RP€€€€QXServices^submenuAction:ÔžTU¡WSUKTÒ6Q8€ÒG[… €Ã__NSServicesMenuÚŽ‘ü’“•–ǘÇš›€0€€ €€€ ÚŽ‘ü’“•–ǘÇš›€0€€ €€€ \_NSAppleMenuÚŽ‘ü’“Ô•–ǘÇš›€€€ €€€ ÚŽ‘ü’“Ô•–ǘÇš›€€€ €€€ ÚŽ‘ü’“d•–ǘÇš›€G€€ €€€ ÚŽG‘’“HÔ•–ý˜Ç𛔀€+]€€€€^[Open RecentÒ6•8€ÒG™…¡ú€*€Ã__NSRecentDocumentsMenuZTransformsÒGŸ…¥ö÷“]di€ê €˜€ÃÚŽG‘’“H_•–§©˜Ç𛮀™€ñe€€€€fVRotateÒG±…£¥·Å€ð€õ€ù€ÃÚŽG‘’“H_•–Õ¹˜Ç𛾀™€þj€€€€kTFlipÒGÁ…¢Óå€ý€ÃÚŽ‘ü’“”•–ǘÇš›€ €€ €€€ Ò6Ï8THelp€ÒGÒ…¡æ€$€ÃÚŽG‘’“Hí•–mؘǚ›Ýr€Þs€€€€tÔžßà¡â‚•KƒWFiltersÒGå…¦'k8I€Ý€ä$€ÃÚŽG‘’“Hí•–èð˜Çš›õr€%x€€€€yÒ6÷8VWindow€ÒGú…£‹Ô€ n€€Ã^_NSWindowsMenuÒ68TFile€ÒG…«ãñ̾Õÿ ¹Ò\€n€s\Z€i€x€}€‚Y€€Ø€ÃÚŽG‘’“H핖Ԙǚ›r€€€€€€XMainMenuÒG…¨ìò×ðøÛ„‡qŒ’w€ÃÚŽG‘’“Hí•–)˜Çš›.r€0…€€€€†ÚŽG‘’“Hí•–d2˜Çš›7r€Gˆ€€€€‰TEditÒ688€ÒG<…¨¦†Êb¶vÆ–€[€Q[€F€`€L€e€V€ÃÚŽG‘’“Hí•–_I˜Çš›Nr€™€€€€ŽÚŽG‘’“Hí•–8R˜Çš›Wr€Œ€€€€‘ÚŽG‘’“Hí•–”[˜Çš›`r€ “€€€€”[_NSMainMenuÒ:;c(¢(?ÒGe¯hˆÕ0”ð880dÔ0Ô0mÔ§Õ080ÔÔ08dmÔ§0Á_8”Ûí0d8ím_×øì§Ìp8mÔˆ0í0òdíˆí0d___íÔè8Ô0ýmöd0íí0”ˆ00÷Ôdd0m00Ô€¤€þ€€ €0€0„€Œ€Œ€€G€€€€€Þ€€ñ€þ€0€0€€Œ€€€€€Œ€G€Þ€Œ€0€ñ€O€™€Œ€ €0wr€€G€Œr€0€Þ€™q’€ñ\€0€Ÿ€Œ€Þ€€0€¤€r€‡€Gr€¤r€€G€™€™€™r€€%€0€Œ€€€+€Þd€G€rr€0€€ €¤€€i€€G€G€€Þ€€€–ÒGЯ5dò3ŸWÆÒŠbípÊF¹hœÿ–hž¶0ð~yã\è¦ ¾IÛOÔÔv$Õñ&5æ›ì†Z€G‡€‚€Ž€½,€e€>€Fr€Ÿ[&€/€²Y€à€¦€x€V2€¶€`€€æ8€n€Ø€%€[€}Z€”w€Ô€n€ì€L€i€s€† €$D€Q€›–ÒG¯5      !"#$%&'()*+,-./0023450780:0<=š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÁÂÃÄÅÁÆÇÁÈÁÉÊ–Ò6@8R10€YNSButton1[NSMenuItem4Ò6E8Q5€[NSMenuItem3Ò68€UPanelT1111ZNSButton41Ò6N8Q2€YNSButton4Ò6R8Q3€\NSMenuItem10[NSMenuItem1Ò6W8\File's Owner€Ò6Z8Q9€Ò6]8Q6€Ò6N8€[NSMenuItem2Ò6c8Q8€Ò6f8Q7€Ò6i8Q1€S121Ò6Ë8€[NSMenuItem9Ò6i8€\NSMenuItem11ÒGs –ÒGv –ÒGy¯žYcÅIÆudFFhƒhŸå€Õ{‚^0жžZe'_íhvbR}bZÒ$¹ñýö|5† (gÛZ~wqyœ&L3m\ú`8éÕ–_sVÑjˆlT~×WxrèmP8ð]ók·vQ²§kÓ\oìypO”W]d8SÔž„øætakÊU›Ì6ûp|z÷f“òðÿIÔ¥[X¾¦ãÁinU‹€A€r#€ù€”/€e€ï€G&€=2€ä;€Š€½€)€i 5€Z€>€`B€²€E€|€0€_r€à€ô€F€€m*€Y€s€+ d6 €Q€}€5€…w€›€ø€×8€¦€†€’€Ž€Þ€P€*€dW€þ€V€™€ã€4R€—€¤€Ë€)€æq€8€ü€Ü€%€Í€ €9€˜€Ý€õ€L€H€ñ€žV€ý€Ø€Ñ€Ÿ€Ô€ ,€U€w€Œ€#€€¶A’€$€é€h0[€.D\„€‹ŒN€ì€Ói€‚€€/€ê‡€x$n€ð€K€<Z€[€n<O€‘€Ï€B€ –ÒG¯ž !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸ÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl–™Ã.úê0¤$©Ý†ìÎ2é/I*1´â4¯ÅÌ9µ% W,ÂïMJH}õòÚ­P:Ég-&óåç˲~·Ù•ÿ¬Ð!Ž‚  Ê’'j%‘ß ø«'öÓNS( ð³ÄàzQ5o#Á휋3|8èÏÇ"+)þpƈÑ×£ KÜ\÷°˜OžRáƒë–ÒG V… €ÃÒG Y –ÒG \ –Ò:; _ `¢ `?^NSIBObjectData#,1:LQVdfLR¯ËÝèô+>ESao‰•£­´·º½ÀÃÆÉÌÎÑÓÖÙÜÞàãåîúüþ!*3>EW`irw†¢¤­¸¹»ÄËØÞçTVXZ\^`bdfhjlnprtvxz|~€‚„†ˆŠŒŽ’”–˜šœž ¢¤¦©¬¯²µ¸»¾ÁÄÇÊÌÙáêìîð   & : B L W d f k p r t v x z ‹ ’ ž ¡ ¤ § ª ³ µ Â Ñ Ó Õ × ß ñ ú   ( 5 7 9 ; N W \ g p † ˆ ‘ ˜ ° ¿ Ì Î Ð Ò ó õ ÷ ù û ý ÿ    0 2 ? A C E f h j l n p r  ‚ … ˆ – ˜ ¡ ° ² ¿ Á à Šæ è ê ì î ð ò ÿ       ( * 7 9 ; = b o q s u v x z | “ – ™ ¤ ­ Å Ç Ø æ è ê ì î        , / 2 5 8 C E N Y [ l n p r t • — ™ › Ÿ ¡ ­ ¶ Ö Ø é ë í ï ñ*CTVXZ\}ƒ…‡‰”–œ­¯±³µÖØÚÜÞàâë8:<>@BDQTWZ^`inp}ƒ¤¦¨ª¬®°¶¸ÁÈÊ×ÙÛÝþ  "/135VXZ\^`bmoxƒ…’”–˜¹»½¿ÁÃÅÊÌÕÛÝêìîð"$-35BDFHikmoqsu{„‹šœž ÁÃÅÇÉËÍÓÕãðòôö!#')6CEGIjlnprtv~€Ž›Ÿ¡ÂÄÆÈÊÌÎÓÕãðòôö!#.0BOQSUrtvxz|~©º¼¾ÀÂËÍÏÝæïö  "$&GIKMOQS`cfi€‰‹™¨¹»½¿Áâäæèêìîø!#%'HJLNPRTadgjr{}‡‘¢¤¦¨ªÛï '4AKXbnprtvxz|~€…‡‰¤°¸ÁÆÈÙäöþ "?KU^egikloqsŒÁÓæðû -;MYo|~€‚„†ˆ‘–˜šÀÑØáæèêíú$&(1:?U^iv„‘𥮏¿Ëèêìîïñó @BDFHJLNs’”–—™›³èêìîðòôýÿ')FHJLMOQiž ¢¤¦¨ª¬³¼¾ÇÉÒÙèð/:W`ex‚“•—™›®¿ÁÃÅÇÝîðòôö  "7HJLNPqsuwy{}ŒŸ¬®°²ÓÕ×ÙÛÝßèêù  3579;=?LORU\egis€‘“•—™º¼¾ÀÂÄÆÊÓÕ×âô   .02468:DMOQ_q‚„†ˆŠ«­¯±³µ·ÄÇÊÍÔãôöøúü   ! # % ' ) 2 D U W Y [ ] ~ € ‚ „ † ˆ Š “ ¥ ¶ ¸ » ½ ¿ à â ä æ è ê ì ù ü ÿ!! !!+!-!0!2!5!V!X![!]!_!a!c!n!€!‘!”!—!™!œ!½!¿!Â!Ä!Æ!È!Ê!ù""""""."1"4"6"9"Z"\"_"a"c"e"g"p"y"{"~"‡"˜"›"ž" "£"Ä"Æ"É"Ë"Í"Ï"Ñ"ã"ì"î"ñ"ÿ######<#>#A#C#E#G#I#X#a#c#f#s#„#‡#Š#Œ##°#²#µ#·#¹#»#½#Ï#Ø#Ú#Ý#ë#ü#ÿ$$$$($*$-$/$1$3$5$H$Q$S$V$e$v$y$|$~$$¢$¤$§$©$«$­$¯$Ç$Ð$Ò$Õ$é$ú$ý%%%%&%(%+%-%/%1%3%B%K%M%P%^%o%r%u%w%z%›%% %¢%¤%¦%¨%²%»%½%À%Ê%Û%Þ%á%ã%æ&& & &&&&&&&&(&+&7&H&K&N&P&S&t&v&y&{&}&&&&™&›&ž&¨&±'„'†'ˆ'Š'Œ'Ž'‘'“'•'—'š'œ'ž'¡'£'¥'¨'ª'­'¯'²'µ'·'¹'¼'¾'À'Â'Å'È'Ë'Î'Ñ'Ó'Õ'×'Ù'Ü'Þ'á'ä'æ'è'ë'î'ð'ó'ö'ø'û'ý'ÿ((((( ( (((((((( ("($('()(,(/(1(4(7(:(=(?(A(D(F(H(K(M(P(R(T(W(Z(](`(c(e(g(j(l(n(p(r(t(v(y(|(((„(­(»(½(¿(Á(Â(Ä(Æ(È(É(Õ(Þ(ï(ò(ô(ö(ù(ü(ÿ)))))))$);)=)@)B)E)H)K)M)O)Q)T)V)X))ƒ)…)‡)ˆ)Š)Œ)Ž))¸)Â)Ë)Í)Ð)Ó)Õ)×)Ù)Û)Þ)ç)ö** * *****'*(***<*e*g*i*k*l*n*p*r*s*œ*ž* *¢*£*¥*§*©*ª*·*à*â*ä*æ*ç*é*ë*í*î++++++ +"+$+%+N+P+R+T+U+W+Y+[+\+…+‡+‰+Œ+Ž++’+”+—+£+¬+®+·+º+¼+¾+×+â+ë+ö+ù+ü+þ,,,,.,0,2,5,7,9,;,=,@,G,P,W,Y,[,],_,ˆ,Š,Œ,,‘,“,•,—,š,Ÿ,¨,­,¯,²,´,Ý,ß,á,ã,ä,æ,è,ê,ë,ô,ù,û--- - -4-7-9-<->-@-B-D-G-X-[-^-a-d-l-u-‚-…-‡-Š-Œ--’-”-½-À-Â-Å-Ç-É-Ë-Í-Ð-Ù-à-â-ë-ò-ô-÷-ù-û. ....#.:.<.>.A.D.F.H.J.L.O.Q.S.U.~..ƒ.†.ˆ.Š.Œ.Ž.‘.š.£.´.·.º.½.À.Ã.Æ.É.Ì.Î.÷.ú.ü.ÿ///// /3/6/8/;/=/?/A/C/F/K/T/V/_/p/r/t/w/y/{/}///ƒ/¬/¯/±/´/¶/¸/º/¼/¿/è/ë/í/ð/ò/ô/ö/ø/û0$0'0)0,0.000204070C0L0Q0Z1-1/11131517191<1?1A1C1E1G1I1K1M1O1Q1S1U1W1Y1[1]1_1a1c1e1g1i1k1m1o1r1t1v1x1{1}111ƒ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þ22222 2 2 22222Š2Œ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ý33333 33€3ƒ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+4.404:4F4O4Q4S4_4h4j4p4u4€4‰4‹44—4 4¢4¤4±4½4Æ4Ó4Õ4Þ4à4â4ë4í4ï4ø4ú5555555 5)5+5-515:5<5H5Q5S5`5i5j5m5v5w5z5ƒ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 777777777!7#7&7(7+7.707275787;7>7@7B7D7F7I7K7N7P7R7U7W7Y7[7]7_7a7c7e7h7k7m7o7q7s7u7x7z7|7~7€7‚7…7‡7‰7‹777‘7“7–7˜7›77Ÿ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ý88888 8 88888888 8"8%8'8)8,8/818385878:8C9‚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ý:::: : :::::::!:$:':*:-: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;\;_;a;c;f;h;j;m;o;r;t;v;x;z;|;;;„;‡;‰;Œ;Ž;‘;”;–;˜;š;; ;¢;¤;§;©;«;­;¯;²;µ;·;¹;¼;¾;À;Â;Å;Ç;É;Ë;Î;Ð;Ò;Ô;Ö;Ø;Ú;Ü;Þ;á;ä;ç;ê;ì;ï;ñ;ó;õ;÷;ù;û;ý;ÿ<<<<< < <<<<<<<<@ IBDocumentLocation 129 74 356 240 0 0 1152 848 IBFramework Version 283.0 IBOpenObjects 5 IBSystem Version 6R73 PRICE-1.1.0/English.lproj/Histogram.nib/objects.nib000644 001751 000024 00000001266 10035740642 022407 0ustar00multixstaff000000 000000  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.1.0/English.lproj/Grayscale.nib/classes.nib000644 001751 000024 00000001147 11341273154 022366 0ustar00multixstaff000000 000000 { 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.1.0/English.lproj/Grayscale.nib/info.nib000644 001751 000024 00000000760 11341271264 021664 0ustar00multixstaff000000 000000 IBDocumentLocation 69 81 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.1.0/English.lproj/Grayscale.nib/keyedobjects.nib000644 001751 000024 00000013213 11341273154 023401 0ustar00multixstaff000000 000000 bplist00Ô 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.1.0/English.lproj/Grayscale.nib/objects.nib000644 001751 000024 00000003670 11341273154 022365 0ustar00multixstaff000000 000000  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.1.0/English.lproj/Equalize.nib/classes.nib000644 001751 000024 00000001152 11342030227 022220 0ustar00multixstaff000000 000000 { 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.1.0/English.lproj/Equalize.nib/info.nib000644 001751 000024 00000000702 11342030227 021516 0ustar00multixstaff000000 000000 IBDocumentLocation 37 101 356 240 0 0 800 578 IBFramework Version 364.0 IBOpenObjects 5 IBSystem Version 7W98 PRICE-1.1.0/English.lproj/Equalize.nib/keyedobjects.nib000644 001751 000024 00000011722 11342030227 023242 0ustar00multixstaff000000 000000 bplist00Ô 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.1.0/English.lproj/Equalize.nib/objects.nib000644 001751 000024 00000003626 11342030227 022224 0ustar00multixstaff000000 000000  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.1.0/English.lproj/DFTLowPass.nib/classes.nib000644 001751 000024 00000002056 11342760761 022410 0ustar00multixstaff000000 000000 { 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.1.0/English.lproj/DFTLowPass.nib/info.nib000644 001751 000024 00000000761 11342760761 021707 0ustar00multixstaff000000 000000 IBDocumentLocation 67 215 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.1.0/English.lproj/DFTLowPass.nib/keyedobjects.nib000644 001751 000024 00000016714 11342761060 023425 0ustar00multixstaff000000 000000 bplist00Ô 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.1.0/English.lproj/DFTLowPass.nib/objects.nib000644 001751 000024 00000005300 11342760761 022377 0ustar00multixstaff000000 000000  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.1.0/English.lproj/DFTHighPass.nib/classes.nib000644 001751 000024 00000002057 11342760761 022527 0ustar00multixstaff000000 000000 { 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.1.0/English.lproj/DFTHighPass.nib/info.nib000644 001751 000024 00000000762 11342760761 022026 0ustar00multixstaff000000 000000 IBDocumentLocation 101 108 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.1.0/English.lproj/DFTHighPass.nib/keyedobjects.nib000644 001751 000024 00000016520 11342761060 023536 0ustar00multixstaff000000 000000 bplist00Ô 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.1.0/English.lproj/DFTHighPass.nib/objects.nib000644 001751 000024 00000005212 11342760761 022517 0ustar00multixstaff000000 000000  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.1.0/English.lproj/CustTraceEdges.nib/classes.nib000644 001751 000024 00000003277 11343322523 023324 0ustar00multixstaff000000 000000 { 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.1.0/English.lproj/CustTraceEdges.nib/info.nib000644 001751 000024 00000000704 11343322523 022612 0ustar00multixstaff000000 000000 IBDocumentLocation 110 16 356 240 0 0 1280 1002 IBFramework Version 291.0 IBOpenObjects 5 IBSystem Version 6R73 PRICE-1.1.0/English.lproj/CustTraceEdges.nib/objects.nib000644 001751 000024 00000016655 11343322523 023324 0ustar00multixstaff000000 000000  typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+PRCCustTraceEdges†…†„iA–„„„NSSlider„„ NSControl)„„NSView)„„ NSResponder”’„œ’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’™’„„„ NSTextField›’ž™ž…………òhNN’ž’…’…’…„icc@„„„NSTextFieldCell>„„ NSActionCell„„NSCellA”„ii‚„1þA‚@„@@@@„˜˜3†„„„NSFont”™$„[36c]þÿLucidaGrande„f „c«««†……„i:…’…’¢„c@@„„„NSColor”«„@@@„˜˜System†„˜˜textBackgroundColor†„¬«„ff††„¬«¯­„˜˜ textColor†„¬«°†††’…„:…†’„„„ NSPopUpButtonÌ„„NSButton›’ž™ž…………_*€€’ž’…’…’…¢„„„NSPopUpButtonCell1„„NSMenuItemCellÒ„„ NSButtonCell?¦¦‚„Aþ‚§…©……¬…’…’³„ ssii@@@@@K‚‚@ÿ„„„NSMutableString˜˜†„»˜†…„ª™$©þÿLucidaGrandeª ««««†…–„„„ NSMenuItemù”’„„„NSMenuÌ”„i@@@„»˜ OtherViews†„ ™’¾’„¿’À„ i@@IIi@@@@:i@„˜˜Vertical†„˜˜†‚‚ÿÿÿ…„„„NSCustomResource)”–„˜˜NSImage†„˜˜NSMenuCheckmark††…„È–É„˜˜NSMenuMixedState††„_popUpItemAction:…’¶’…†’„¿’À¼„˜˜Cross†Æ‚‚ÿÿÿ…Dž˾…’¶’…†’„¿’À¼„˜˜Box†Æ‚‚ÿÿÿ…Dž˾…’¶’…††…†¼„˜˜ Horizontal†Æ‚‚ÿÿÿ…Dž˾…’¶’…†…„i@i‚=À††’„µ’ž™ž…………ð/TT’ž’…’…’…¢„¹¦‚þ§„˜˜ Separable†©……¬…’…’Ò·È‚H­Þᆒ…±…†’„´’-™ž…………_*€€’-’…’…’…¢„·¦‚„Aþ‚§…©……¬…’…’A·K‚‚@ÿ„»˜†„»˜†…½…–„¿’„Á»„»˜ OtherViews†„ ™’E’„¿’F¼„˜˜Vertical†Æ‚‚ÿÿÿ…Dž˾…’B’…†’„¿’F¼„˜˜Cross†Æ‚‚ÿÿÿ…Dž˾…’B’…†’„¿’F¼„˜˜Box†Æ‚‚ÿÿÿ…Dž˾…’B’…††…†¼„˜˜ Horizontal†Æ‚‚ÿÿÿ…Dž˾…’B’…†…¿‚=F†††……… !k«k«’…’…’…’…†„˜˜Third†Þ……󆆩’…†™ž„ ™’„š’ò™ž…………`C~~’ò’…’…’…¢„禂ÿ§„»˜†é……¬…’…’RÃ?É™™™™™š ††’„£’ò™ž…………ïHNN’ò’…’…’…¢„¥¦‚„1þA‚€@§„˜˜0.2†©„„„NSNumberFormatter„„ NSFormatter”Ç„˜˜#,##0.00†„˜˜ -#,##0.00†„„„ NSDictionary”™†…„„„NSAttributedString”’„˜˜0.00†„iI’„^™††„`’Ɔ„`’„˜˜NaN†Ì’b†„@@@@@ccc„„„NSDecimalNumberPlaceholder”™„S„CЄI„[8S]§ßx—à~D—à~$NSDe†f…„˜˜.†„˜˜,††…¬…’…’U­«°†’…±…†’„£’ò™ž…………Err’ò’…’…’…¢„¥¦‚þ‚@§„˜˜ Threshold: †©……¬…’…’j­Þᆒ…±…†’„µ’ò™ž…………[[’ò’…’…’…¢„¹¦‚þ§„˜˜ Zero Cross†©……¬…’…’m·È‚H-–XU–³ž–8-–÷õ–¾À–!–$!–(!– –ÏÀ–;-–mò–FA–5-–të– ó– !–üõ–IF–À³–ó–ãž– –ž–Rò–ñò–,ó–Uò–vë–Øž–A-™2–Ä„˜˜ NSMenuItem1†–™„˜˜ NSSlider21†–Û„˜˜ NSTextField2†–ꄘ˜ NSMenuItem11†–„˜˜ NSTextField21†–„˜˜ NSTabViewItem†–R„˜˜ NSSlider2†–„˜˜Panel†–넘˜ PopUpList1†–Ò„˜˜ NSButton4†–/„˜˜ NSButton41†– „˜˜ NSSlider21†–„˜˜ NSTextField†–~„˜˜ NSMenuItem21†– „˜˜ NSMenuItem†–j„˜˜ NSTextField22†–$„˜˜ NSMenuItem1†–•„˜˜ File's Owner†–Í„˜˜ NSMenuItem2†–K„˜˜ NSMenuItem2†–Ø„˜˜ NSButton41†–2„˜˜ NSButton4†–„˜˜NSTabViewItem1†–󄘘 NSTabView†–ò„˜˜NSView†–I„˜˜ NSMenuItem1†–>„˜˜ NSTextField2†–÷„˜˜NSButton†–8„˜˜ NSSlider21†–„˜˜ NSButton4†–³„˜˜ NSPopUpButton†–F„˜˜ PopUpList†–¾„˜˜ NSMenuItem†–ü„˜˜ NSButton1†–E„˜˜ NSMenuItem†–m„˜˜ NSButton41†–!„˜˜ PopUpList†–U„˜˜ NSTextField1†–„˜˜ NSTextField2†–¢„˜˜ NSTextField†–À„˜˜ PopUpList†–„˜˜ NSPopUpButton†–ㄘ˜ NSTextField21†–„˜˜ NSButton41†–ž„˜˜NSView†–A„˜˜ NSPopUpButton†–ñ„˜˜NSPopUpButton11†–&„˜˜ NSMenuItem2†–;„˜˜ NSTextField21†–5„˜˜ 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•ú†’„Ù¯³•ú†’„Ù¯Ò•ú†’„Ù¯•ú†’„Ù¯•ú†’„Ù¯A•ú†’„Ù¯2•ú††’…™g„@iÀAÛ³ÛØVÛÄÛ™Û÷ÛÛÛ#ÛñtÛáhÛ¾Û8^ÛÈNÛÐRÛépÛê=Û'Ûj3Û "Û2[Û~7ÛÏÛ;`Ûî<Ûm?Û!.Û /Û ÛùzÛÒSÛïsÛõÛó ÛóvÛMbÛt5ÛÆEÛÒÛãiÛ ÛÀÛF_ÛÛ(-Ûx>Û>cÛEaÛ,ÛI]Ûþ~Û*Ûv@ÛÛë4Ûü|ÛÝfÛåjÛÄCÛ|:Ûã Û•ÛÌPÛÔTÛírÛÍÛž Û€Û÷yÛ-YÛ&ÛAdÛÛ¢ÛÿÛñ6Û%Û¼ Ûr8Ûý}ÛÎQÛÛWÛ,XÛÊOÛÖUÛU2ÛßgÛëqÛçnÛÂBÛû{Û&0ÛòÛz;ÛÛ$+ÛR1ÛüÛ5\ÛØÛXwÛ/ZÛKeÛõx™‚™’„˜˜IBCocoaFramework††PRICE-1.1.0/English.lproj/Curves.nib/classes.nib000644 001751 000024 00000001701 11624554742 021730 0ustar00multixstaff000000 000000 { 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.1.0/English.lproj/Curves.nib/info.nib000644 001751 000024 00000000760 11622230651 021216 0ustar00multixstaff000000 000000 IBDocumentLocation 99 95 356 240 0 0 1440 938 IBFramework Version 489.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.1.0/English.lproj/Curves.nib/keyedobjects.nib000644 001751 000024 00000015627 11657050116 022752 0ustar00multixstaff000000 000000 bplist00Ô Y$archiverX$versionT$topX$objects_NSKeyedArchiver† Ñ ]IB.objectdata€¯® 156<=AET\tuvz~‰‘ž¸¹ÁÂÅÆÈÍÓÚÛãäæíîö÷ù !"Ñ#&*+-./78=GHIMORUXbflsz{†‡Œ”›œ¤¥¬­·º½ÄÅÌÍ.ÎÔÕרÙÚÛÞßãèéîïôõúûþ  ú!&79JWdef%ghi’Ïjmpް¬­®¯<°±²³´µ¶·¸¹º»¼½¾D¿ÀÁÂÃÄÇÊÍ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Ò>FS¬GHIJKLMNOPQR€ €e€g€i€k€n€p€r€t€v€x€z€0ÔUVWXYZ0]NSDestinationWNSLabelXNSSource€ €c€d€Ü]^_`abcdefghijklmnopqrs_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass€`€ € € €_€a€px€b€_{{246, 367}, {418, 367}}VCurvesÒwxyYNS.stringWNSPanel€Ò78{|£|};_NSMutableStringXNSStringÒwyTView€Ô‚ƒ„….‡ˆZNSSubviews_NSNextResponderWNSFrame€€€^€2Ò>ŠS¥‹ŒŽ€€€"€'€@€0׃’„“”•pp˜™š›œ[NSSuperviewYNSEnabledXNSvFlagsVNSCell€€€ €€_{{14, 12}, {82, 32}}ÝŸ ¡¢£¤¥¦§¨©ª«¬¬®‹°±²³´µ¶·_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2€€€€€ÿÿÿÿ†‚@ÿ€Èþ€UResetÔº»¼½¾¿ÀVNSSizeVNSNameXNSfFlags"AP€€\LucidaGrandeÒ78ÃÄ¢Ä;VNSFontPÒwÅy€Ò78ÉÊ¥ÊËÌ•;\NSButtonCell]%NSButtonCell\NSActionCellÒ78ÎÏ¥ÏÐÑÒ;XNSButtonYNSControlVNSView[NSResponder׃’„“”•ppÖ™š›Ù€€€ €€_{{240, 12}, {82, 32}}ÝŸ ¡¢£¤¥¦§¨©ªÜ¬¬ßŒ°±²³´µ¶·€!€€€ €€€VCancelÒwÅy€׃’„“”•pp陚›ì€€€# €€$_{{322, 12}, {82, 32}}ÝŸ ¡¢£¤¥¦§¨©ªï¬¬ò°±²³´µ¶·€&€€€%€"€€UApplyÒwÅy€Ü‚ƒ’úûü„ýþÿpphi  \NSBorderType_NSTitlePosition[NSTitleCellYNSOffsets]NSTransparent]NSContentViewYNSBoxType€(€€€5€3€4€)€?Ò> S¡€)€0Õ‚ƒ’„ŽŽˆ€*€'€'€1€2Ò>S¡€+€0Öƒ’„2 [NSExtension€.€)€)€,€/€-_{{14, 14}, {256, 256}}\PRCurvesViewÒ78$%¤%ÑÒ;\NSCustomViewÒ78'(£();^NSMutableArrayWNSArray_{{2, 2}, {284, 284}}Ò78,Ñ£ÑÒ;_{{17, 46}, {288, 301}}V{0, 0}×01¡¢¨ª23456µ _NSBackgroundColor[NSTextColor€8€=€7€6€>YFunctionsÔº»¼9¾¿<"A0€€Õ>?@ABCDEFWNSColor[NSColorName\NSColorSpace]NSCatalogName€;€:€9€¢>;ÓJ@PhFM0 0.80000001€<Ò78ST¤TÌ•;_NSTextFieldCellÒ78VW¤WÑÒ;UNSBoxÜ‚ƒ’úûü„ýþÿYpphi\]^`  €A€€€[€Y€Z€B€?Ò>cS¡`€B€0Õ‚ƒ’„gjˆ€C€@€@€X€2Ò>mS¤nopq€D€L€P€U€0׃’„“”•``v™šxy€B€B€E €K€F_{{14, 46}, {41, 22}}Ù01¡¢£|¨ª2~¬€n™6„…_NSDrawsBackground€8€H€€G€D €>ÿÿÿÿ”qþA@Q0Õ>?@Aˆ‰DEF€J€I€9€S255׃’„“”•``¨™šª«€B€B€Q €T€R_{{60, 43}, {19, 27}}×®£¯¨°ª™p³´µ¶ \NSAutorepeatZNSMaxValue[NSIncrement €P#@oÀ€S þ #?ðÒ78¸¹¤¹Ì•;]NSStepperCellÒ78»¼¥¼ÐÑÒ;YNSStepper׃’„“”•``À™šªÀB€B€V €T€W_{{60, 11}, {19, 27}}Ù®£Æ¯Ǩ°ª™q¶Ê´¶µ¶ WNSValueZNSMinValue €U#@oà€S_{{2, 2}, {90, 82}}_{{307, 248}, {94, 99}}×01¡¢¨ª2Ð4Ò6µ €8€]€7€\€>]Black & WhiteÓJ@PhF€<_{{1, 1}, {418, 367}}_{{0, 0}, {1440, 938}}Z{213, 129}_{3.40282e+38, 3.40282e+38}Ò78ÜÝ¢Ý;_NSWindowTemplate\curvesWindowÒ78àá£áâ;_NSNibOutletConnector^NSNibConnectorÔUVWåZ0€+€f€d€ZcurvesViewÔUVWnëZ0€D€h€d€_blackPointFieldÔUVWoñZ0€L€j€d€_whitePointFieldÔUVW0÷øn€€l€m€D^setBlackPoint:Ò78üý£ýâ;_NSNibControlConnectorÔUVW0øo€€o€m€L^setWhitePoint:ÔUVW0ø€€q€m€"YfilterOK:ÔUVW0 øŒ€€s€m€]filterCancel:ÔUVWpZ0€P€u€d€_blackPointStepperÔUVWqZ0€U€w€d€_whitePointStepperÔUVW0øp€€y€m€PÔUVW0#øq€€{€m€UÒ>'6®Ž`ŒXpoqpn‹€'€@€B€"€€ €P€L€+€U€€D€)€€}Ò788)¢);Ò>:6®pppp0```X`Žp€€€@€€€€B€B€)€B€ €B€'€€}Ò>K6ªŒXpo0qn‹€"€€ €P€L€€+€U€D€€}Ò>X6ªYZ[\]^_`ab€€‚€ƒ€„€…€†€‡€ˆ€‰€Š€}YNSButton2YNSButton1UPanel\NSTextField1\File's Owner]NSCustomView1Ò>k6 €}Ò>n6 €}Ò>q6¯0IHJnopRGNK`Oq‹ŒPpXLŽQM€€g€e€i€D€L€P€z€ €r€)€k€B€t€U€€"€€@€+€v€€ €n€'€x€p€}Ò>6¯‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª€€€‘€’€“€”€•€–€—€˜€™€š€›€œ€€ž€Ÿ€ €¡€¢€£€¤€¥€¦€§€¨€©€}  $ !   "#Ò>ÅS €0Ò>È6 €}Ò>Ë6 €}Ò78ÎÏ¢Ï;^NSIBObjectData#,1:LQVdfÅË(DVam{—¤·¾ÌÚè&-/13579;=?ACEGIKMOQZfhjt}†‘–¥®ÁÊÕÖØáèõû!#%')+-/1357HV^gikmo ´ÆÐÞìù'3579;=?ACEJLNipyƒ‹–¯¸ÁÆÈÙäöþ "$&COYbikmopsuwŽÃÕèòý /=O[q~€‚„†ˆŠŒ•—™ž ¥«¼ÃÊÓØÚÜßìõú  !.<IR]fpwƒ ¢¤¦§©«Ãøúüþ      5 7 9 ; < > @ X ‘ “ • — ™ › ¡ ª ¬ Ý ê ü   . 8 : < > @ B D E G I K T W Y [ p r t v x z ƒ † ˆ Š £ ¯ ± ³ µ · ¹ » Ô á ê ó   ' > G N g n ‹ Ÿ « ­ ¯ ± ³ µ ¿ Ð Õ × Ù Û ð ø    ! # % ' ) 0 F S [ ^ ` i n { ‰ ‹ ” ¯ ¸ Á Ç ø ú ü þ         . 0 2 4 6 8 A J L N P R T q s u w x z | “ ¸ Ì Î Ð Ò Ô Ö × Ù â ç é þ "+8DQnprtuwyµ·¹»½¿ÀÂÆãåçéêìî"/:FGIRTYbkt‚‹– ½¿ÁÃÄÆÈß #%:Sprtvxzˆ•—®ÆÑî÷ü%,CRcegikv‡‰‹¡²´¶¸ºÌÝßáãåôý-/135DUWY[]gxz|~€ŽŸ¡£¥§»ÌÎÐÒÔèùûýÿ#@BDFHJLNPRTVXZ\^glu’”–˜šœž ¢¤¦¨ª¬®°¹ÎÐÒÔÖØÚÜÞàâäí  ",2?LZcdfopr{´¶¸º¼¾ÀÂÄÆÈÊÌÎÐÒÔÖØÚÜÞàâäæèêìõ.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~€‚„†ˆŠŒŽ’”–Ÿ ¢«¬®·¸ºÃÈÐ×PRICE-1.1.0/English.lproj/Curves.nib/objects.nib000644 001751 000024 00000004654 11657050116 021726 0ustar00multixstaff000000 000000  typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+ PRCCurves†…†„i–„„„NSBox*„„NSView)„„ NSResponder”’„›’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’„„„NSButton„„ NSControl)›’™‚€………… R R ’’…’…’…„icc@„„„ NSButtonCell?„„ NSActionCell„„NSCellA”„ii‚þ‚„@@@@„˜˜Reset†„„„NSFont”™$„[36c]þÿLucidaGrande„f „c«««†……„i:…’…’¡„ ssii@@@@@È‚†‚@ÿ„˜˜†„„„NSMutableString˜˜†…©…††’„¢’™‚€…………ð R R ’’…’…’…¢„¥¦‚þ‚§„˜˜Cancel†©……¬…’…’®­È‚†‚@ÿ«„­˜†…©…††’„¢’™‚€…………B R R ’’…’…’…¢„¥¦‚þ‚§„˜˜Apply†©……¬…’…’²­È‚†‚@ÿ«„­˜†…©…††’™’„š’™„Ÿ™’„›’¶™„Ÿ™’„„„ NSTextField£’¸™‚€………….))’¸’…’…’…¢„„„NSTextFieldCell>¦¦‚”qþA‚@§„˜˜0†©……¬…’…’º„c@@„„„NSColor”«„@@@„˜˜System†„˜˜textBackgroundColor†„À«„ff††„À«³Á„˜˜ textColor†„À«´†††’…„:…†’„»’¸™‚€…………))’¸’…’…’…¢„½¦‚”qþA‚@§„˜˜255†©……¬…’…’DZ¿Ä†’…µ…†’„„„ NSStepper£’¸™‚€…………<+’¸’…’…’…¢„„„ NSStepperCell¦¦‚ þ §…………¬…’…’Ê„ ddddiiiiiþ‚@†„iiii†’„Ë’¸™‚€…………< ’¸’…’…’…¢„ͦ‚ þ §…………¬…’…’θÿ‚@†¹††………ZRZR’¶’…’…’…††………3ø^c^c’’…’…’…„ff@@ccc„½¦‚þ§„˜˜ Black & White†„ª™$©þÿLucidaGrandeª ««««†……¬…’…’…±¿„À«´ƒ?LÌ͆†¸’…††………¢o¢o’…’…’…’…†™„Ÿ™’„›’™™„Ÿ™’„„„ NSCustomView)›’Õ™…………’Õ’…’…’…–„˜˜ PRCurvesView†„˜˜NSView†††………’™’…’…’…††………. - -’’…’…’…º„½¦‚þ§„˜˜ Functions†Ò……¬…’…’…±¿„À«´ƒ?LÌ͆†Õ’…†–¶–¸¶–²–®–„„„NSWindowTemplateø”„ iiffffi@@@@@cöo¢o‚px„˜˜Curves†„­˜NSPanel†„­˜View†…„ffff ª«´Õ’…«´ƒÿîƒÿ–ʸ–Ǹ–×Ֆθ–Þ–º¸–Õ™–¡™ –²„˜˜ NSButton2†–®„˜˜ NSButton1†–Þ„˜˜Panel†–Ê„˜˜ NSCustomView†–Ç„˜˜ NSTextField1†–•„˜˜ File's Owner†–ׄ˜˜View†–΄˜˜ NSCustomView1†–º„˜˜ NSTextField†–¡„˜˜NSButton†’„„„ NSMutableSet„„NSSet”„I†’„Ÿ™ ’„„„NSNibOutletConnectorÏ„„NSNibConnector”³•Þ„˜˜ curvesWindow††’„ò³•ׄ˜˜ curvesView††’„ò³•º„˜˜blackPointField††’„ò³•Ç„˜˜whitePointField††’„„„NSNibControlConnectorÏ󳺕„˜˜setBlackPoint:††’„ü³Ç•„˜˜setWhitePoint:††’„ü³²•„˜˜ filterOK:††’„ü³®•„˜˜ filterCancel:††’„ò³•Ê„˜˜blackPointStepper††’„ò³•΄˜˜whitePointStepper††’„ü³Ê•„˜˜setBlackPoint:††’„ü³Î•„˜˜setWhitePoint:†††’…™„@i•Å÷Åõ Åùź ÅÇÅÊÅ $ÅñÅ ÅÕÅûŸÅ!ÅÎÅ¡ Ų Å® ŶÅ×Å"ÅÅÞÅþÅ™Å#Å™%™’„˜˜IBCocoaFramework††PRICE-1.1.0/English.lproj/CumulHistogram.nib/classes.nib000644 001751 000024 00000001157 07773414123 023427 0ustar00multixstaff000000 000000 { 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.1.0/English.lproj/CumulHistogram.nib/info.nib000644 001751 000024 00000000703 10035740642 022712 0ustar00multixstaff000000 000000 IBDocumentLocation 129 74 356 240 0 0 1152 848 IBFramework Version 283.0 IBOpenObjects 5 IBSystem Version 6R73 PRICE-1.1.0/English.lproj/CumulHistogram.nib/objects.nib000644 001751 000024 00000001304 10035740642 023406 0ustar00multixstaff000000 000000  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.1.0/English.lproj/Crop.nib/classes.nib000644 001751 000024 00000001570 10206060661 021353 0ustar00multixstaff000000 000000 { IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { changeBottom = id; changeLeft = id; changeRight = id; changeTop = id; cropCancel = id; cropOK = id; resetValues = id; showCrop = id; }; CLASS = PRCCrop; LANGUAGE = ObjC; OUTLETS = { bottomField = NSTextField; cropWindow = NSWindow; heightField = NSTextField; leftField = NSTextField; rightField = NSTextField; topField = NSTextField; widthField = NSTextField; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }PRICE-1.1.0/English.lproj/Crop.nib/info.nib000644 001751 000024 00000000703 10206060661 020646 0ustar00multixstaff000000 000000 IBDocumentLocation 57 169 356 240 0 0 1024 746 IBFramework Version 283.0 IBOpenObjects 5 IBSystem Version 6R73 PRICE-1.1.0/English.lproj/Crop.nib/objects.nib000644 001751 000024 00000005126 10206060661 021350 0ustar00multixstaff000000 000000  typedstreamè„@„„„NSIBObjectDataà„„NSObject…’„„„NSCustomObject)”„@@„„„NSString”„+PRCCrop†…†„i–„„„NSWindowTemplateø”„ iiffffi@@@@@cŠ¡)÷‚px„˜˜Crop†„˜˜NSPanel†„„„NSMutableString˜˜View†„„„NSView)„„ NSResponder”’…™„ @@@@ffffffff„„„NSMutableArray„„NSArray”™’„„„ NSTextField„„ NSControl) ’Ÿ™Ÿ…………<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‚@©¼­……®…’…’¯½À†’…³…†’„„„NSButton§’Ÿ™Ÿ………… T T ’Ÿ’…’…’…¤„„„ NSButtonCell?ª¨‚þ‚8©„˜˜Reset†­……®…’…’Ä„ ssii@@@@@È‚†‚@ÿ„ž˜†„ž˜†…„®™„[28c]þÿHelvetica¬ ­­­­†…††’„Å’Ÿ™Ÿ…………Ç T T ’Ÿ’…’…’…¤„Ǩ‚þ‚8©„˜˜Crop†­……®…’…’̶È‚†‚@ÿ„ž˜†„ž˜†…Ë…††’„Å’Ÿ™Ÿ…………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¬ ­­­­†……†Ø’…††………)÷)÷’…’…’…’…†…„ffffê­²Õ’…­²ƒÿîƒÿ–ÚØ–ÌŸ–ÕŸ–ÄŸ–ºŸ–ãØ–àØ–ÂŸ–·Ÿ–ÑŸ–Ÿ™–¥Ÿ–ØÕ–ÝØ™ –™„˜˜Panel†–Ú„˜˜ NSTextField†–Ì„˜˜ NSButton1†–Ä„˜˜NSButton†–•„˜˜ File's Owner†–¥„˜˜ NSTextField2†–à„˜˜NSTextField421†–„˜˜ NSTextField3†–·„˜˜ NSTextField21†–Ñ„˜˜ NSButton2†–º„˜˜ NSTextField1†–ㄘ˜ NSTextField4†–Ý„˜˜ NSTextField41†’„„„ NSMutableSet„„NSSet”„I†’„£™’„„„NSNibOutletConnectorÏ„„NSNibConnector”±•Ú„˜˜topField††’„û±•ㄘ˜ bottomField††’„û±•à„˜˜ leftField††’„û±•Ý„˜˜ rightField††’„û±•º„˜˜ widthField††’„û±•™„˜˜ cropWindow††’„û±•„˜˜ heightField††’„„„NSNibControlConnectorÏü±Ì•„˜˜cropOK:††’„ ±ã•„˜˜ changeBottom:††’„ ±à•„˜˜ changeLeft:††’„ ±Ý•„˜˜ changeRight:††’„ ±Ú•„˜˜ changeTop:††’„ ±Ñ•„˜˜ cropCancel:††’„ ±Ä•„˜˜ resetValues:†††’…™„@i Á™Á ÁÚÁ Á· Áà ÁÁÌÁÁúÁ•ÁÑÁÁº ÁãÁŸÁ¥ÁÄÁÁÁÁÁÕ"ÁÁÁþÁÝ ÁÁØ#™$™’„˜˜IBCocoaFramework††PRICE-1.1.0/English.lproj/Convolve55.nib/classes.nib000644 001751 000024 00000005453 11343447431 022430 0ustar00multixstaff000000 000000 { 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.1.0/English.lproj/Convolve55.nib/info.nib000644 001751 000024 00000000761 11343447431 021723 0ustar00multixstaff000000 000000 IBDocumentLocation 136 80 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.1.0/English.lproj/Convolve55.nib/keyedobjects.nib000644 001751 000024 00000046204 11343541655 023450 0ustar00multixstaff000000 000000 bplist00Ô 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.1.0/English.lproj/Convolve55.nib/objects.nib000644 001751 000024 00000016337 11343447431 022427 0ustar00multixstaff000000 000000  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.1.0/English.lproj/BriCon.nib/classes.nib000644 001751 000024 00000001575 11341433431 021631 0ustar00multixstaff000000 000000 { 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.1.0/English.lproj/BriCon.nib/info.nib000644 001751 000024 00000000760 11342761060 021125 0ustar00multixstaff000000 000000 IBDocumentLocation 69 76 356 240 0 0 1440 938 IBFramework Version 439.0 IBOldestOS 1 IBOpenObjects 5 IBSystem Version 8S165 PRICE-1.1.0/English.lproj/BriCon.nib/keyedobjects.nib000644 001751 000024 00000017373 11342761060 022655 0ustar00multixstaff000000 000000 bplist00Ô 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.1.0/English.lproj/BriCon.nib/objects.nib000644 001751 000024 00000005346 11341433431 021625 0ustar00multixstaff000000 000000  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††