home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-12-31 | 2.0 KB | 78 lines | [TEXT/MACA] |
- \ 02-16-88 srp class of rects that zoom
- \ used especially for windows opening and closing
- \ (as in the finder)
- \ use a grafport defined for the entire screen
- \ so that zooming rects are not clipped to
- \ the current grafport
- \
- : zoom ;
-
- 0 variable penstate 14 allot
-
- : savepstate penstate +base call GetPenState ;
- : restPstate penstate +base call SetPenState ;
-
- : l->g pack thepoint ! thepoint +base
- call localtoglobal thepoint @ unpack ;
-
- :Class BigPort <Super GrafPort
-
- :M New: (abs) call OpenPort ;M
-
- :M Close: (abs) call ClosePort ;M
-
- :M Clip: addr: self 28 + @ -base @ -base 2+ put: rect ;M
-
- ;Class
-
- BigPort Screen
-
- :Class ZoomRect <Super Rect
-
- int #steps
- int Ldiff
- int Tdiff
- int Rdiff
- int Bdiff
- int swidth
- int shght
- rect source
- rect dest
-
- :M Diffs: gettopx: dest gettopx: source - put: Ldiff
- gettopy: dest gettopy: source - put: Tdiff
- size: source put: shght put: swidth
- size: dest get: shght - put: Bdiff get: swidth - put: Rdiff ;M
-
- :M Init: put: source put: dest put: #steps Diffs: self ;M
-
- :M Steps: put: #steps ;M
-
- :M Zoom: { \ zsteps ind zleft ztop -- }
- savepstate
- 3 syspat +base call penpat
- 14 makeint call penmode
- get: #steps -> zsteps
- 2 0
- DO zsteps 0
- DO i 1+ -> ind
- gettopx: source get: Ldiff ind * zsteps / + -> zleft
- gettopy: source get: Tdiff ind * zsteps / + -> ztop
- zleft ztop
- zleft get: swidth + get: Rdiff ind * zsteps / +
- ztop get: shght + get: Bdiff ind * zsteps / +
- put: self draw: self
- LOOP
- LOOP
- restpstate ;M
-
- ;Class
-
- zoomrect Zoomer
-
- 20 100 100 200 200 getrect: fwind init: zoomer
-
- : ZoomIt pushport new: screen set: screen zoom: zoomer close: screen popport ;
-
-
-