home *** CD-ROM | disk | FTP | other *** search
- //
- // MiscProgressBar.h -- a simple view class for displaying progress bar
- // Written and (c) 1993 by James Heiser. (jheiser@adobe.com)
- // 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.
- //
-
-
- // Added two methoods -setTicsVisible: (BOOL) and -isTicsVisible:
- // Allows the user to select whether ticmarks are Visible or not.
- // James Heiser Sat Sep 25 13:59:15 GMT-0800 1993
- //
- // Added two methoods -setTicsOverBar:(BOOL) and -isTicsOverBar
- // Allows the user to select whether ticmarks are drawn above or
- // below progress bar.
- // Don Yacktman Mon Oct 18 22:58:52 MDT 1993
- //
- // Added two methoods -setTickColor:(NXColor) and -tickColor
- // Allows user to set color of ticmarks.
- // Don Yacktman Mon Oct 18 22:58:52 MDT 1993
-
- #import "MiscProgressBar.h"
-
- #define MISC_DEFALUT_TICKS 24 // number of ticks to show + 1
- // (so 24 divisions between 0-1 ratio)
-
- #define MISC_DEFAULT_EMPHASIS 3 // every nth tick is longer...
-
-
- @implementation MiscProgressBar
-
- - initFrame:(const NXRect *)frameRect
- {
- [super initFrame:frameRect];
- isTicsVisible = YES;
- isTicsOverBar = NO;
- numTicks = MISC_DEFALUT_TICKS;
- emphasis = MISC_DEFAULT_EMPHASIS;
- tc = NXConvertGrayToColor(NX_DKGRAY);
- return self;
- }
-
- - (NXColor)tickColor { return tc; }
-
- - setTickColor:(NXColor)color
- {
- tc = color;
- return self;
- }
-
- - renderTicks
- {
- if (isTicsVisible == YES) {
- int linecount;
- NXSetColor(tc);
- for (linecount = 1; linecount <= numTicks; ++linecount) {
- int xcoord = (bounds.size.width / numTicks) * linecount;
- PSnewpath();
- PSmoveto(xcoord, 0);
- if (linecount % emphasis)
- PSlineto(xcoord, (int)(bounds.size.height / 4));
- else PSlineto(xcoord, (int)(bounds.size.height / 2));
- PSstroke();
- }
- }
- return self;
- }
-
- - renderBar
- {
- if (isTicsOverBar) {
- [super renderBar];
- [self renderTicks];
- } else {
- [self renderTicks];
- [super renderBar];
- }
- return self;
- }
-
- - setTicsVisible:(BOOL)aBool
- {
- isTicsVisible = aBool;
- [self display];
- return self;
- }
-
- - (BOOL)isTicsVisible
- {
- return isTicsVisible;
- }
-
- - setTicsOverBar:(BOOL)aBool
- {
- isTicsOverBar = aBool;
- [self display];
- return self;
- }
-
- - (BOOL)isTicsOverBar
- {
- return isTicsOverBar;
- }
-
- - setNumTicks:(int)anInt
- {
- numTicks = MAX(anInt + 1, 1);
- [self display];
- return self;
- }
-
- - (int)numTicks
- {
- return (numTicks - 1);
- }
-
- - setEmphasis:(int)anInt
- {
- emphasis = MAX(anInt, 1);
- [self display];
- return self;
- }
-
- - (int)emphasis
- {
- return emphasis;
- }
-
-
- - read:(NXTypedStream*)stream
- {
- [super read:stream];
- NXReadTypes(stream, "ccii", &isTicsVisible, &isTicsOverBar,
- &numTicks, &emphasis);
- tc = NXReadColor(stream);
- return self;
- }
-
- - write:(NXTypedStream*)stream
- {
- [super write:stream];
- NXWriteTypes(stream, "ccii", &isTicsVisible, &isTicsOverBar,
- &numTicks, &emphasis);
- NXWriteColor(stream, tc);
- return self;
- }
-
- - (const char *)getInspectorClassName
- {
- return "MiscProgressBarInspector";
- }
-
-
- @end
-