%
% This file is a product of Sun Microsystems, Inc. and is provided for
% unrestricted use provided that this legend is included on all tape
% media and as a part of the software program in whole or part.	 Users
% may copy or modify this file without charge, but are not authorized to
% license or distribute it to anyone else except as part of a product
% or program developed by the user.
% 
% THIS FILE IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
% WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
% PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
% 
% This file is provided with no support and without any obligation on the
% part of Sun Microsystems, Inc. to assist in its use, correction,
% modification or enhancement.
% 
% SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
% INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY THIS FILE
% OR ANY PART THEREOF.
% 
% In no event will Sun Microsystems, Inc. be liable for any lost revenue
% or profits or other special, indirect and consequential damages, even
% if Sun has been advised of the possibility of such damages.
% 
% Sun Microsystems, Inc.
% 2550 Garcia Avenue
% Mountain View, California  94043
%
%
%	@(#)spiral 23.2 90/06/19
%
% Copyright (c) 1989 by Sun Microsystems, Inc.
%

/SpiralCanvas ClassCanvas [/repaintproc] classbegin

    /minsize { % - => w h
	/minsize super send
	80 max exch
	80 max exch
    } def

    /preferredsize { % - => w h
	/preferredsize super send
	256 max exch
	256 max exch
    } def

    /PaintCanvas {
	FillColor /FillCanvas self send
	/repaintproc {
	    currentprocess /ProcessName (Lines Repaint) put
	    clippath emptypath not {
		pathbbox pop pop translate
		clippath pathbbox
		2 div exch 2 div exch
		1 index 1 index translate
		89 rotate
		min dup scale .85 .85 scale
		StrokeColor setcolor
		0 setlinewidth
		0 1 25 div 1 {
		    newpath 0 .9 moveto 0 0 1 90 -90 arc 0 0 .9 -90 90 arcn
		    ColorDisplay? {
			1 1 sethsbcolor
			gsave fill grestore
			StrokeColor setcolor
			stroke
		    } { pop fill } ifelse
		    .88 .88 scale
		    22.5 rotate
		} for
		pop pop
	    } if
	    /repaintproc null def
	} { newpath clipcanvas } refork
    } def

classend def

/SpiralFrame /defaultclass ClassBaseFrame send []
classbegin

    /Footer false def

    /open { % bool => -
	% only flip the parent of the client if the open state
	% is really changing.
	dup /opened? self send ne {
	    dup {
		null /setclient /Icon /sendsubframe self send
		/setclient self send pop
		/validate self send
	    } {
		null /setclient self send
		/setclient /Icon /sendsubframe self send pop
		/validate /Icon /sendsubframe self send
	    } ifelse
	} if
	/open super send
    } def

classend def

/win [SpiralCanvas] [] framebuffer /new SpiralFrame send def

null /seticonlabel win send
(Spiral) /setlabel win send

/place win send
/activate win send
/map win send

newprocessgroup
currentfile closefile
