rhess@cimshop.UUCP (Richard Hess) (11/02/88)
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
# litePicWin.ps
# This archive created: Tue Nov 1 08:56:21 1988
export PATH; PATH=/bin:$PATH
echo shar: extracting "'litePicWin.ps'" '(19052 characters)'
if test -f 'litePicWin.ps'
then
echo shar: will not over-write existing file "'litePicWin.ps'"
else
sed 's/^%//' << \SHAR_EOF > 'litePicWin.ps'
%% [ litePicWin.ps ]
%% modified: rhess
%% -----------------------------------------------------------------------------
%%% $Header: pw.ps,v 1.3 88/06/14 17:17:52 bvs Locked $
%% -----------------------------------------------------------------------------
%% This file contains the classes used by the class browser.
%% The classes included are:
%% PicItem -- an Item similar in concept to the NeWS1.1 textcanvas
%% PicWindow -- a LiteWindow that holds PicItems
%% PicScroll -- a SimpleScrollbar with a few modifications (auto scrolling)
%%
%% This code was mostly written in August 1987 but was revised to work with
%% NeWS 1.1 in May 1988. Feel free to use it as you will.
%%
%% Bruce V. Schwartz
%% Sun Microsystems
%% bvs@sun.com
%% -----------------------------------------------------------------------------
%%% This file contains classes: PicWindow PicScroll PicItem
%% -----------------------------------------------------------------------------
%
%systemdict begin
% systemdict /Item known not { (NeWS/liteitem.ps) run } if
% systemdict /SimpleScrollbar known not { (NeWS/liteitem.ps) run } if
%end
%
%/PicWindow LiteWindow
%dictbegin
% /PicArray [] def
%dictend
%classbegin
% /FrameTextColor 1 1 1 rgbcolor def
% /FrameFillColor 0 0 0 rgbcolor def
%
% /BorderWidth 4 def
% /BorderLeft BorderWidth def
% /BorderBottom BorderWidth def
% /BorderRight BorderWidth def
% /BorderTop 16 def
%
% /reshapefromuser {} def
% /PaintFocus {
% gsave FrameCanvas setcanvas
% KeyFocus? {KeyFocusColor} {1 1 1 rgbcolor} ifelse setcolor
% 1 1 BorderWidth 2 sub FrameHeight
% BorderTop sub 1 sub rectpath fill
% 1 1 FrameWidth 2 sub
% BorderWidth 2 sub rectpath fill
% FrameWidth BorderWidth sub 1 add 1
% BorderWidth 2 sub FrameHeight
% BorderTop sub 1 sub rectpath fill
% grestore
% } def
% /PaintFrameLabel {
% gsave
% FrameTextColor setcolor FrameFont setfont
% BorderWidth 2 mul ControlSize add FrameHeight 12 sub moveto
% FrameLabel show
% % Temp: clear client here! FIX SOON!!!
% ClientCanvas setcanvas 1 fillcanvas
% grestore
% } def
% /CreateFrameInterests { % - => - (Create frame control interests)
% FrameInterests begin
% /FrameCloseEvent
% PointButton /flipiconic
% DownTransition CloseControl eventmgrinterest def
% /FrameTopEvent
% PointButton {Iconic?{flipiconic}{totop}ifelse}
% DownTransition FrameCanvas eventmgrinterest def
% /FrameMoveEvent
% AdjustButton /slide
% DownTransition FrameCanvas eventmgrinterest def
% /FrameMenuEvent
% MenuButton {Iconic? not { /showat FrameMenu send } if }
% DownTransition FrameCanvas eventmgrinterest def
% /FrameDamageEvent
% /Damaged /FixFrame
% null FrameCanvas eventmgrinterest def
% /FrameEnterEvent
% /EnterEvent /EnterFrame
% [0 2] FrameCanvas eventmgrinterest def
% /FrameExitEvent
% /ExitEvent /ExitFrame
% [0 2] FrameCanvas eventmgrinterest def
% /FrameDoItEvent
% /DoItEvent {gsave /ClientData get cvx exec grestore}
% /Window null eventmgrinterest def
% end
% } def
% /CreateFrameMenu { % - => - (Create frame menu)
% % Note: Store menu in class to share menus, especially if retained.
% /FrameMenu [
% (Move) {/slide ThisWindow send}
% (Move Constrained)
% {getfbclick pop pop /slideconstrained ThisWindow send}
% (Top) {/totop ThisWindow send}
% (Bottom) {/tobottom ThisWindow send}
% (Zap) {/destroy ThisWindow send}
% (Redisplay) {/paint ThisWindow send}
% (Close) {/flipiconic ThisWindow send}
% ] /new DefaultMenu send def
% } def
% /CreateIconMenu { % - => - (Create icon menu)
% % Note: Store menu in class to share menus, especially if retained.
% /IconMenu [
% (Move) {/slide ThisWindow send}
% (Top) {/totop ThisWindow send}
% (Bottom) {/tobottom ThisWindow send}
% (Zap) {/destroy ThisWindow send}
% (Redisplay) {/paint ThisWindow send}
% (Open) {/flipiconic ThisWindow send}
% ] /new DefaultMenu send def
% } def
% /CreateFrameControls { % - => - (Create frame control canvases/items)
% gsave
% FrameCanvas setcanvas
% /CloseControl FrameCanvas newcanvas dup begin
% /Mapped true def
% /EventsConsumed /AllEvents def
% end def
% 0 0 ControlSize dup BorderTop le exch BorderLeft le or
% {ControlSize ControlSize} {BorderTop BorderTop} ifelse
% rectpath CloseControl reshapecanvas
% grestore
% } def
% /MoveFrameControls { % - => - ([Re]set frame control shapes)
% gsave
% CloseControl setcanvas
% BorderWidth
% FrameHeight BorderTop sub BorderTop ControlSize sub 2 div add
% movecanvas
% grestore
% } def
% /PaintFrameControls { % - => - (Paint frame control areas)
% gsave % because of the set canvas
% 1 setgray
% CloseControl setcanvas 0 1 moveto /cycle showicon
% grestore
% } def
%
% /PaintIcon
% {
% 1 fillcanvas
% 0 strokecanvas
% 0 setgray
% IconWidth 2 div 1 sub IconHeight 4 div 5 sub 5 Sunlogo
% } def
% /PaintClient
% {
% %% (paint client %\n) [ PicArray ] dbgprintf
% %% PicArray { ( %\n) [ 3 2 roll ] dbgprintf } forall
% PicArray paintitems
% } def
% /setpicarray
% {
% /PicArray exch def
% } def
% /destroy
% {
% %% (destroying arrays\n) [] dbgprintf
% PicArray { /destroy exch send } forall
% %% (destroying window\n) [] dbgprintf
% /destroy super send
% %% (destroyed window\n) [] dbgprintf
% } def
%classend
%def
%
%/PicScroll SimpleScrollbar
%dictbegin
% /Owner null def
% /MouseInItem? false def
% /ScrollMonitor null def
% /ScrollProcess null def
% /ScrollDelay 1 60 div 20 div def % 1/10 second
% /LastX null def
% /LastY null def
%dictend
%classbegin
% /new {
% /new super send
% begin
% /ScrollMonitor createmonitor def
% currentdict
% end
% } def
% /setowner {
% /Owner exch def
% } def
%
% /ClientDown { % - => -
% CurrentEvent begin XLocation YLocation end
% /LastY exch def
% /LastX exch def
% SetScrollMotion
% /MouseInItem? true def
% HiliteItem
% DoScroll
% ScrollProcess null ne
% { ScrollMonitor { ScrollProcess killprocess } monitor }
% if
% /ScrollProcess { InteractiveScroll } fork def
% } def
%
% /InteractiveScroll {
% {
% ScrollDelay sleep
% ScrollMonitor { EventInItem? { DoScroll } if } monitor
% } loop
% } def
%
% /ClientUp { % - => -
% ScrollMonitor { ScrollProcess killprocess } monitor
% /ScrollProcess null def
% /MouseInItem? false def
% UnhiliteItem
% ItemValue ItemInitialValue ne { /Notify Owner send } if
% } def
%
% /ClientDrag { % - => -
% CurrentEvent begin XLocation YLocation end
% /LastY exch def
% /LastX exch def
% CheckItem
% } def
%
% /PaintBar { } def
% /EraseBox { } def
% /PaintButtons {
% BarViewPercent 1 gt { /PaintButtons super send } if
% } def
%
% /PaintBox { % - => - (paint box)
% %(PaintBox %\n) [ BarViewPercent ] dbgprintf
% %(pause...) [] dbgprintf 1 60 div sleep (!!\n) [] dbgprintf
% gsave
% 10 dict begin
%
% /x 1 def
% /w ItemWidth 2 sub def
%
% BarViewPercent 1 le
% {
% .5 setgray
% x ButtonSize w ItemHeight ButtonSize dup add sub rectpath fill
% }
% {
% 1 1 BarViewPercent div sub 1 ItemValue sub mul
% ItemHeight ButtonSize dup add sub mul ButtonSize add
% /y exch def
%
% 1 BarViewPercent div ItemHeight ButtonSize dup add sub mul
% /h exch def
%
% %
% % do the normal bar
% %
% ItemFillColor setcolor
% x ButtonSize w y ButtonSize sub rectpath fill
% x y h add w ItemHeight ButtonSize sub y sub h sub rectpath fill
%
% %
% % do the big scroll box
% %
% /ybut ItemValue ValueToY def
% .5 setgray
% x y w ybut y sub rectpath fill
% x ybut ButtonSize add w h ButtonSize sub ybut sub y add rectpath fill
% %
% % do the little scroll box
% %
% ItemValue BoxPath
% BoxFillColor setcolor gsave fill grestore
% ItemBorderColor setcolor eofill
% } ifelse
% end
% /ItemPaintedValue ItemValue def
% grestore
%
% /Notify Owner send
% } def
%
% /EventInItem? { % - => bool
% ScrollMotion
% {
% /ScrollAbsolute { false }
% /ScrollPageForward % top
% {
% LastX dup 0 ge exch ButtonSize le
% LastY ItemValue ValueToY ButtonSize add ge
% LastY ItemHeight ButtonSize sub le
% and and and
% }
% /ScrollPageBackward % bottom
% {
% LastX dup 0 ge exch ButtonSize le
% LastY ButtonSize ge
% LastY ItemValue ValueToY le
% and and and
% }
% /ScrollLineForward % top
% {
% LastX 0 ge
% LastX ButtonSize le
% LastY ItemHeight ButtonSize sub ge
% LastY ItemHeight le
% and and and
% }
% /ScrollLineBackward % bottom
% {
% LastX 0 ge
% LastX ButtonSize le
% LastY 0 ge
% LastY ButtonSize le
% and and and
% }
% } case
% BarViewPercent 1 le { pop false } if
% } def
%
% /CheckItem {
% ScrollMotion
% {
% /ScrollAbsolute {DoScroll}
% /ScrollPageForward % top
% {
% /MouseInItem? EventInItem? def
% }
% /ScrollPageBackward % bottom
% {
% /MouseInItem? EventInItem? def
% }
% /ScrollLineForward % top
% {
% EventInItem? dup
% { MouseInItem? not { HiliteItem } if }
% { MouseInItem? { UnhiliteItem } if }
% ifelse
% /MouseInItem? exch def
% }
% /ScrollLineBackward % bottom
% {
% EventInItem? dup
% { MouseInItem? not { HiliteItem } if }
% { MouseInItem? { UnhiliteItem } if }
% ifelse
% /MouseInItem? exch def
% }
% } case
% } def
%
% /HiliteItem {
% ScrollMotion
% {
% /ScrollAbsolute { }
% /ScrollPageForward { }
% /ScrollPageBackward { }
% /ScrollLineForward % top
% {
% 0 ItemHeight ButtonSize ButtonSize neg rectpath
% 5 setrasteropcode fill
% }
% /ScrollLineBackward % bottom
% {
% 0 0 ButtonSize ButtonSize rectpath
% 5 setrasteropcode fill
% }
% } case
% } def
%
%
% /UnhiliteItem {
% gsave
% ScrollMotion
% {
% /ScrollAbsolute {}
% /ScrollPageForward {}
% /ScrollPageBackward {}
% /ScrollLineForward % top
% {
% 0 ItemHeight ButtonSize sub ButtonSize ButtonSize rectpath
% clip
% PaintButtons
% }
% /ScrollLineBackward % bottom
% {
% 0 0 ButtonSize ButtonSize rectpath
% clip
% PaintButtons
% }
% } case
% grestore
% } def
%
%classend
%def
%
%
%/PicItem Item
%dictbegin
% /BufferCanvas null def
% /BufferWidth 0 def
% /BufferHeight 0 def
% /BufferMin 0 def
%
% /HScrollbar null def
% /VScrollbar null def
% /HScrollbar? true def
% /VScrollbar? true def
% /HScrollWidth 0 def
% /VScrollWidth 0 def
%
% /ScrollWidth 16 def
% /ZoomFactor 1 def
%
% /NotifyUserDown { pop pop } def % x y => -
% /NotifyUserUp { pop pop } def % x y => -
% /NotifyUserDrag { pop pop } def % x y => -
% /NotifyUserEnter { pop pop } def % x y => -
% /NotifyUserExit { pop pop } def % x y => -
%
%dictend
%classbegin
% /new { % parentcanvas width height => instance
% % (new begin\n) [] dbgprintf
% /new super send
% begin
% /BufferHeight ItemHeight def
% /BufferWidth ItemWidth def
% CreateScrollbars
% CreateBuffer
% currentdict
% end
% % (new end\n) [] dbgprintf
% } def
%
% /destroy {
% HScrollbar null ne { null /setowner HScrollbar send } if
% VScrollbar null ne { null /setowner VScrollbar send } if
% %% BufferCanvas /Mapped false put
% %% /BufferCanvas null def
% } def
%
%
% /setzoom { % zoomfactor => -
% /ZoomFactor exch def
% } def
%
%
% /reshape { % x y w h => -
% /reshape super send
% ReshapeScrollbars
% } def
%
% /reshapebuffer { % w h => -
% /BufferHeight exch def
% /BufferWidth exch def
% ReshapeBuffer
% ReshapeScrollbars
% } def
%
% /getcanvas {
% BufferCanvas
% } def
%
% /updatecanvas {
% PaintBuffer
% } def
%
% /makestartinterests {
% /makestartinterests HScrollbar send
% /makestartinterests VScrollbar send
% [ exch aload length 2 add -1 roll aload pop ] % join 2 arrays
% /makestartinterests super send
% [ exch aload length 2 add -1 roll aload pop ] % join 2 arrays
% } def
%
% /PaintItem {
% %% (PaintItem begin\n) [] dbgprintf
% %% ItemCanvas setcanvas .9 fillcanvas
% PaintBuffer
% /paint VScrollbar send
% /paint HScrollbar send
% %% (PaintItem end\n) [] dbgprintf
% } def
%
% /Notify {
% % (PicItem got notified\n) [] dbgprintf
% NotifyUser
% PaintBuffer
% } def
%
% /PaintBuffer {
% % (PaintBuffer begin \n) [ ] dbgprintf
% gsave
% ItemCanvas setcanvas
% %
% % compute clipping region
% %
% 0
% HScrollWidth
% ItemWidth VScrollWidth sub
% ItemHeight HScrollWidth sub
% rectpath
% % (clip to % % % %\n) [ pathbbox ] dbgprintf
% clip
%
% %
% % compute translation
% %
% BufferWidth ZoomFactor mul ItemWidth sub VScrollWidth add neg
% dup 0 lt
% {
% 1 /getvalue HScrollbar send sub
% mul
% }
% { pop 0 } ifelse
%
% BufferHeight ZoomFactor mul ItemHeight sub HScrollWidth add neg
% dup 0 lt
% {
% 1 /getvalue VScrollbar send sub
% mul
% }
% { } ifelse
% HScrollWidth add
%
% % 2 copy (translate by % %\n) [ 4 2 roll ] dbgprintf
% translate
%
% BufferWidth BufferHeight
% % 2 copy (scale by % %\n) [ 4 2 roll ] dbgprintf
% scale
% ZoomFactor dup scale
%
% pause
% BufferCanvas imagecanvas
% pause
% grestore
% gsave
% ItemCanvas setcanvas
% 0 0 0 rgbcolor strokecanvas
% grestore
% % (PaintBuffer end\n) [ ] dbgprintf
% } def
%
% /CreateBuffer { % - => -
% /BufferCanvas framebuffer newcanvas def
% BufferCanvas /Retained true put
% BufferCanvas /Opaque true put
% ReshapeBuffer
% } def
%
% /ReshapeBuffer { % - => -
% gsave
% framebuffer setcanvas
% 0 0 BufferWidth BufferHeight
% rectpath
% BufferCanvas reshapecanvas
% grestore
% } def
%
% /CreateScrollbars { % - => -
% % (begin CreateScrollbars\n) [] dbgprintf
% /HScrollWidth HScrollbar? { ScrollWidth } { 0 } ifelse def
% /VScrollWidth VScrollbar? { ScrollWidth } { 0 } ifelse def
%
% ItemWidth VScrollWidth le { /VScrollWidth ScrollWidth 2 div def } if
% ItemHeight HScrollWidth le { /HScrollWidth ScrollWidth 2 div def } if
%
% /HScrollbar
% [1 0 .01 .1 BufferWidth ItemWidth VScrollWidth sub div ]
% 1 {} ItemCanvas
% /new PicScroll send
% dup /BarVertical? false put
% def
% /VScrollbar
% [1 0 .01 .1 BufferHeight ItemHeight HScrollWidth sub div ]
% 1 {} ItemCanvas
% /new PicScroll send
% def
%
% self /setowner HScrollbar send
% self /setowner VScrollbar send
% % (end CreateScrollbars\n) [] dbgprintf
% } def
%
% /ReshapeScrollbars {
% /HScrollWidth HScrollbar? { ScrollWidth } { 0 } ifelse def
% /VScrollWidth VScrollbar? { ScrollWidth } { 0 } ifelse def
% 10 dict begin
% /h ItemHeight def /w ItemWidth def
% /s ScrollWidth def
%
% [1 0 .01 .1 BufferWidth ItemWidth VScrollWidth sub div ]
% /setrange HScrollbar send
% [1 0 .01 .1 BufferHeight ItemHeight HScrollWidth sub div ]
% /setrange VScrollbar send
%
%
% HScrollbar?
% { 0 0 w VScrollWidth sub s }
% { 0 0 0 0 }
% ifelse
% % 4 copy (hscroll % % % %\n) [ 6 2 roll ] dbgprintf
% /reshape HScrollbar send
%
% VScrollbar?
% { w s sub HScrollWidth s h HScrollWidth sub }
% { 0 0 0 0 }
% ifelse
% % 4 copy (vscroll % % % %\n) [ 6 2 roll ] dbgprintf
% /reshape VScrollbar send
% end
% } def
%
% /ClientDown {
% % (PicItem ClientDown\n) [] dbgprintf
%
% % compute translation
% %
% BufferWidth ZoomFactor mul ItemWidth sub VScrollWidth add neg
% dup 0 lt
% {
% 1 /getvalue HScrollbar send sub
% mul
% }
% { pop 0 } ifelse
%
% BufferHeight ZoomFactor mul ItemHeight sub HScrollWidth add neg
% dup 0 lt
% {
% 1 /getvalue VScrollbar send sub
% mul
% }
% { } ifelse
% HScrollWidth add
%
% % translatex translatey
% CurrentEvent /YLocation get sub neg exch
% CurrentEvent /XLocation get sub neg exch
% % (n: %\n) [ NotifyUserDown ] dbgprintf
% { NotifyUserDown } fork
%
% } def
%
% /ClientUp {
% % (PicItem ClientUp\n) [] dbgprintf
% CurrentEvent begin XLocation YLocation end
% NotifyUserUp
% } def
%
% /ClientDrag {
% % (client drag\n) [] dbgprintf
% CurrentEvent begin XLocation YLocation end
% NotifyUserDrag
% } def
%
% /ClientEnter {
% %% (client enter\n) [] dbgprintf
% CurrentEvent begin XLocation YLocation end NotifyUserEnter
% } def
%
% /ClientExit {
% %% (client exit\n) [] dbgprintf
% CurrentEvent begin XLocation YLocation end NotifyUserExit
% } def
%
%classend
%def
%
%% ------------------------------------------------------------------------<eof>
SHAR_EOF
fi # end of overwriting check
# End of shell archive
exit 0
-------------------------------------------------------------------------------
WHO: Richard Hess BELL: [415] 940-1400 [ext.342]
TITLE: Project Manager CORP: Consilium
[ User Interface Services ] SNAIL: 1945 Charleston Road
UUCP: ...!uunet!cimshop!rhess Mountain View, CA 94043
-------------------------------------------------------------------------------