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.