#! /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
%

%
% iconbrowser 9.2 88/01/18
%
%  FontBrowser:
%  Show icons & font characters using a menu for "scrolling".
%
/setcurfont {
    /IsText? 2 index /Icon ne store
    exch findfont exch scalefont /curfont exch store
} def

/Icon 12 setcurfont
/curchar 0 def

/showchar { % char  =>  -
    ( ) dup 0 4 -1 roll put show
} def

/fillwithicons {
    gsave
    curfont setfont
%    clippath pathbbox 680 div exch 680 div exch scale pop pop
    0 1 9 {	% y loop
	0 1 9 {	% x loop
	    dup 64 mul 2 index 64 mul moveto
	    IsText? { 12 18 rmoveto } if
	    1 index 10 mul add curchar add showchar
	} for
	pop
    } for
    grestore
} def

/main {
    /painticons {/paintclient win send} def
    /win framebuffer /new DefaultWindow send def
    {
	/IconImage /soccer def
	/FrameLabel (Icon & Font Browser) def
	/PaintClient {1 fillcanvas 0 strokecanvas fillwithicons} def
	/ClientMenu  [
	    (Chars: 0-99)	{/curchar 0 store painticons}
	    (Chars: 100-199)	{/curchar 100 store painticons}
	    (Chars: 200-399)	{/curchar 200 store painticons}
	    (Icons)		{/Icon 12 setcurfont painticons}
	    (Times)		{/Times-Bold 36 setcurfont painticons}
	    (Helvetica)		{/Helvetica-Bold 36 setcurfont painticons}
	    (Courier)		{/Courier-Bold 36 setcurfont painticons}
	    (Symbol)		{/Symbol 36 setcurfont painticons}
	] /new DefaultMenu send def
    } win send				% Install my stuff.
    /reshapefromuser win send	% Shape it.
%    150 75 680 680 /reshape win send	% Shape it.
% If the display is smaller than the window, this seems to be needed:
%    0 0 680 680 /reshape win send
%    150 75 /move win send
    /map win send  % Map the window. (Damage causes PaintClient to be called)
} def

main
