home *** CD-ROM | disk | FTP | other *** search
- /*
- ColorPicker.c
-
- Copyright 1991 by Brown University. All rights reserved.
-
- THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESSED OR IMPLIED
- WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
- Usage:
-
- get AskColor( <prompt>, <rgb color> )
-
- Replace prompt with some explanitory message and <rgb color> with a
- string of three items, "red,green,blue". A string of three items is
- returned if the user chooses a color. Otherwise, empty is returned.
-
- */
-
-
- #include "hyperxcmd.h"
- #include <SetUpA4.h>
- #include <stdlib.h>
-
-
-
-
- RGBColor * StringToRGBColor( StringPtr string, RGBColor * color );
-
- RGBColor * StringToRGBColor( StringPtr string, RGBColor * color )
- {
- char * digits;
-
- digits = PtoCstr( string );
-
- color->red = (int) strtol( digits, &digits, 10 );
- color->green = (int) strtol( digits, &digits, 10 );
- color->blue = (int) strtol( digits, &digits, 10 );
-
- CtoPstr( (char *) string );
-
- } /* StringToRGBColor */
-
-
-
-
- StringPtr ZeroHandleToString( Handle handle, StringPtr string );
-
- StringPtr ZeroHandleToString( Handle handle, StringPtr string )
- {
- memset( string, 0, sizeof( 255 ) );
- strncpy( (char *) string, *handle, sizeof( Str255 ) - 1 );
- CtoPstr( (char *) string );
-
- } /* ZeroHandleToString */
-
-
-
- pascal void main( XCmdPtr paramPtr )
- {
- Point where;
- Str255 prompt;
- Str255 color;
- RGBColor oldcolor;
- RGBColor newcolor;
- char result[64];
-
- RememberA0();
- SetUpA4();
-
- /* Parse Paramater List */
-
- switch ( paramPtr->paramCount )
- {
- case 1:
- switch ( **(paramPtr->params[0]) )
- {
- case '?':
- paramPtr->returnValue = PasToZero( paramPtr, (StringPtr) "\pAskColor( \"prompt\", \"red green blue\" )" );
- break;
-
- case '!':
- paramPtr->returnValue = PasToZero( paramPtr, (StringPtr) "\pAskColor 1.0b2,Copyright 1991 by Brown University. All rights reserved." );
- break;
-
- case '@':
- paramPtr->returnValue = PasToZero( paramPtr, (StringPtr) "\pAndrew Gilmartin\rComputing & Information Services\rBrown University\rProvidence, RI 02912\rUSA\r(401) 863-7CIS\randrew_gilmartin@brown.edu (internet)" );
- break;
-
- default:
- /* SET_ERROR( ERROR_PARAMATER_COUNT );
- */ break;
- }
- break;
-
- case 2:
- ZeroHandleToString( paramPtr->params[0], prompt );
-
- ZeroHandleToString( paramPtr->params[1], color );
- StringToRGBColor( color, &oldcolor );
-
- where.h = where.v = 0;
-
- if ( GetColor( where, &prompt, &oldcolor, &newcolor ) )
- {
- sprintf
- ( result
- , "%lu %lu %lu"
- , (unsigned long) newcolor.red
- , (unsigned long) newcolor.green
- , (unsigned long) newcolor.blue );
-
- CtoPstr( result );
-
- paramPtr->returnValue = PasToZero( paramPtr, (StringPtr) result );
- }
- break;
-
- default:
- /* SET_ERROR( ERROR_PARAMATER_COUNT );
- */ break;
- }
-
-
- /* if ( ERROR() != ERROR_NONE )
- ErrorMessage( paramPtr );
- */
- RestoreA4();
-
- /* Bye, Bye! */
-
- } /* main */
-