home *** CD-ROM | disk | FTP | other *** search
- /***** SliderCellCover.m -- SliderCellCover object implementation
- NeXTstep Measurement Kit
- by Alex Meyer <ameyer@phoenix.Princeton.EDU>
- for computer science senior thesis
- 18 April 1992 -- created
- 20 April 1992 -- role of RSliderCell absorbed
- 23 April 1992 -- this file changed from RSlider.m to RSliderCell.m
- utilizes late connect approach & LINKERNAME
- 24 April 1992 -- renamed from RSliderCell.m to SliderCellCover.m
- uses object name link to RSliderVars
- *****/
-
- #import <sys/time.h>
- #import <appkit/Application.h>
- #import "RSliderVars.h"
- #import "SliderCellCover.h"
-
- #define VARSNAME ("SliderVars")
-
- #define MICRO (1000000.0)
- #define DOUBLETIME(stv) ((double) (((unsigned long) (stv).tv_sec) \
- + (((unsigned long) (stv).tv_usec) / MICRO)))
-
- @implementation SliderCellCover
-
- - makeVarsRect:(const NXRect *)rect
- {
- id vars;
-
- if (!(rect))
- rect = &trackRect;
- vars = [RSliderVars alloc];
- [vars initString:contents
- tag:tag
- rect:rect];
- NXNameObject(VARSNAME,vars,self);
- return (vars);
- }
-
-
- - (BOOL)trackMouse:(NXEvent *)theEvent
- inRect:(const NXRect *)cellFrame
- ofView:controlView
- {
- id vars;
- BOOL res;
- int index;
- double time0,time1;
- struct timeval start,finish;
- struct timezone zone;
-
- gettimeofday(&start,&zone);
- res = [super trackMouse:theEvent
- inRect:cellFrame
- ofView:controlView];
- gettimeofday(&finish,&zone);
- time0 = DOUBLETIME(start);
- time1 = DOUBLETIME(finish);
- if (!(contents)) /* propagate name of Slider */
- contents = NXGetObjectName(controlView);
- vars = NXGetNamedObject(VARSNAME,self);
- if (!(vars))
- vars = [self makeVarsRect:cellFrame];
- [vars incHits];
- [vars timeFrom:time0
- to:time1];
- index = (value - minValue) / (maxValue - minValue) * SLIDERHIST;
- if (index >= SLIDERHIST)
- index = SLIDERHIST - 1;
- [vars incHist:index];
- return (res);
- }
-
- @end
-
- #undef DOUBLETIME
- #undef MICRO
- #undef VARSNAME
-