#! /usr/NeWS/bin/psh
%
% 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
%
%
%	lines 9.2 88/01/18
%
%  Drag a window with a bunch of lines.  The icon uses the
%  same drawing proc.
%
/linesperside 20 def
/fillcanvaswithlines { % linesperside => -
    gsave
    1 fillcanvas
    0 setgray
    clippath pathbbox
    scale pop pop
    0 exch
    0 1 3 -1 roll div 1 {
        ColorDisplay? {dup 1 1 sethsbcolor} if
	0 0 moveto 1 1 index lineto stroke
	0 0 moveto 1 lineto stroke
	1 add dup 10 eq {pop 0 pause} if % pause every N sets of lines
    } for
    pop
    grestore
} def
/main {
    /linesperside 10 def
    /setlinesfrommenu {
	/linesperside currentkey cvi 2 div store
	/paintclient win send
    } def
    
    /win framebuffer /new DefaultWindow send def	% Create a window
    /reshapefromuser win send				% Shape it.
    {							% Install my stuff.
	/FrameLabel (Lines) def
	/PaintClient {linesperside fillcanvaswithlines} def
	/PaintIcon {10 fillcanvaswithlines 0 strokecanvas} def
	/ClientMenu
	    [ (4) (8) (10) (20) (100) (250) (500) (1000) (2000) ]
	    [ {setlinesfrommenu} ] /new DefaultMenu send def
    } win send

    /map win send  % Map the window. (Damage causes PaintClient to be called)
} def

main
