scopeapp-cvs Mailing List for MacCRO X (Page 5)
Status: Alpha
Brought to you by:
narge
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(8) |
Jul
(52) |
Aug
(3) |
Sep
|
Oct
(7) |
Nov
(1) |
Dec
(31) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(10) |
Feb
(75) |
Mar
|
Apr
(17) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(11) |
Dec
|
From: <sco...@li...> - 2003-02-01 09:10:38
|
Update of /cvsroot/scopeapp/scopeapp In directory sc8-pr-cvs1:/tmp/cvs-serv11958 Modified Files: Readme.rtf Added Files: Source Readme.rtf Log Message: Update readme files to prepare for alpha binary release --- NEW FILE: Source Readme.rtf --- {\rtf1\mac\ansicpg10000\cocoartf102 {\fonttbl\f0\fswiss\fcharset77 Optima-Bold;\f1\fswiss\fcharset77 Optima-Regular;\f2\fmodern\fcharset77 Courier; } {\colortbl;\red255\green255\blue255;} \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \f0\b\fs56 \cf0 MacCRO X\ \fs28 Copyright \'a9 2002, 2003 by Philip Derrin\ \f1\b0 \ \f0\b About this Package\ \f1\b0 \ This is the source code package for MacCRO X. It is distributed under the GNU General Public License; refer to License.rtf for the full text. There are currently no binaries distributed by me, because I do not consider MacCRO X to be in a useable state (yet).\ \ This is a complete rewrite of MacCRO. The code is not based on the Classic version, apart from the general appearance of the interface. It's a Cocoa program, so the interface is built with Interface Builder and the code is in Objective-C.\ \ \f0\b State of the Code \f1\b0 \ \ There are several known bugs and missing features; see Todo.rtf for more information.\ \ The sound input code now uses PortAudio (www.portaudio.com), which uses CoreAudio on Mac OS X. I have included the relevant bits of portaudio in this source distribution, so you don't need to download it separately.\ \ The linux port is currently branched in cvs. This is not it. If you want to try it out, please check out from Sourceforge's cvs server using the tag "gnustep-branch".\ \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \f2\fs24 \cf0 $Header: /cvsroot/scopeapp/scopeapp/Source\040Readme.rtf,v 1.1 2003/02/01 09:10:35 narge Exp $} Index: Readme.rtf =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/Readme.rtf,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Readme.rtf 5 Dec 2002 15:15:48 -0000 1.4 --- Readme.rtf 1 Feb 2003 09:10:34 -0000 1.5 *************** *** 7,11 **** \f0\b\fs56 \cf0 MacCRO X\ ! \fs28 Copyright \'a9 2002 by Philip Derrin\ \f1\b0 \ --- 7,12 ---- \f0\b\fs56 \cf0 MacCRO X\ ! \fs28 Copyright \'a9 2001, 2002, 2003 by Philip Derrin <na...@us...>\ ! Copyright \'a9 2002 by Rafal Kolanski <xap...@us...>\ \f1\b0 \ *************** *** 14,31 **** \f1\b0 \ ! This is the source code package for MacCRO X. It is distributed under the GNU General Public License; refer to License.rtf for the full text. There are currently no binaries distributed by me, because I do not consider MacCRO X to be in a useable state (yet).\ \ ! This is a complete rewrite of MacCRO. The code is not based on the Classic version, apart from the general appearance of the interface. It's a Cocoa program, so the interface is built with Interface Builder and the code is in Objective-C.\ \ ! \f0\b State of the Code \f1\b0 \ \ ! There are many areas where the code is incomplete.The sound input code isn't very well tested. The display code is implemented but doesn't work properly yet. See\ \ ! The sound input code now uses PortAudio (www.portaudio.com), which uses CoreAudio on Mac OS X. I have included the relevant bits of portaudio in this source distribution, so you don't need to download it separately.\ \ ! The linux port is currently branched in cvs. This is not it. If you want to try it out, please check out from Sourceforge's cvs server using the tag "gnustep-branch".\ \ ! \f2\fs24 $Header$} \ No newline at end of file --- 15,55 ---- \f1\b0 \ ! This is an alpha release of MacCRO X. It is incomplete. Important features are missing, and there are probably bugs. Not everything works, and things that do work may not work correctly. If you find any such problems, or if you have any improvements to suggest, please contact the authors. See Todo.rtf for the current list.\ \ ! Unlike the original MacCRO, this is free software. It is distributed under the terms of the GNU General Public License; for further information, start MacCRO and select "Show License" from the Help menu or read the License.rtf file included in this package.\ \ ! \f0\b About MacCRO X \f1\b0 \ \ ! MacCRO X is an application which allows you to use your computer's sound input device as an audio-frequency oscilloscope and spectrum analyser. As the name suggests, it runs only on Mac OS X (though an X11 port using GNUstep is in the works).\ \ ! ! \f0\b System Requirements ! \f1\b0 \ \ ! \'a5 Mac OS X 10.2 ("Jaguar") or later, and a Mac which will run it. There's no major reason it won't run on earlier Mac OS X versions, so if you have an older version and want to use MacCRO, contact me and I'll fix it for you.\ ! \'a5 A sound input device. Most Macs have these built in, but some PowerMac G4 machines (like mine) do not; if you have such a machine, you'll need a USB sound input, a PCI sound card, or some other form of input device supported by OS X. If you have multiple devices, select the one you want to use in the Sound panel in System Preferences.\ \ ! \f0\b For MacCRO PPC Users ! \f1\b0 \ ! \ ! The interface of MacCRO X is similar to the original MacCRO; if you have used that program, this should be familiar. There are a few minor differences; the most obvious is that the controls are now in a separate window. Also, you don't have to pay for it (though you can if you really want to!).\ ! \ ! ! \f0\b For New Users ! \f1\b0 \ ! \ ! When you start MacCRO X, two windows will appear. One contains an oscilloscope trace (a horizontal line which will probably be moving); the other contains a large number of controls.\ ! \ ! The three tabs at the top of the control window switch between MacCRO X's three basic modes: \ ! \'a5 Oscilloscope: a plot of signal amplitude over time.\ ! \'a5 X/Y Plot: for stereo signals, plots the amplitude in one channel along one axis and the amplitude in the other channel along the other axis. If you don't have a stereo signal, you'll just see a diagonal line.\ ! \'a5 Spectrum analyser: plots amplitude over frequency.\ ! \ ! The other controls in the window \'d1 which vary depending on which of the three modes is selected \'d1 are used mostly to select what scale to use on each axis. There are a few extra controls for things such as triggering (in the oscilloscope, not implemented yet) and sample resolution (in the spectrum analyser). There are also controls in all three modes to enable and disable the grids (not implemented yet) and to freeze the display.\ ! \ ! \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural ! ! \f2\fs24 \cf0 $Header$} \ No newline at end of file |
From: <sco...@li...> - 2003-02-01 07:01:06
|
Update of /cvsroot/scopeapp/scopeapp In directory sc8-pr-cvs1:/tmp/cvs-serv16115a Modified Files: Todo.rtf Log Message: Update todo list Index: Todo.rtf =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/Todo.rtf,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Todo.rtf 5 Dec 2002 15:15:48 -0000 1.2 --- Todo.rtf 1 Feb 2003 07:01:03 -0000 1.3 *************** *** 9,31 **** \f1\b0\fs28 \ ! \f0\b Stuff That Must Be Done\ ! \f1\b0 \'a5 Debug the code that creates the trace window. In particular, position the window correctly.\ ! \'a5 Test & debug the oscilloscope and X/Y plot modes.\ ! \'a5 Spectrum analyser.\ ! \'a5 Finish the control panel.\ ! \'a5 Fix the problem with display updates in gnustep.\ ! \'a5 About box, including GPL text.\ \ ! \f0\b Stuff That Should Be Done Fairly Soon If Possible\ ! \f1\b0 \'a5 Fix the cosmetic bug involving tabs in gnustep.\ ! \'a5 InputSampler objects for audio files, and for linux audio input devices.\ ! \'a5 Multiple trace windows\ ! \'a5 UI for seeking in files.\ \'a5 Triggering code. Do this in InputSampler classes rather than TraceView if possible; UI might have to be changed to make this work well.\ \ ! \f2\fs24 $Header$\ } --- 9,34 ---- \f1\b0\fs28 \ ! \f0\b Bugs to fix\ ! \f1\b0 \'a5 Initial states of traces don't correspond to controls (implement -updateControls)\ ! \'a5 PortAudio fails to set the buffer size the first time MacCRO runs (on my system, using iMic).\ \ ! \f0\b Features to implement before beta release\ ! \f1\b0 \'a5 Grids, time and scale displays.\ ! \'a5 Speed up display further if possible.\ ! \'a5 Spectrum analyser: accumulation, windowing\ ! \'a5 Preferences for trace colour; maybe also to disable metal appearance for people who dislike it\ ! \ ! ! \f0\b Future Planned Features\ ! ! \f1\b0 \'a5 InputSampler objects for audio files. Also need a UI for seeking in files.\ ! \'a5 Multiple trace windows.\ \'a5 Triggering code. Do this in InputSampler classes rather than TraceView if possible; UI might have to be changed to make this work well.\ \ + \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural ! \f2\fs24 \cf0 $Header$\ } |
From: <sco...@li...> - 2003-02-01 06:15:18
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv5963/src Modified Files: ScopeController.m Log Message: Resize trace views to occupy entire window when switching view, in case it's been resized Index: ScopeController.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/ScopeController.m,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ScopeController.m 20 Jan 2003 14:29:14 -0000 1.10 --- ScopeController.m 1 Feb 2003 06:15:14 -0000 1.11 *************** *** 111,114 **** --- 111,115 ---- { int newTab = [tabView indexOfTabViewItem: tabViewItem]; + TraceView* newView; // assert that the tab view that has been switched is the mode tabs *************** *** 129,144 **** { case eOscilloscopeTab: ! [[[self window] contentView] addSubview: myScopeView]; ! [myScopeView startDrawingWithSampler: mySampler]; break; case eXYPlotTab: ! [[[self window] contentView] addSubview: myXYPlotView]; ! [myXYPlotView startDrawingWithSampler: mySampler]; break; case eSpectrumTab: ! [[[self window] contentView] addSubview: mySpectrumView]; ! [mySpectrumView startDrawingWithSampler: mySampler]; break; } } --- 130,146 ---- { case eOscilloscopeTab: ! newView = myScopeView; break; case eXYPlotTab: ! newView = myXYPlotView; break; case eSpectrumTab: ! newView = mySpectrumView; break; } + + [newView setFrameSize: [[[self window] contentView] bounds].size]; + [[[self window] contentView] addSubview: newView]; + [newView startDrawingWithSampler: mySampler]; } |
From: <sco...@li...> - 2003-01-21 14:59:06
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv13579/src Modified Files: SpectrumView.m Log Message: Don't include FFTW headers (MacOSX code uses vDSP framework instead) Index: SpectrumView.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/SpectrumView.m,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SpectrumView.m 20 Jan 2003 14:28:31 -0000 1.2 --- SpectrumView.m 21 Jan 2003 14:58:59 -0000 1.3 *************** *** 28,33 **** #include <math.h> - #include <fftw.h> - #include <rfftw.h> #define kResolutionMenuOffset 9 --- 28,31 ---- |
From: <sco...@li...> - 2003-01-20 14:29:17
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv23548/src Modified Files: ScopeController.h ScopeController.m Log Message: Enable SpectrumView Index: ScopeController.h =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/ScopeController.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ScopeController.h 19 Oct 2002 06:39:31 -0000 1.6 --- ScopeController.h 20 Jan 2003 14:29:14 -0000 1.7 *************** *** 27,31 **** #import <AppKit/AppKit.h> #import "ScopeView.h" ! //#import "SpectrumView.h" #import "XYPlotView.h" //#import "WaterfallView.h" --- 27,31 ---- #import <AppKit/AppKit.h> #import "ScopeView.h" ! #import "SpectrumView.h" #import "XYPlotView.h" //#import "WaterfallView.h" *************** *** 33,37 **** @interface ScopeController : NSWindowController { IBOutlet ScopeView* myScopeView; ! // IBOutlet SpectrumView* mySpectrumView; IBOutlet XYPlotView* myXYPlotView; // IBOutlet WaterfallView* myWaterfallView; --- 33,37 ---- @interface ScopeController : NSWindowController { IBOutlet ScopeView* myScopeView; ! IBOutlet SpectrumView* mySpectrumView; IBOutlet XYPlotView* myXYPlotView; // IBOutlet WaterfallView* myWaterfallView; *************** *** 39,46 **** IBOutlet NSPanel* myControlPanel; IBOutlet NSTabView* myModeTabs; - IBOutlet NSTabViewItem* myScopeTab; - IBOutlet NSTabViewItem* myXYPlotTab; - IBOutlet NSTabViewItem* mySpectrumTab; - // IBOutlet NSTabViewItem* myWaterfallTab; @private --- 39,42 ---- Index: ScopeController.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/ScopeController.m,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ScopeController.m 29 Oct 2002 05:50:11 -0000 1.9 --- ScopeController.m 20 Jan 2003 14:29:14 -0000 1.10 *************** *** 64,67 **** --- 64,68 ---- [myScopeView retain]; [myXYPlotView retain]; + [mySpectrumView retain]; [myControlPanel retain]; *************** *** 86,89 **** --- 87,91 ---- [myScopeView release]; [myXYPlotView release]; + [mySpectrumView release]; [myControlPanel release]; *************** *** 116,123 **** --- 118,127 ---- [myScopeView stopDrawing]; [myXYPlotView stopDrawing]; + [mySpectrumView stopDrawing]; // hide all the views [myScopeView removeFromSuperview]; [myXYPlotView removeFromSuperview]; + [mySpectrumView removeFromSuperview]; // show and start drawing in the new active view *************** *** 133,136 **** --- 137,142 ---- break; case eSpectrumTab: + [[[self window] contentView] addSubview: mySpectrumView]; + [mySpectrumView startDrawingWithSampler: mySampler]; break; } |
From: <sco...@li...> - 2003-01-20 14:28:40
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv22891/src Modified Files: SpectrumView.h SpectrumView.m Log Message: Initial implementation of spectrum analyser Index: SpectrumView.h =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/SpectrumView.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SpectrumView.h 29 Oct 2002 04:24:46 -0000 1.1 --- SpectrumView.h 20 Jan 2003 14:28:31 -0000 1.2 *************** *** 26,43 **** #import <AppKit/AppKit.h> #import "TraceView.h" @interface SpectrumView : TraceView { // **** Controls **** // Frequency scale ! IBOutlet NSTextField* myFreqFrom; ! IBOutlet NSTextField* myFreqTo; IBOutlet NSButton* myFreqIsLogCheckbox; // Amplitude scale ! IBOutlet NSTextField* myAmpFrom; ! IBOutlet NSTextField* myAmpTo; IBOutlet NSButton* myAmpIsLogCheckbox; ! IBOutlet NSPopupMenu* myAmpUnitsMenu; // Accumulation settings --- 26,52 ---- #import <AppKit/AppKit.h> + + #ifdef __APPLE__ + #import <vecLib/vecLib.h> + #else + #include <rfftw.h> + #endif + #import "TraceView.h" + @interface SpectrumView : TraceView { // **** Controls **** // Frequency scale ! IBOutlet NSFormCell* myFreqFrom; ! IBOutlet NSFormCell* myFreqTo; IBOutlet NSButton* myFreqIsLogCheckbox; + IBOutlet NSPopUpButton* myFreqResolutionMenu; // Amplitude scale ! IBOutlet NSFormCell* myAmpFrom; ! IBOutlet NSFormCell* myAmpTo; IBOutlet NSButton* myAmpIsLogCheckbox; ! IBOutlet NSPopUpButton* myAmpUnitsMenu; // Accumulation settings *************** *** 51,59 **** @protected // spectrum analyser settings ! double myXScale, myYScale; ! double myGain; BOOL myXIsLog, myYIsLog; BOOL myShowTime, myShowScales; } --- 60,74 ---- @protected // spectrum analyser settings ! double myXScales[2], myYScales[2]; ! double myXOffsets[2], myYOffsets[2]; BOOL myXIsLog, myYIsLog; + double myGain; BOOL myShowTime, myShowScales; + + // FFT stuff + #ifdef __APPLE__ + FFTSetup myFFTSetup; + #endif } *************** *** 69,70 **** --- 84,87 ---- @end + + // vim:syn=objc:inde=: Index: SpectrumView.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/SpectrumView.m,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SpectrumView.m 29 Oct 2002 04:24:46 -0000 1.1 --- SpectrumView.m 20 Jan 2003 14:28:31 -0000 1.2 *************** *** 27,31 **** #import "SpectrumView.h" ! static double gVoltScales[7] = {0.01,0.02,0.05,0.1,0.2,0.5,1}; @implementation SpectrumView --- 27,35 ---- #import "SpectrumView.h" ! #include <math.h> ! #include <fftw.h> ! #include <rfftw.h> ! ! #define kResolutionMenuOffset 9 @implementation SpectrumView *************** *** 34,41 **** // FIXME testing hack - implement updateControls myGain = 1.0; ! myDataWanted[0] = 882; // FIXME add a control for this ! myDataWanted[1] = 882; // FIXME add a control for this ! myXScale = 1; ! myYScale = 1; [super awakeFromNib]; --- 38,53 ---- // FIXME testing hack - implement updateControls myGain = 1.0; ! myDataWanted[0] = 4096; ! myDataWanted[1] = 4096; ! myXScales[0] = 1.0; ! myYScales[0] = 1.0; ! myXScales[1] = 1.0; ! myYScales[1] = 1.0; ! myXOffsets[0] = 0.0; ! myYOffsets[0] = 0.0; ! myXOffsets[1] = 0.0; ! myYOffsets[1] = 0.0; ! ! myFFTSetup = create_fftsetup(12, kFFTRadix2); // FIXME make sure log2n is ok [super awakeFromNib]; *************** *** 46,105 **** [self stopDrawing]; ! /* currently nothing to deallocate */ [super dealloc]; } ! -(IBAction) changedScale: (id) sender { ! if(sender == myYScaleSlider) ! { ! // if the scale slider moved, zero the fine slider ! [myYFineSlider setIntValue: 0]; } ! if(sender == myXScaleSlider) ! { ! [myXFineSlider setIntValue: 0]; } ! [self stopDrawing]; ! myXScale = gVoltScales[[myXScaleSlider intValue]-1] * ! pow(2.0, [myXFineSlider doubleValue]); ! ! myYScale = gVoltScales[[myYScaleSlider intValue]-1] * ! pow(2.0, [myYFineSlider doubleValue]); ! ! [self startDrawing]; } ! -(IBAction) changedDisplaySettings: (id) sender { ! myShowTime = [myShowTimeCheckbox intValue]; ! myShowScales = [myShowScaleCheckbox intValue]; } // FIXME implement this function to set the controls appropriately from // default / saved values ! -(id) updateControls { return self; } - (id)updateDisplay: (int) inTrace { - double theScaleFactor[2]; float curX, curY; ! unsigned long curSample; ! theScaleFactor[0] = myGain * 1 / myXScale; ! theScaleFactor[1] = myGain * 1 / myYScale; ! [myDisplayLock lock]; ! [myBezierPaths[0] removeAllPoints]; ! // FIXME do fft & display data ! #error [myDisplayLock unlock]; return self; } --- 58,243 ---- [self stopDrawing]; ! destroy_fftsetup(myFFTSetup); [super dealloc]; } ! -(IBAction) changedDisplaySettings: (id) sender { ! myShowTime = [myShowTimeCheckbox intValue]; ! myShowScales = [myShowScaleCheckbox intValue]; ! } ! ! -(IBAction) changedFreqScale: (id) sender ! { ! if(sender == myFreqResolutionMenu) { ! int log2n, n; ! BOOL wasDrawing; ! ! log2n = [sender indexOfSelectedItem] + kResolutionMenuOffset; ! n = 1 << log2n; ! ! wasDrawing = [self drawing]; ! if(wasDrawing) [self stopDrawing]; ! ! myDataWanted[0] = n; ! myDataWanted[1] = n; ! ! destroy_fftsetup(myFFTSetup); ! myFFTSetup = create_fftsetup(log2n, kFFTRadix2); ! ! if(wasDrawing) [self startDrawing]; ! } else { ! float from, to; ! ! from = [myFreqFrom floatValue]; ! to = [myFreqTo floatValue]; ! ! if(to - from <= 0) { ! myXScales[0] = 0; ! } else { ! myXScales[0] = 1 / (to - from); ! } ! ! myXScales[1] = myXScales[0]; ! ! myXOffsets[0] = from; ! myXOffsets[1] = from; ! ! if([myFreqIsLogCheckbox state] == NSOnState) { ! myXIsLog = YES; ! } else { ! myXIsLog = NO; ! } } + } + + -(IBAction) changedVoltScale: (id) sender + { + float from, to; ! if([myAmpUnitsMenu indexOfSelectedItem] == 0) { ! // menu item 0: mV ! from = [myAmpFrom floatValue] / 1000.0; ! to = [myAmpTo floatValue] / 1000.0; ! } else { ! // menu item 1: dBFS ! from = pow(10.0, [myAmpFrom floatValue] / 10.0); ! to = pow(10.0, [myAmpTo floatValue] / 10.0); } ! if(to - from <= 0) { ! myYScales[0] = 0; ! } else { ! myYScales[0] = to - from; ! } ! myYScales[1] = myYScales[0]; ! ! myYOffsets[0] = from; ! myYOffsets[1] = from; ! ! if([myAmpIsLogCheckbox state] == NSOnState) { ! myYIsLog = YES; ! } else { ! myYIsLog = NO; ! } } ! -(IBAction) changedAccumulationSettings: (id) sender { ! // FIXME implement accumulation! } // FIXME implement this function to set the controls appropriately from // default / saved values ! - (id) updateControls ! { ! int i; ! ! // Update the resolutions displayed on the resolution menu ! int oldselection = [myFreqResolutionMenu indexOfSelectedItem]; ! [myFreqResolutionMenu removeAllItems]; ! for(i=0; i<7; i++) { ! double res; ! int n; ! ! n = 1 << (i + kResolutionMenuOffset); ! res = mySampleRate / n; ! ! [myFreqResolutionMenu addItemWithTitle: ! [NSString stringWithFormat: @"%.2f Hz", res]]; ! } ! [myFreqResolutionMenu selectItemAtIndex: oldselection]; ! ! return self; ! } - (id)updateDisplay: (int) inTrace { float curX, curY; ! float xscale, yscale; ! int i, istart; ! float *real, *imag; ! #if defined(__APPLE__) ! DSPSplitComplex data; ! #endif ! ! // FIXME implement split-screen display for two channels? ! if(inTrace) return self; ! // first allocate some temporary space ! real = malloc(sizeof(float) * myDataStored[inTrace] / 2); ! imag = malloc(sizeof(float) * myDataStored[inTrace] / 2); ! // FIXME do windowing here ! #if defined(__APPLE__) ! // do fft using Apple's vecLib routines ! data.realp = real; ! data.imagp = imag; ! ! // split the data for the real transform routines ! ctoz((DSPComplex*)myDisplayData[inTrace], 2, ! &data, 1, myDataStored[inTrace] / 2); ! ! // run the transform ! fft_zrip(myFFTSetup, &data, 1, log2(myDataStored[inTrace]), FFT_FORWARD); + // imag[0] really contains real[n/2]. Set it to 0 so it doesn't get in + // the way in the loop below. + imag[0] = 0; + #else + #error FIXME FFT not implemented on this platform + #endif + + [myDisplayLock lock]; + [myTracePaths[inTrace] removeAllPoints]; + + // calculate the values by which frequency and magnitude must be + // scaled + xscale = mySampleRate * myXScales[inTrace] / myDataStored[inTrace]; + yscale = myGain * myYScales[inTrace]; + + // calculate the first value to be plotted + istart = floor(myXOffsets[inTrace]) - 1; + if (istart < 0) istart = 0; + + for(i = istart; i < myDataStored[inTrace] / 2; i++) { + double f = (i - istart) * xscale; + double m = myYOffsets[inTrace] + (sqrt(real[i] * real[i] + + imag[i] * imag[i]) * yscale); + curX = myXIsLog ? log10(f) : f; + curY = myYIsLog ? log10(m) : m; + [myTracePaths[inTrace] addPoint: NSMakePoint(curX, curY)]; + // if we've gone past the right-hand edge of the display, stop + if(curX > 1) { break; } + } + [myDisplayLock unlock]; + free(real); + free(imag); + return self; } *************** *** 107,108 **** --- 245,247 ---- @end + // vim:syn=objc:inde=: |
From: <sco...@li...> - 2003-01-20 14:27:55
|
Update of /cvsroot/scopeapp/scopeapp/English.lproj/ScopeWindow.nib In directory sc8-pr-cvs1:/tmp/cvs-serv21968/English.lproj/ScopeWindow.nib Modified Files: classes.nib info.nib objects.nib Log Message: Add SpectrumView to main window Index: classes.nib =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/English.lproj/ScopeWindow.nib/classes.nib,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** classes.nib 15 Jul 2002 06:10:56 -0000 1.3 --- classes.nib 20 Jan 2003 14:27:52 -0000 1.4 *************** *** 3,7 **** {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { - ACTIONS = {tabSwitch = id; }; CLASS = ScopeController; LANGUAGE = ObjC; --- 3,6 ---- *************** *** 10,13 **** --- 9,13 ---- myModeTabs = NSTabView; myScopeView = ScopeView; + mySpectrumView = SpectrumView; myXYPlotView = XYPlotView; }; *************** *** 44,48 **** SUPERCLASS = TraceView; }, ! {CLASS = SpectrumView; LANGUAGE = ObjC; SUPERCLASS = TraceView; }, { ACTIONS = {changedFreezeSetting = id; }; --- 44,72 ---- SUPERCLASS = TraceView; }, ! { ! ACTIONS = { ! changedAccumulationSettings = id; ! changedDisplaySettings = id; ! changedFreqScale = id; ! changedVoltScale = id; ! }; ! CLASS = SpectrumView; ! LANGUAGE = ObjC; ! OUTLETS = { ! myAccumulateCheckbox = NSButton; ! myAccumulateReset = NSButton; ! myAmpFrom = NSFormCell; ! myAmpIsLogCheckbox = NSButton; ! myAmpTo = NSFormCell; ! myAmpUnitsMenu = NSPopUpButton; ! myFreqFrom = NSFormCell; ! myFreqIsLogCheckbox = NSButton; ! myFreqResolutionMenu = NSPopUpButton; ! myFreqTo = NSFormCell; ! myShowScaleCheckbox = NSButton; ! myShowTimeCheckbox = NSButton; ! }; ! SUPERCLASS = TraceView; ! }, { ACTIONS = {changedFreezeSetting = id; }; Index: info.nib =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/English.lproj/ScopeWindow.nib/info.nib,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** info.nib 10 Dec 2002 15:06:02 -0000 1.5 --- info.nib 20 Jan 2003 14:27:52 -0000 1.6 *************** *** 4,8 **** <dict> <key>IBDocumentLocation</key> ! <string>31 357 392 248 0 0 1280 1002 </string> <key>IBFramework Version</key> <string>286.0</string> --- 4,8 ---- <dict> <key>IBDocumentLocation</key> ! <string>21 175 392 248 0 0 1280 1002 </string> <key>IBFramework Version</key> <string>286.0</string> *************** *** 10,14 **** <array> <integer>25</integer> - <integer>5</integer> </array> <key>IBSystem Version</key> --- 10,13 ---- Index: objects.nib =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/English.lproj/ScopeWindow.nib/objects.nib,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 Binary files /tmp/cvsJHDXkj and /tmp/cvsIO4Jms differ |
From: <sco...@li...> - 2003-01-20 14:18:34
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv10867/src Modified Files: ScopeView.m Log Message: Start & stop drawing only when necessary; do not start the drawing thread in UI functions if it wasn't running already Index: ScopeView.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/ScopeView.m,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** ScopeView.m 10 Jan 2003 10:49:27 -0000 1.16 --- ScopeView.m 20 Jan 2003 14:18:32 -0000 1.17 *************** *** 93,96 **** --- 93,98 ---- -(IBAction) changedXScale: (id) sender { + BOOL wasDrawing; + if(sender == myXScaleSlider) { *************** *** 99,109 **** } ! [self stopDrawing]; myXScales[0] = gTimeScales[[myXScaleSlider intValue]-1] * pow(2.0, [myXFineSlider doubleValue]); myXScales[1] = myXScales[0]; - [self stopDrawing]; - myDataWanted[0] = myXScales[0] * mySampleRate + 1; myDataWanted[1] = myXScales[1] * mySampleRate + 1; --- 101,111 ---- } ! wasDrawing = [self drawing]; ! if(wasDrawing) [self stopDrawing]; ! myXScales[0] = gTimeScales[[myXScaleSlider intValue]-1] * pow(2.0, [myXFineSlider doubleValue]); myXScales[1] = myXScales[0]; myDataWanted[0] = myXScales[0] * mySampleRate + 1; myDataWanted[1] = myXScales[1] * mySampleRate + 1; *************** *** 117,121 **** myDataCollected[1] = 0; ! [self startDrawing]; } --- 119,123 ---- myDataCollected[1] = 0; ! if(wasDrawing) [self startDrawing]; } *************** *** 156,160 **** -(IBAction) changedTriggerSettings: (id) sender { ! if(sender != self) { [self stopDrawing]; } myTriggerChannel = [myTriggerChRadio selectedRow]; --- 158,164 ---- -(IBAction) changedTriggerSettings: (id) sender { ! BOOL wasDrawing = [self drawing]; ! ! if(wasDrawing) [self stopDrawing]; myTriggerChannel = [myTriggerChRadio selectedRow]; *************** *** 176,181 **** myTriggerChannel == eTriggerSeparate) { - if(sender != self) { [self startDrawing]; } [myTriggerChRadio selectCellAtRow: eTriggerOff column: 1]; return; } --- 180,185 ---- myTriggerChannel == eTriggerSeparate) { [myTriggerChRadio selectCellAtRow: eTriggerOff column: 1]; + if(wasDrawing) [self startDrawing]; return; } *************** *** 202,206 **** } ! if(sender != self) { [self startDrawing]; } } --- 206,210 ---- } ! if(wasDrawing) [self startDrawing]; } *************** *** 355,357 **** @end ! // vim:syn=objc:nocin:si: --- 359,361 ---- @end ! // vim:syn=objc:inde=: |
From: <sco...@li...> - 2003-01-20 14:16:26
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv9757/src Modified Files: TraceView.h Log Message: Add a method that returns YES when this TraceView is drawing Index: TraceView.h =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/TraceView.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** TraceView.h 10 Jan 2003 10:49:27 -0000 1.6 --- TraceView.h 20 Jan 2003 14:16:22 -0000 1.7 *************** *** 63,66 **** --- 63,68 ---- -(id) stopDrawing; + -(BOOL) drawing; + -(id) freezeDrawing: (BOOL) freeze; *************** *** 78,80 **** @end ! // vim:syn=objc:nocin:si: --- 80,82 ---- @end ! // vim:syn=objc:inde=: |
From: <sco...@li...> - 2003-01-20 14:14:51
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv5309/src Modified Files: TraceView.m Log Message: Fix -clearData: to handle changed buffer sizes. Fix this: there should be a method in TraceView which resizes the buffer rather than subclasses modifying myDataWanted[] directly. Index: TraceView.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/TraceView.m,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** TraceView.m 10 Jan 2003 10:49:27 -0000 1.9 --- TraceView.m 20 Jan 2003 14:14:46 -0000 1.10 *************** *** 180,190 **** -(id) startDrawing { if(myDrawThreadShouldRun) return self; ! myDrawThreadShouldRun = YES; ! [myDrawThreadState lockWhenCondition: kDrawThreadStopped]; [myDrawThreadState unlockWithCondition: kDrawThreadRunning]; ! [NSThread detachNewThreadSelector: @selector(displayThread:) toTarget: self withObject: nil]; --- 180,195 ---- -(id) startDrawing { + // be certain the draw thread is not running if(myDrawThreadShouldRun) return self; + [myDrawThreadState lockWhenCondition: kDrawThreadStopped]; ! // get the buffers ready ! [self clearData]; ! // allow the thread to run ! myDrawThreadShouldRun = YES; [myDrawThreadState unlockWithCondition: kDrawThreadRunning]; ! ! // start the thread [NSThread detachNewThreadSelector: @selector(displayThread:) toTarget: self withObject: nil]; *************** *** 204,212 **** [myDrawThreadState unlockWithCondition: kDrawThreadStopped]; - [self clearData]; - return self; } -(id) freezeDrawing: (BOOL) freeze { --- 209,220 ---- [myDrawThreadState unlockWithCondition: kDrawThreadStopped]; return self; } + -(BOOL) drawing + { + return myDrawThreadShouldRun; + } + -(id) freezeDrawing: (BOOL) freeze { *************** *** 313,316 **** --- 321,330 ---- myDataCollected[1] = 0; + free(myCollectedData[0]); + free(myCollectedData[1]); + + myCollectedData[0] = malloc(sizeof(Sample) * myDataWanted[0]); + myCollectedData[1] = malloc(sizeof(Sample) * myDataWanted[1]); + [myDataLock unlockWithCondition: kWaitingForData]; *************** *** 368,370 **** @end ! // vim:syn=objc:nocin:si: --- 382,384 ---- @end ! // vim:syn=objc:inde=: |
From: <sco...@li...> - 2003-01-10 10:49:30
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv12628/src Modified Files: TraceView.h TraceView.m ScopeView.m XYPlotView.m Added Files: TracePath.h TracePath.m Log Message: Replace NSBezierCurve with TracePath to allow alternative methods of drawing. Currently draws one segment at a time, to work around Quartz performance issue. --- NEW FILE: TracePath.h --- // // TracePath.h // MacCRO X // // Created by Philip Derrin on Fri Jan 10 2003. // Copyright (c) 2003 Philip Derrin. // // This file is part of MacCRO X. // // MacCRO X 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. // // MacCRO X 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 MacCRO X; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // $Header: /cvsroot/scopeapp/scopeapp/src/TracePath.h,v 1.1 2003/01/10 10:49:27 narge Exp $ // #import <Foundation/Foundation.h> // TracePath is intended to replace NSBezierPath for drawing large numbers // of connected straight line segments. It is significantly faster than // NSBezierPath, at the expense of not using high-quality joins between // segments or drawing overlapping lines correctly (especially when // transparent). It does this by drawing line segments one at a time, rather // than all in one large path. @interface TracePath : NSObject { NSPoint* myPoints; // an array of NSPoints int myPointsAllocated; // the current size of the array int myPointsStored; // the number of points stored in the array } - init; - removeAllPoints; - addPoint: (NSPoint) newPoint; - stroke; @end // vim:syn=objc:nocin:si: --- NEW FILE: TracePath.m --- // // TracePath.m // MacCRO X // // Created by Philip Derrin on Fri Jan 10 2003. // Copyright (c) 2003 Philip Derrin. // // This file is part of MacCRO X. // // MacCRO X 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. // // MacCRO X 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 MacCRO X; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // $Header: /cvsroot/scopeapp/scopeapp/src/TracePath.m,v 1.1 2003/01/10 10:49:27 narge Exp $ // #import <AppKit/AppKit.h> #import "TracePath.h" @implementation TracePath - init { self = [super init]; if(self != nil) { myPointsStored = 0; myPointsAllocated = 4; myPoints = malloc(sizeof(NSPoint) * myPointsAllocated); } return self; } -(void) dealloc { free(myPoints); } - removeAllPoints { // don't bother to reallocate array; chances are it'll just fill up // to the same size next time it's used myPointsStored = 0; return self; } - addPoint: (NSPoint) newPoint { if(myPointsStored == myPointsAllocated) { myPointsAllocated *= 2; myPoints = realloc(myPoints, sizeof(NSPoint) * myPointsAllocated); } myPoints[myPointsStored] = newPoint; myPointsStored++; return self; } - stroke { int i; NSBezierPath* path = [[NSBezierPath alloc] init]; // FIXME: I tried using CoreGraphics directly to do this, but // it took "line width = 0" literally and drew nothing, rather // than drawing the thinnest possible line as Cocoa does. [path setLineWidth: 0.0]; [path setLineCapStyle: NSButtLineCapStyle]; for(i=0; i<myPointsStored-1; i++) { [path removeAllPoints]; [path moveToPoint: myPoints[i]]; [path lineToPoint: myPoints[i+1]]; [path stroke]; } [path release]; return self; } @end // vim:syn=objc:nocin:si: Index: TraceView.h =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/TraceView.h,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** TraceView.h 9 Jan 2003 04:44:59 -0000 1.5 --- TraceView.h 10 Jan 2003 10:49:27 -0000 1.6 *************** *** 27,30 **** --- 27,31 ---- #import <AppKit/AppKit.h> #import "InputSampler.h" + #import "TracePath.h" @interface TraceView : NSView <InputHandler> { *************** *** 50,54 **** // drawing thread stuff NSLock* myDisplayLock; // lock for access to the Bezier Paths ! NSBezierPath* myBezierPaths[2]; NSConditionLock* myDrawThreadState; // semaphore to start & stop the drawing thread BOOL myDisplayIsFrozen; --- 51,55 ---- // drawing thread stuff NSLock* myDisplayLock; // lock for access to the Bezier Paths ! TracePath* myTracePaths[2]; NSConditionLock* myDrawThreadState; // semaphore to start & stop the drawing thread BOOL myDisplayIsFrozen; Index: TraceView.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/TraceView.m,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** TraceView.m 9 Jan 2003 04:44:59 -0000 1.8 --- TraceView.m 10 Jan 2003 10:49:27 -0000 1.9 *************** *** 52,59 **** - (void)awakeFromNib { ! myBezierPaths[0] = [[NSBezierPath alloc] init]; ! [myBezierPaths[0] setLineWidth: 0.0]; ! myBezierPaths[1] = [[NSBezierPath alloc] init]; ! [myBezierPaths[1] setLineWidth: 0.0]; myDisplayIsFrozen = NO; --- 52,57 ---- - (void)awakeFromNib { ! myTracePaths[0] = [[TracePath alloc] init]; ! myTracePaths[1] = [[TracePath alloc] init]; myDisplayIsFrozen = NO; *************** *** 84,89 **** } ! [myBezierPaths[0] release]; ! [myBezierPaths[1] release]; [myDataLock release]; [myDisplayLock release]; --- 82,87 ---- } ! [myTracePaths[0] release]; ! [myTracePaths[1] release]; [myDataLock release]; [myDisplayLock release]; *************** *** 107,110 **** --- 105,110 ---- NSColor* foreColor; NSRect bounds = [self bounds]; + NSGraphicsContext* context; + BOOL wasAntiAliased; NSAffineTransform* scaling = *************** *** 130,146 **** #endif // draw trace A foreColor = [NSColor blackColor]; [foreColor set]; ! [myBezierPaths[0] stroke]; // draw trace B foreColor = [NSColor redColor]; [foreColor set]; ! [myBezierPaths[1] stroke]; #ifdef DEBUG_CODE time = -[startTime timeIntervalSinceNow]; ! fprintf(stderr, "%lf\n", time); #endif --- 130,154 ---- #endif + // turn off anti-aliasing if necessary + context = [NSGraphicsContext currentContext]; + wasAntiAliased = [context shouldAntialias]; + [context setShouldAntialias: YES]; // FIXME put this in prefs panel + // draw trace A foreColor = [NSColor blackColor]; [foreColor set]; ! [myTracePaths[0] stroke]; // draw trace B foreColor = [NSColor redColor]; [foreColor set]; ! [myTracePaths[1] stroke]; ! ! // restore antialiasing ! [context setShouldAntialias: wasAntiAliased]; #ifdef DEBUG_CODE time = -[startTime timeIntervalSinceNow]; ! fprintf(stderr, "%d %lf\n", myDataWanted[0], time); #endif Index: ScopeView.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/ScopeView.m,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ScopeView.m 9 Jan 2003 04:44:59 -0000 1.15 --- ScopeView.m 10 Jan 2003 10:49:27 -0000 1.16 *************** *** 254,258 **** { [myDisplayLock lock]; ! [myBezierPaths[1] removeAllPoints]; [myDisplayLock unlock]; return self; --- 254,258 ---- { [myDisplayLock lock]; ! [myTracePaths[1] removeAllPoints]; [myDisplayLock unlock]; return self; *************** *** 293,301 **** [myDisplayLock lock]; ! [myBezierPaths[inTrace] removeAllPoints]; curX = 0; curY = 0.5 + (curValue * theScaleFactor) + myYOffsets[inTrace]; ! [myBezierPaths[inTrace] moveToPoint: NSMakePoint(curX, curY)]; switch(traceMode) { --- 293,301 ---- [myDisplayLock lock]; ! [myTracePaths[inTrace] removeAllPoints]; curX = 0; curY = 0.5 + (curValue * theScaleFactor) + myYOffsets[inTrace]; ! [myTracePaths[inTrace] addPoint: NSMakePoint(curX, curY)]; switch(traceMode) { *************** *** 305,309 **** curValue = myDisplayData[0][curSample]; curY = 0.5 + (curValue * theScaleFactor) + myYOffsets[inTrace]; ! [myBezierPaths[inTrace] lineToPoint: NSMakePoint(curX, curY)]; } break; --- 305,309 ---- curValue = myDisplayData[0][curSample]; curY = 0.5 + (curValue * theScaleFactor) + myYOffsets[inTrace]; ! [myTracePaths[inTrace] addPoint: NSMakePoint(curX, curY)]; } break; *************** *** 313,317 **** curValue = myDisplayData[1][curSample]; curY = 0.5 + (curValue * theScaleFactor) + myYOffsets[inTrace]; ! [myBezierPaths[inTrace] lineToPoint: NSMakePoint(curX, curY)]; } break; --- 313,317 ---- curValue = myDisplayData[1][curSample]; curY = 0.5 + (curValue * theScaleFactor) + myYOffsets[inTrace]; ! [myTracePaths[inTrace] addPoint: NSMakePoint(curX, curY)]; } break; *************** *** 322,326 **** myDisplayData[1][curSample]); curY = 0.5 + (curValue * theScaleFactor) + myYOffsets[inTrace]; ! [myBezierPaths[inTrace] lineToPoint: NSMakePoint(curX, curY)]; } break; --- 322,326 ---- myDisplayData[1][curSample]); curY = 0.5 + (curValue * theScaleFactor) + myYOffsets[inTrace]; ! [myTracePaths[inTrace] addPoint: NSMakePoint(curX, curY)]; } break; *************** *** 331,335 **** myDisplayData[1][curSample]); curY = 0.5 + (curValue * theScaleFactor) + myYOffsets[inTrace]; ! [myBezierPaths[inTrace] lineToPoint: NSMakePoint(curX, curY)]; } break; --- 331,335 ---- myDisplayData[1][curSample]); curY = 0.5 + (curValue * theScaleFactor) + myYOffsets[inTrace]; ! [myTracePaths[inTrace] addPoint: NSMakePoint(curX, curY)]; } break; Index: XYPlotView.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/XYPlotView.m,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** XYPlotView.m 9 Jan 2003 04:44:59 -0000 1.8 --- XYPlotView.m 10 Jan 2003 10:49:27 -0000 1.9 *************** *** 91,95 **** { [myDisplayLock lock]; ! [myBezierPaths[1] removeAllPoints]; [myDisplayLock unlock]; return self; --- 91,95 ---- { [myDisplayLock lock]; ! [myTracePaths[1] removeAllPoints]; [myDisplayLock unlock]; return self; *************** *** 100,108 **** [myDisplayLock lock]; ! [myBezierPaths[0] removeAllPoints]; curX = 0.5 + (myDisplayData[0][0] * theScaleFactor[0]); curY = 0.5 + (myDisplayData[1][0] * theScaleFactor[0]); ! [myBezierPaths[0] moveToPoint: NSMakePoint(curX, curY)]; for(curSample = 0; --- 100,108 ---- [myDisplayLock lock]; ! [myTracePaths[0] removeAllPoints]; curX = 0.5 + (myDisplayData[0][0] * theScaleFactor[0]); curY = 0.5 + (myDisplayData[1][0] * theScaleFactor[0]); ! [myTracePaths[0] addPoint: NSMakePoint(curX, curY)]; for(curSample = 0; *************** *** 112,116 **** curX = 0.5 + (myDisplayData[0][curSample] * theScaleFactor[0]); curY = 0.5 + (myDisplayData[1][curSample] * theScaleFactor[0]); ! [myBezierPaths[0] lineToPoint: NSMakePoint(curX, curY)]; } --- 112,116 ---- curX = 0.5 + (myDisplayData[0][curSample] * theScaleFactor[0]); curY = 0.5 + (myDisplayData[1][curSample] * theScaleFactor[0]); ! [myTracePaths[0] addPoint: NSMakePoint(curX, curY)]; } |
From: <sco...@li...> - 2003-01-10 10:49:30
|
Update of /cvsroot/scopeapp/scopeapp/MacCRO X.pbproj In directory sc8-pr-cvs1:/tmp/cvs-serv12628/MacCRO X.pbproj Modified Files: project.pbxproj Log Message: Replace NSBezierCurve with TracePath to allow alternative methods of drawing. Currently draws one segment at a time, to work around Quartz performance issue. |
From: <sco...@li...> - 2003-01-09 04:45:02
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv18940 Modified Files: TraceView.h TraceView.m XYPlotView.m ScopeView.m Log Message: Improve handling of changes to display settings; fix possible deadlock in draw thread Index: TraceView.h =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/TraceView.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** TraceView.h 5 Dec 2002 15:08:10 -0000 1.4 --- TraceView.h 9 Jan 2003 04:44:59 -0000 1.5 *************** *** 53,56 **** --- 53,57 ---- NSConditionLock* myDrawThreadState; // semaphore to start & stop the drawing thread BOOL myDisplayIsFrozen; + BOOL myDrawThreadShouldRun; } *************** *** 71,74 **** --- 72,77 ---- atPosition: (unsigned long[2]) outTriggerPos didTrigger: (BOOL[2]) outTriggered; + + - (id) clearData; @end Index: TraceView.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/TraceView.m,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** TraceView.m 5 Dec 2002 15:08:10 -0000 1.7 --- TraceView.m 9 Jan 2003 04:44:59 -0000 1.8 *************** *** 43,48 **** @interface TraceView (TraceViewInternal) - - (id)clearData; - - (id)cycleBuffers; --- 43,46 ---- *************** *** 80,84 **** { [self stopDrawing]; ! if(mySampler != nil) { [mySampler release]; } [myBezierPaths[0] release]; --- 78,86 ---- { [self stopDrawing]; ! if(mySampler != nil) { ! [mySampler stopSampling]; ! [mySampler setOwner:nil]; ! [mySampler release]; ! } [myBezierPaths[0] release]; *************** *** 150,153 **** --- 152,156 ---- { if(mySampler != nil) { + [mySampler stopSampling]; [mySampler setOwner: nil]; [mySampler release]; *************** *** 157,160 **** --- 160,170 ---- [mySampler setOwner: self]; + mySampleRate = [mySampler sampleRate]; + myChannelCount = [mySampler channelCount]; + + [self updateControls]; + + [mySampler startSampling]; + return [self startDrawing]; } *************** *** 162,168 **** -(id) startDrawing { ! [mySampler startSampling]; ! ! if(![myDrawThreadState tryLockWhenCondition: kDrawThreadStopped]) { return self; } [myDrawThreadState unlockWithCondition: kDrawThreadRunning]; --- 172,180 ---- -(id) startDrawing { ! if(myDrawThreadShouldRun) return self; ! ! myDrawThreadShouldRun = YES; ! ! [myDrawThreadState lockWhenCondition: kDrawThreadStopped]; [myDrawThreadState unlockWithCondition: kDrawThreadRunning]; *************** *** 178,186 **** // tell the thread to stop [myDrawThreadState lock]; [myDrawThreadState unlockWithCondition: kDrawThreadStopped]; ! // stop the sampler ! [mySampler stopSampling]; return self; --- 190,200 ---- // tell the thread to stop + myDrawThreadShouldRun = NO; + + // wait for it to really stop [myDrawThreadState lock]; [myDrawThreadState unlockWithCondition: kDrawThreadStopped]; ! [self clearData]; return self; *************** *** 191,203 **** myDisplayIsFrozen = freeze; ! if(freeze) ! { ! [mySampler stopSampling]; [self clearData]; } ! else ! { ! [mySampler startSampling]; ! } return self; } --- 205,212 ---- myDisplayIsFrozen = freeze; ! if(!freeze) { [self clearData]; } ! return self; } *************** *** 218,222 **** unsigned long theTriggerPoint[2] = { 0, 0 }; int curChannel; ! if(channelCount != myChannelCount || sampleRate != mySampleRate) { --- 227,235 ---- unsigned long theTriggerPoint[2] = { 0, 0 }; int curChannel; ! ! if(myDisplayIsFrozen || [myDrawThreadState condition] == kDrawThreadStopped) { ! return self; ! } ! if(channelCount != myChannelCount || sampleRate != mySampleRate) { *************** *** 285,288 **** --- 298,313 ---- } + - (id)clearData + { + [myDataLock lock]; + + myDataCollected[0] = 0; + myDataCollected[1] = 0; + + [myDataLock unlockWithCondition: kWaitingForData]; + + return self; + } + @end *************** *** 312,332 **** } - - (id)clearData - { - [myDataLock lock]; - - myDataCollected[0] = 0; - myDataCollected[1] = 0; - - [myDataLock unlockWithCondition: kWaitingForData]; - - return self; - } - - (void)displayThread: (id) unused { NSAutoreleasePool *pool; pool = [[NSAutoreleasePool alloc] init]; ! while([myDrawThreadState tryLockWhenCondition: kDrawThreadRunning]) { [myDataLock lockWhenCondition: kHaveRequiredData]; --- 337,348 ---- } - (void)displayThread: (id) unused { NSAutoreleasePool *pool; pool = [[NSAutoreleasePool alloc] init]; ! ! [myDrawThreadState lockWhenCondition: kDrawThreadRunning]; ! ! while(myDrawThreadShouldRun) { [myDataLock lockWhenCondition: kHaveRequiredData]; *************** *** 337,343 **** [self display]; - - [myDrawThreadState unlock]; } } --- 353,359 ---- [self display]; } + + [myDrawThreadState unlock]; } Index: XYPlotView.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/XYPlotView.m,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** XYPlotView.m 29 Oct 2002 05:50:11 -0000 1.7 --- XYPlotView.m 9 Jan 2003 04:44:59 -0000 1.8 *************** *** 64,69 **** } - [self stopDrawing]; - myXScale = gVoltScales[[myXScaleSlider intValue]-1] * pow(2.0, [myXFineSlider doubleValue]); --- 64,67 ---- *************** *** 71,76 **** myYScale = gVoltScales[[myYScaleSlider intValue]-1] * pow(2.0, [myYFineSlider doubleValue]); - - [self startDrawing]; } --- 69,72 ---- Index: ScopeView.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/ScopeView.m,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** ScopeView.m 5 Dec 2002 15:08:10 -0000 1.14 --- ScopeView.m 9 Jan 2003 04:44:59 -0000 1.15 *************** *** 104,107 **** --- 104,109 ---- myXScales[1] = myXScales[0]; + [self stopDrawing]; + myDataWanted[0] = myXScales[0] * mySampleRate + 1; myDataWanted[1] = myXScales[1] * mySampleRate + 1; *************** *** 111,114 **** --- 113,120 ---- myCollectedData[0] = malloc(myDataWanted[0] * sizeof(Sample)); myCollectedData[1] = malloc(myDataWanted[1] * sizeof(Sample)); + + myDataCollected[0] = 0; + myDataCollected[1] = 0; + [self startDrawing]; } *************** *** 122,127 **** } - [self stopDrawing]; - myYScales[0] = gVoltScales[[myYAScaleSlider intValue]-1] * pow(2.0, [myYAFineSlider doubleValue]); --- 128,131 ---- *************** *** 131,136 **** [self changedTriggerSettings: self]; } - - [self startDrawing]; } --- 135,138 ---- *************** *** 143,148 **** } - if(sender != self) { [self stopDrawing]; } - myYScales[1] = gVoltScales[[myYBScaleSlider intValue]-1] * pow(2.0, [myYBFineSlider doubleValue]); --- 145,148 ---- *************** *** 152,157 **** [self changedTriggerSettings: self]; } - - if(sender != self) { [self startDrawing]; } } --- 152,155 ---- *************** *** 238,242 **** // FIXME implement this function to set the controls appropriately from // default / saved values ! -(id) updateControls { return self; } - (id)updateDisplay: (int) inTrace --- 236,243 ---- // FIXME implement this function to set the controls appropriately from // default / saved values ! -(id) updateControls ! { ! return self; ! } - (id)updateDisplay: (int) inTrace |
From: <sco...@li...> - 2002-12-10 15:08:19
|
Update of /cvsroot/scopeapp/scopeapp/MacCRO X.pbproj In directory sc8-pr-cvs1:/tmp/cvs-serv23103/MacCRO X.pbproj Modified Files: project.pbxproj Log Message: Add LicenseWindow.nib and Credits.rtf |
From: <sco...@li...> - 2002-12-10 15:07:43
|
Update of /cvsroot/scopeapp/scopeapp/English.lproj In directory sc8-pr-cvs1:/tmp/cvs-serv22720 Modified Files: Localizable.strings Log Message: Removed Quicktime error messages Index: Localizable.strings =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/English.lproj/Localizable.strings,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Localizable.strings 31 Jul 2002 11:24:00 -0000 1.3 --- Localizable.strings 10 Dec 2002 15:07:40 -0000 1.4 *************** *** 5,18 **** - /** QuicktimeSampler.m **/ - - "Error" = "Error"; - "Another application may be using QuickTime Capture, or it may not be installed." = "Another application may be using QuickTime Capture, or it may not be installed."; - "An unknown error occurred while initialising QuickTime Capture." = "An unknown error occurred while initialising QuickTime Capture."; - "Another application may be recording sound, or this computer may not have sound input hardware." = "Another application may be recording sound, or this computer may not have sound input hardware."; - "Could not record sound, because the channel usage could not be set." = "Could not record sound, because the channel usage could not be set."; - "An unknown error occurred while initialising Quicktime Capture." = "An unknown error occurred while initialising Quicktime Capture."; - "An unknown error occurred while trying to record sound." = "An unknown error occurred while trying to record sound."; - /** ScopeAppDelegate.m **/ --- 5,8 ---- |
From: <sco...@li...> - 2002-12-10 15:06:05
|
Update of /cvsroot/scopeapp/scopeapp/English.lproj/ScopeWindow.nib In directory sc8-pr-cvs1:/tmp/cvs-serv21844/ScopeWindow.nib Modified Files: info.nib objects.nib Log Message: Use jaguar's metal interface; fix missing action link on scope offsets menu Index: info.nib =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/English.lproj/ScopeWindow.nib/info.nib,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** info.nib 15 Jul 2002 06:10:56 -0000 1.4 --- info.nib 10 Dec 2002 15:06:02 -0000 1.5 *************** *** 1,17 **** <?xml version="1.0" encoding="UTF-8"?> ! <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> ! <plist version="0.9"> <dict> <key>IBDocumentLocation</key> ! <string>15 128 392 248 0 0 1280 1002 </string> <key>IBFramework Version</key> ! <string>263.2</string> <key>IBOpenObjects</key> <array> - <integer>5</integer> <integer>25</integer> </array> <key>IBSystem Version</key> ! <string>5S60</string> </dict> </plist> --- 1,17 ---- <?xml version="1.0" encoding="UTF-8"?> ! <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> ! <plist version="1.0"> <dict> <key>IBDocumentLocation</key> ! <string>31 357 392 248 0 0 1280 1002 </string> <key>IBFramework Version</key> ! <string>286.0</string> <key>IBOpenObjects</key> <array> <integer>25</integer> + <integer>5</integer> </array> <key>IBSystem Version</key> ! <string>6F21</string> </dict> </plist> Index: objects.nib =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/English.lproj/ScopeWindow.nib/objects.nib,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 Binary files /tmp/cvsAfkDPd and /tmp/cvswFYeMj differ |
From: <sco...@li...> - 2002-12-10 15:04:48
|
Update of /cvsroot/scopeapp/scopeapp/English.lproj/MainMenu.nib In directory sc8-pr-cvs1:/tmp/cvs-serv21647/MainMenu.nib Modified Files: classes.nib info.nib objects.nib Log Message: Add "show license" item Index: classes.nib =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/English.lproj/MainMenu.nib/classes.nib,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** classes.nib 18 Jun 2002 05:07:06 -0000 1.1.1.1 --- classes.nib 10 Dec 2002 15:04:45 -0000 1.2 *************** *** 1,5 **** { IBClasses = ( ! {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = ScopeAppDelegate; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); --- 1,10 ---- { IBClasses = ( ! { ! ACTIONS = {orderFrontLicensePanel = id; }; ! CLASS = FirstResponder; ! LANGUAGE = ObjC; ! SUPERCLASS = NSObject; ! }, {CLASS = ScopeAppDelegate; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); Index: info.nib =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/English.lproj/MainMenu.nib/info.nib,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** info.nib 22 Jul 2002 09:15:11 -0000 1.2 --- info.nib 10 Dec 2002 15:04:45 -0000 1.3 *************** *** 1,15 **** <?xml version="1.0" encoding="UTF-8"?> ! <!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> ! <plist version="0.9"> <dict> <key>IBDocumentLocation</key> ! <string>28 220 408 261 0 0 1280 1002 </string> <key>IBEditorPositions</key> <dict> <key>29</key> ! <string>28 486 285 44 0 0 1280 1002 </string> </dict> <key>IBFramework Version</key> ! <string>263.2</string> <key>IBOpenObjects</key> <array> --- 1,15 ---- <?xml version="1.0" encoding="UTF-8"?> ! <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> ! <plist version="1.0"> <dict> <key>IBDocumentLocation</key> ! <string>86 211 408 261 0 0 1280 1002 </string> <key>IBEditorPositions</key> <dict> <key>29</key> ! <string>36 588 285 44 0 0 1280 1002 </string> </dict> <key>IBFramework Version</key> ! <string>286.0</string> <key>IBOpenObjects</key> <array> *************** *** 17,21 **** </array> <key>IBSystem Version</key> ! <string>5S66</string> </dict> </plist> --- 17,21 ---- </array> <key>IBSystem Version</key> ! <string>6F21</string> </dict> </plist> Index: objects.nib =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/English.lproj/MainMenu.nib/objects.nib,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 Binary files /tmp/cvsOT0sax and /tmp/cvs8eK12T differ |
From: <sco...@li...> - 2002-12-10 15:04:19
|
Update of /cvsroot/scopeapp/scopeapp/English.lproj/LicenseWindow.nib In directory sc8-pr-cvs1:/tmp/cvs-serv21254/LicenseWindow.nib Added Files: classes.nib info.nib objects.nib Log Message: Add window to display License.rtf --- NEW FILE: classes.nib --- { IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {orderFrontLicensePanel = id; }; CLASS = ScopeAppDelegate; LANGUAGE = ObjC; OUTLETS = {myLicenseText = NSText; myLicenseWindow = NSWindow; }; SUPERCLASS = NSObject; } ); IBVersion = 1; } --- NEW FILE: info.nib --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>IBDocumentLocation</key> <string>48 534 356 240 0 0 1280 1002 </string> <key>IBFramework Version</key> <string>286.0</string> <key>IBOpenObjects</key> <array> <integer>5</integer> </array> <key>IBSystem Version</key> <string>6F21</string> </dict> </plist> --- NEW FILE: objects.nib --- (This appears to be a binary file; contents omitted.) |
From: <sco...@li...> - 2002-12-10 15:03:21
|
Update of /cvsroot/scopeapp/scopeapp/English.lproj/LicenseWindow.nib In directory sc8-pr-cvs1:/tmp/cvs-serv20896/LicenseWindow.nib Log Message: Directory /cvsroot/scopeapp/scopeapp/English.lproj/LicenseWindow.nib added to the repository |
From: <sco...@li...> - 2002-12-10 15:02:44
|
Update of /cvsroot/scopeapp/scopeapp/English.lproj In directory sc8-pr-cvs1:/tmp/cvs-serv20382 Added Files: Credits.rtf Log Message: Add Credits file (displayed by standard about panel) --- NEW FILE: Credits.rtf --- {\rtf1\mac\ansicpg10000\cocoartf102 {\fonttbl\f0\fnil\fcharset77 LucidaGrande-Bold;\f1\fnil\fcharset77 LucidaGrande;\f2\fmodern\fcharset77 Courier; } {\colortbl;\red255\green255\blue255;} \pard\tx1440\tx2880\tx4320\tx5760\tx7200\qc \f0\b\fs22 \cf0 Programming\ \f1\b0 Philip Derrin\ \ \f0\b GNUStep Port\ \f1\b0 Rafal Kolanski\ \ \pard\tx1120\tx2240\tx3360\tx4480\tx5600\tx6720\tx7840\tx8960\tx10080\tx11200\tx12320\tx13440\tx14560\tx15680\tx16800\tx17920\tx19040\tx20160\tx21280\tx22400\tx23520\tx24640\tx25760\tx26880\tx28000\tx29120\tx30240\tx31360\tx32480\tx33600\tx34720\tx35840\tx36960\tx38080\tx39200\tx40320\tx41440\tx42560\tx43680\tx44800\tx45920\tx47040\tx48160\tx49280\tx50400\tx51520\tx52640\tx53760\tx54880\tx56000\tx57120\tx58240\tx59360\tx60480\tx61600\tx62720\tx63840\tx64960\tx66080\tx67200\tx68320\tx69440\tx70560\tx71680\tx72800\tx73920\tx75040\tx76160\tx77280\tx78400\tx79520\tx80640\tx81760\tx82880\tx84000\tx85120\tx86240\tx87360\tx88480\tx89600\tx90720\tx91840\tx92960\tx94080\tx95200\tx96320\tx97440\tx98560\tx99680\tx100800\tx101920\tx103040\tx104160\tx105280\tx106400\tx107520\tx108640\tx109760\tx110880\tx112000 \pard\tx1120\tx2240\tx3360\tx4480\tx5600\tx6720\tx7840\tx8960\tx10080\tx11200\tx12320\tx13440\tx14560\tx15680\tx16800\tx17920\tx19040\tx20160\tx21280\tx22400\tx23520\tx24640\tx25760\tx26880\tx28000\tx29120\tx30240\tx31360\tx32480\tx33600\tx34720\tx35840\tx36960\tx38080\tx39200\tx40320\tx41440\tx42560\tx43680\tx44800\tx45920\tx47040\tx48160\tx49280\tx50400\tx51520\tx52640\tx53760\tx54880\tx56000\tx57120\tx58240\tx59360\tx60480\tx61600\tx62720\tx63840\tx64960\tx66080\tx67200\tx68320\tx69440\tx70560\tx71680\tx72800\tx73920\tx75040\tx76160\tx77280\tx78400\tx79520\tx80640\tx81760\tx82880\tx84000\tx85120\tx86240\tx87360\tx88480\tx89600\tx90720\tx91840\tx92960\tx94080\tx95200\tx96320\tx97440\tx98560\tx99680\tx100800\tx101920\tx103040\tx104160\tx105280\tx106400\tx107520\tx108640\tx109760\tx110880\tx112000 \ql\qnatural \cf0 MacCRO X is licensed under the terms of the GNU General Public License. For further information, please select "Show License" from the Help menu.\ \ \pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural \f2\fs24 \cf0 $Header: /cvsroot/scopeapp/scopeapp/English.lproj/Credits.rtf,v 1.1 2002/12/10 15:02:41 narge Exp $\ } |
From: <sco...@li...> - 2002-12-10 15:01:16
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv19179 Modified Files: ScopeAppDelegate.h ScopeAppDelegate.m Log Message: Add code to show license window. Index: ScopeAppDelegate.h =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/ScopeAppDelegate.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ScopeAppDelegate.h 29 Oct 2002 06:10:43 -0000 1.10 --- ScopeAppDelegate.h 10 Dec 2002 15:01:11 -0000 1.11 *************** *** 30,33 **** --- 30,35 ---- @interface ScopeAppDelegate : NSObject { + IBOutlet NSWindow* myLicenseWindow; + IBOutlet NSTextView* myLicenseText; } *************** *** 39,42 **** --- 41,46 ---- - (void) applicationDidFinishLaunching: (NSNotification *)not; + + - (IBAction) orderFrontLicensePanel: (id) sender; @end Index: ScopeAppDelegate.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/ScopeAppDelegate.m,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** ScopeAppDelegate.m 5 Dec 2002 15:09:47 -0000 1.16 --- ScopeAppDelegate.m 10 Dec 2002 15:01:11 -0000 1.17 *************** *** 50,53 **** --- 50,55 ---- //[controller autorelease]; } + + myLicenseWindow = nil; } *************** *** 61,64 **** --- 63,88 ---- { return YES; // FIXME change after adding support for reading from files ? + } + + - (IBAction) orderFrontLicensePanel: (id) sender + { + if(myLicenseWindow == nil) + { + [NSBundle loadNibNamed:@"LicenseWindow" owner: self]; + [myLicenseText readRTFDFromFile: + [[NSBundle mainBundle] + pathForResource: @"License" + ofType: @"rtf"]]; + } + + [myLicenseWindow makeKeyAndOrderFront: self]; + } + + - (void) dealloc + { + if(myLicenseWindow != nil) + { + [myLicenseWindow release]; + } } |
From: <sco...@li...> - 2002-12-09 23:03:15
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv12976 Modified Files: Tag: scopeapp-gnustep GNUmakefile Log Message: Core audio and quicktime headers removed. Index: GNUmakefile =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/GNUmakefile,v retrieving revision 1.6 retrieving revision 1.6.2.1 diff -C2 -d -r1.6 -r1.6.2.1 *** GNUmakefile 22 Jul 2002 12:41:57 -0000 1.6 --- GNUmakefile 9 Dec 2002 23:03:10 -0000 1.6.2.1 *************** *** 58,64 **** # scopeapp_HEADERS = \ - CoreAudioSampler.h \ InputSampler.h \ - QuicktimeSampler.h \ ScopeAppDelegate.h \ ScopeAppGlobals.h \ --- 58,62 ---- |
From: <sco...@li...> - 2002-12-09 23:01:56
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv12545 Removed Files: Tag: scopeapp-gnustep QuicktimeSampler.h QuicktimeSampler.m Log Message: Quicktime not needed on gnustep. --- QuicktimeSampler.h DELETED --- --- QuicktimeSampler.m DELETED --- |
From: <sco...@li...> - 2002-12-09 23:00:39
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv12035 Removed Files: Tag: scopeapp-gnustep CoreAudioSampler.h CoreAudioSampler.m Log Message: Core audio sampler not needed by gnustep. --- CoreAudioSampler.h DELETED --- --- CoreAudioSampler.m DELETED --- |
From: <sco...@li...> - 2002-12-08 07:31:16
|
Update of /cvsroot/scopeapp/scopeapp/src In directory sc8-pr-cvs1:/tmp/cvs-serv15377 Modified Files: Tag: scopeapp-gnustep ScopeController.m Log Message: Added copyright, removed debugging messages. Index: ScopeController.m =================================================================== RCS file: /cvsroot/scopeapp/scopeapp/src/ScopeController.m,v retrieving revision 1.8.2.2 retrieving revision 1.8.2.3 diff -C2 -d -r1.8.2.2 -r1.8.2.3 *** ScopeController.m 6 Dec 2002 15:06:32 -0000 1.8.2.2 --- ScopeController.m 8 Dec 2002 07:31:13 -0000 1.8.2.3 *************** *** 5,8 **** --- 5,9 ---- // Created by narge on Tue Nov 27 2001. // Copyright (c) 2001, 2002 Philip Derrin. + // Copyright (c) 2002 Rafal Kolanski. // // This file is part of MacCRO X. *************** *** 231,237 **** // FIXME the tabs still look screwed up until a selection is made // by the user. probably a gnustep problem. - - rect = [[myScopeTab view] frame]; - NSLog(@"myScopeTab frame: %@", NSStringFromRect(rect)); return self; --- 232,235 ---- |