ftp.nice.ch/pub/next/developer/resources/palettesfor2.xx/CubicSlider.1.4.s.tar.gz#/CubicSlider/CubicSliderDemo/CubicSliderCell.h

This is CubicSliderCell.h in view mode; [Download] [Up]

/*
 *
 *
 * 	CubicSlider 1.2, subclassed by Raymond Lutz mai 1993, 
 * 	class description in CubicSliderCell.rtf
 *
 *
 */

#import <appkit/SliderCell.h>
#import <nib/InterfaceBuilder.h>


@interface CubicSliderCell:SliderCell
{
    	DPSTimedEntry teNum;     
    	double newExtremumValue;
	id cover;	//   a dumb button to catch events
	id minMaxView;  // to group the 3 elements below
	id form; 	// where to type in new min or max
        id knobButton;	// to take the current slider value
        id quadButton;	// to quadruple the range
	id upTarget;
	SEL upAction;
	int extremumType; 	// 1 -> max      0 -> min
	
	double absoluteMaxValue;
	double absoluteMinValue;
	BOOL editing;
	BOOL previousClickOnTheKnob;
	BOOL absoluteMinValueSet;
	BOOL absoluteMaxValueSet;
	BOOL minIsEditable;
	BOOL maxIsEditable;
	BOOL mouseIsUp,cubic;
	double A;		// the polynomial scaling factor
	double yFlat;	// y coordinate of the flat region center. 
    			// After mouseUp, made to be the current slider value.
	double xFlat;	// x coordinate of the flat region center.
    			// After mouseUp, the knob position is that value.
			// Remember: here the slider value != knob position ...
}

- init;

- setMinValue: (double) aDouble;
- setMaxValue: (double) aDouble;
- setCubic: (BOOL) aFlag;
- setFloatValue:(float) aFloat;
- setIntValue:(int) anInt;
- setDoubleValue:(double) aDouble;
- setUpTarget:anObject action:(SEL)anAction;
- setUpTarget:anObject;
- setUpAction:(SEL)anAction;

// the following 3 bypass the cubic polynomial
- (int) linearIntValue;
- (float) linearFloatValue;
- (double) linearDoubleValue;

// those pass through the cubic polynomial (if isCubic)
- (int) intValue;
- (float) floatValue;
- (double) doubleValue;

- (BOOL) mouseIsUp;
- (BOOL) isCubic;
- (BOOL) minIsEditable;
- (BOOL) maxIsEditable;
- (BOOL) absoluteMinValueSet;
- (BOOL) absoluteMaxValueSet;
- (double) absoluteMinValue;
- (double) absoluteMaxValue;
- upTarget;
- (SEL)upAction;

- setMinEditable:(BOOL) aFlag;
- setMaxEditable:(BOOL) aFlag;
- setAbsoluteMinValue:(double) aDouble;
- setAbsoluteMaxValue:(double) aDouble;
- clearAbsoluteMinValue;
- clearAbsoluteMaxValue;

// *** private methods ***

// popping part
- (BOOL)trackMouse:(NXEvent *)theEvent inRect:(const NXRect *)cellFrame ofView:controlView;
- newCover;
- popFormAndButtons;
- takeCurrentSliderValueForNew;
- takeFormValueForNew;
- quadRange;
- popCellAndMakeChangeSoon;
- popCellAndMakeChangeNow;
- stopTimedEntry;
- notifyTargets;

// cubic part
- (BOOL)startTrackingAt:(const NXPoint *)startPoint inView:controlView;
- stopTracking:(NXPoint *)lastPoint at:(NXPoint *)endPoint inView:controlView mouseIsUp: (BOOL)flag;
- calcNewFct;
- flipCubicFlag;

// *** IB methods ***
- (const char*)inspectorName;
- read:(NXTypedStream*)stream;
- write:(NXTypedStream*)stream;
@end

@interface Object(SliderCellTarget)
- takeCubicSliderStatusFrom: sender;
@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.