ftp.nice.ch/pub/next/developer/resources/classes/misckit/MiscKit.1.10.0.s.gnutar.gz#/MiscKit/Palettes/MiscCircularSlider/MiscCircularSlider.subproj/MiscCircularSliderCell.h

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

//
//	MiscCircularSliderCell.h -- a SliderCell for circular sliders
//		   Written by Vince DeMarco and Don Yacktman
//            Copyright (c) 1994 by Vince DeMarco, Don Yacktman.
//				Version 1.0  All rights reserved.
//		This notice may not be removed from this source code.
//
//	This object is included in the MiscKit by permission from the author
//	and its use is governed by the MiscKit license, found in the file
//	"LICENSE.rtf" in the MiscKit distribution.  Please refer to that file
//	for a list of all applicable permissions and restrictions.
//	

// This was created by modifying Vince's CircularSliderCell class and
// merging it with Don's RotationSliderCell class.  Here's the info
// from the original files.
/*
 *    Filename:	CircularSliderCell.h 
 *    Created :	Sun Oct 18 16:56:22 1992 
 *    Author  :	Vince DeMarco
 *		<vince@whatnxt.cuc.ab.ca>
 *    LastEditDate was "Sun Oct 25 13:47:43 1992"
 */
//	RotationSliderCell.h -- written by Don Yacktman
//	Copyright 1993 by Don Yacktman.  All rights reserved.

//	Modified by Laurent Daudelin on Wed Sep 7 12:09:55 1994
//	to add support for lower and upper stop values, and
//	to support for knob width adjustment for the MISC_SHUTTLEWHEEL_STYLE slider.

//  Modified by Carl Lindberg   Wed Apr 19 02:01:15 EDT 1995
//  Added support for border types
//  Added support for background color
//  Fixed boundary-check bug, fixed bug when view is taller than it is wide
//  Reorganized the code to something approaching sanity
//  Redid drawing of knobImage, no more glitchiness on larger sliders/knob widths.
//    (Unless you get really, really big :-) )

#import <appkit/SliderCell.h>

typedef enum _MiscCircularSliderStyle {
		MISC_PIECHART_STYLE = 0,	// this is obvious:  a pie chart.
		MISC_SLIDER_STYLE,			// this looks NeXT-like (ring shape)
		MISC_DIAL_STYLE,			// raised circle with a radial line
		MISC_SHUTTLEWHEEL_STYLE		// raised circle with a dimple
} MiscCircularSliderStyle;

// If you change the values of these, make sure to change the tags
// of the corresponding cells in the inspector nib...  -Carl
typedef enum _MiscCircularSliderBorder {
		MISC_CSNONE = 0,
		MISC_CSLINE,
		MISC_CSBUTTON,
		MISC_CSBEZEL,
		MISC_CSGROOVE
} MiscCircularSliderBorder;

@interface MiscCircularSliderCell:SliderCell
{
	MiscCircularSliderStyle style; // which rendering style is being used
    BOOL jumpToMousePoint; // Does the position indicator jump to the
					// location of the first mouse down event or does it
					// move in relation to the mouse dragging?
    BOOL hidden; 	// Is the Cell Hidden?
    float radius;	// The smallest radius of the Cell
	float sliderPathWidth;	// width of ring if MISC_SLIDER_STYLE
	float upperStopValue;	// maximum value angle allowed while tracking the mouse
	float lowerStopValue;	// minimum value angle allowed while tracking the mouse
	BOOL useBoundaries;	// do we use the upperStopValue and lowerStopValue?
    NXPoint center; // The center point of the Cell--x,y coordinates
	MiscCircularSliderBorder borderType;
	NXColor backgroundColor;
	float startAngle;	// Angle at which the minValue is
	BOOL isClockwise;	// Do values increase as slider moved clockwise?
@private
	BOOL imFlipped;	// we need to keep track of our flippedness...
	float _offsetAng;
	NXRect _lastFrame;
	NXRect _lastViewFrame;
	id disabledBezelImage, enabledBezelImage, knobImage; // caches
}

- init;
- setSliderPathWidth:(float)val;
- (float)sliderPathWidth;
- setSliderStyle:(MiscCircularSliderStyle)aBOOL;
- (MiscCircularSliderStyle)sliderStyle;
//- renderAll;
- setJumpToMousePoint:(BOOL)aBOOL;
- (BOOL)jumpToMousePoint;
- setHidden:(BOOL)flag;
- (BOOL)hidden;
- setUpperStopValue:(float)aValue;
- (float)upperStopValue;
- setLowerStopValue:(float)aValue;
- (float)lowerStopValue;
- setUseBoundaries:(BOOL)flag;
- (BOOL)useBoundaries;
- (float)startAngle;
- setStartAngle:(float)ang;
- (BOOL)isClockwise;
- setClockwise:(BOOL)clockwise;
- read:(NXTypedStream *)stream;
- write:(NXTypedStream *)stream;

- setBackgroundColor:(NXColor)aColor;
- (NXColor)backgroundColor;
- setBorderType:(int)type;
- (int)borderType;
//- drawSelf:(const NXRect *)cellFrame inView:controlView;
//- drawInside:(const NXRect *)cellFrame inView:controlView;

@end

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