This is ClockView.h in view mode; [Download] [Up]
/* * (a) (C) 1990 by Adobe Systems Incorporated. All rights reserved. * * (b) If this Sample Code is distributed as part of the Display PostScript * System Software Development Kit from Adobe Systems Incorporated, * then this copy is designated as Development Software and its use is * subject to the terms of the License Agreement attached to such Kit. * * (c) If this Sample Code is distributed independently, then the following * terms apply: * * (d) This file may be freely copied and redistributed as long as: * 1) Parts (a), (d), (e) and (f) continue to be included in the file, * 2) If the file has been modified in any way, a notice of such * modification is conspicuously indicated. * * (e) PostScript, Display PostScript, and Adobe are registered trademarks of * Adobe Systems Incorporated. * * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO * CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED * AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED. * ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY * OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO * WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY) * WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY * DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT * OF THIRD PARTY RIGHTS. */ /* * ClockView.h * * This class handles the drawing of the clock and the moving of the alarm. * The clock face is drawn into a bitmap and then composited into the buffered * window before drawing the hands. The hands are stored in the server * as user paths. Each hand also has a graphic state associated with it. Before * hand is drawn, its graphic state is installed and then rotated to its current * angle and then the user path is rendered. * * Most of the literals below are for drawing the clock face and the hands. * * Version: 2.0 * Author: Ken Fromm * History: * 03-07-91 Added this comment. */ #import <appkit/View.h> #import <appkit/timer.h> #import <math.h> #define CLRVIEW 0.01 #define CLRCIRC NX_BLACK #define SIZENUMS 0.75 #define SIZEDASHES 0.90 #define WIDMIN 3.5 #define CLRMIN NX_WHITE #define LENMIN (19.0/20.0) #define DEGMIN (-6.0) #define WIDHOUR 6.0 #define CLRHOUR NX_WHITE #define LENHOUR (14.0/15.0) #define DEGHOUR (-30.0) #define CLRHANDS NX_WHITE #define CLRSECOND NX_LTGRAY #define CLRSHADOW 0.20 #define CLRALARMTOP 0.8 #define CLRALARMBOT NX_DKGRAY #define LNWIDSECOND 1.0 #define LNWIDHANDS 3.0 #define OFFSETHANDSX 1.0 #define OFFSETHANDSY (-1.0) #define OFFSETSHADX 2.0 #define OFFSETSHADY (-2.0) #define TICKSEC (-360.0/60.0) #define TICKMIN (TICKSEC/60.0) #define TICKHOUR (TICKMIN/12.0) #define MAX_PTS 300 #define MAX_OPS 150 #define MAX_PTS_HIT 12 #define MAX_OPS_HIT 6 #define HITSETTING 8 #define RADIAN (M_PI/180) #define ALARM 0 #define HOUR 1 #define MINUTE 2 #define SHADOW 3 #define SECOND 4 /* * This structure is used to hold the hit detection user path. * The infill operator is used which takes a user path and checks * to see whether any portion of it is covered by the * current path. The user path passed in is a rectangle around * the mouse down location. The current path is the alarm hand. */ typedef struct _UPath { float * pts; int num_pts; char *ops; int num_ops; } UPath; /* * The BOOL arguments specify whether to use gstates or not and * whether to use the userpaths stored in the server or send them * with each drawing. */ @interface ClockView:View { id animatorId, imageId, displayTime; BOOL gstatesOn, upathsServer, trace; int gstateHour, gstateMin, gstateSec, gstateShad, upathHour, upathMin, upathSec, upathAlarmTop, upathAlarmBot; float angleHour, angleMin, angleSec, angleAlarm, totalTime, numIterations; UPath hitPoint; } - initFrame:(const NXRect *) frameRect; - initializeHitPoint; - free; - setDisplayTime:anObject; - toggleGstate:sender; - toggleUpath:sender; - drawFace; - defineUPaths; - defineGStates; - tick:sender; - sizeTo:(NXCoord)width :(NXCoord)height; - setAlarm:(NXEvent *)event; - setHitPoint:(const NXPoint *)p; - (BOOL) isHit:(const NXPoint *) p; - mouseDown:(NXEvent *)event; - setStateAndDraw; - drawSelf:(NXRect *)r :(int) count; @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.