home *** CD-ROM | disk | FTP | other *** search
- //
- // MiscColor.h -- a wrapper class around the NXColor functions
- // Written by Don Yacktman Copyright (c) 1994 by 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.
- //
-
- #import <appkit/appkit.h>
-
- @interface MiscColor:Object <NXTransport>
- {
- NXColor theColor;
- id delegate;
- }
-
- + (BOOL)canInitFromPasteboard:(Pasteboard *)pasteboard;
- + newFromPasteBoard:(Pasteboard *)pasteboard;
- + newColor:(NXColor)color;
-
- - init;
- - initColor:(NXColor)color; // designated initializer!
- - initFromPasteBoard:(Pasteboard *)pasteboard;
- - initColorFromPixel:(NXPoint *)location;
-
- // putting the color on a pasteboard
- // Note that we can put both an NXColor and/or our whole object
- // on the pasteboard, so that a subclass that is drag/dropped can
- // retain it's full richness, while still being compatabile with
- // NEXTSTEP drag and drop into other applications and NEXTSTEP objects.
- - writeToPasteBoard:(Pasteboard *)pasteboard;
- - readFromPasteBoard:(Pasteboard *)pasteboard;
- - setFromPasteBoard:(Pasteboard *)pasteboard;
-
- // change a color component: should be in range 0.0 to 1.0
- - setRedComponent:(float)red;
- - setGreenComponent:(float)green;
- - setBlueComponent:(float)blue;
- - setCyanComponent:(float)cyan;
- - setMagentaComponent:(float)magenta;
- - setYellowComponent:(float)yellow;
- - setBlackComponent:(float)black;
- - setHueComponent:(float)hue;
- - setSaturationComponent:(float)saturation;
- - setBrightnessComponent:(float)brightness;
- - setGrayComponent:(float)gray;
- - setAlphaComponent:(float)alpha; // NX_NOALPHA to remove alpha
-
- // change/access color directly
- - setColor:(NXColor)color;
- - setColorFromObject:object;
- - setColorFromPixel:(NXPoint *)location;
- - (NXColor)color; // our displayable color (passed thru filter)
- - (NXColor)actualColor; // the color before filtering
- - (NXColor)filterColor:(NXColor)input; // subclasses can filter color for printing
-
- - display; // sends color to PS interpreter via -setColor below.
- - (BOOL)setColor; // send color to postscript interpreter, NO returned if not set
-
- // getting values for a particular colorspace, will return 0.0 to 1.0
- // (or, on alpha methods, NO_ALPHA if no alpha)
- - getGray:(float *)gray;
- - getGray:(float *)gray alpha:(float *)alpha;
- - getRed:(float *)red green:(float *)green blue:(float *)blue;
- - getRed:(float *)red green:(float *)green blue:(float *)blue
- alpha:(float *)alpha;
- - getHue:(float *)hue saturation:(float *)saturation
- brightness:(float *)brightness;
- - getHue:(float *)hue saturation:(float *)saturation
- brightness:(float *)brightness alpha:(float *)alpha;
- - getCyan:(float *)cyan magenta:(float *)magenta yellow:(float *)yellow
- black:(float *)black;
- - getCyan:(float *)cyan magenta:(float *)magenta yellow:(float *)yellow
- black:(float *)black alpha:(float *)alpha;
-
- // keep args in 0.0 to 1.0 range, or NX_NOALPHA for alpha value
- - setGray:(float)gray;
- - setGray:(float)gray alpha:(float)alpha;
- - setRed:(float)red green:(float)green blue:(float)blue;
- - setRed:(float)red green:(float)green blue:(float)blue alpha:(float)alpha;
- - setHue:(float)hue saturation:(float)saturation
- brightness:(float)brightness;
- - setHue:(float)hue saturation:(float)saturation
- brightness:(float)brightness alpha:(float)alpha;
- - setCyan:(float)cyan magenta:(float)magenta yellow:(float)yellow
- black:(float)black;
- - setCyan:(float)cyan magenta:(float)magenta yellow:(float)yellow
- black:(float)black alpha:(float)alpha;
-
- - (BOOL)isEqualColor:anObject; // checks only -color method's return
- - (BOOL)isEqualToColor:(NXColor)color; // if same color...
- - (BOOL)isEqual:anObject; // must be of same class
-
- - read:(NXTypedStream *)stream;
- - write:(NXTypedStream *)stream;
-
- // Interface Builder support
- - (const char *)getInspectorClassName;
- - (NXImage *)getIBImage;
-
- // getting individual color components
- - (float)redComponent;
- - (float)greenComponent;
- - (float)blueComponent;
- - (float)cyanComponent;
- - (float)magentaComponent;
- - (float)yellowComponent;
- - (float)blackComponent;
- - (float)hueComponent;
- - (float)saturationComponent;
- - (float)brightnessComponent;
- - (float)grayComponent;
- - (float)alphaComponent;
-
- // dealing with persistently named colors
- + findColorNamed:(const char *)aName inList:(const char *)aListName;
- - (const char *)colorName; // different than the object's name
- - (const char *)colorListName; // name of originating color list, if there is one
-
- - delegate;
- - setDelegate:anObject;
-
- // delegate methods: (allows delegate to change the color, so that, say
- // you intercept color setting in your app to handle color separations...)
- //- (NXColor)willSendColorToPS:(NXColor)color shouldPrint:(BOOL *)printOK;
- // returns color you should set, set printOK to NO if you don't want any
- // color sent to the PS interpreter.
- //- didSendColorToPS:(NXColor)color;
-
- @end
-
- // The method prototypes allow us to compile without warnings
- @interface MiscColor(delegate)
- - (NXColor)willSendColorToPS:(NXColor)color shouldPrint:(BOOL *)printOK;
- - didSendColorToPS:(NXColor)color;
- @end
-