home *** CD-ROM | disk | FTP | other *** search
- #ifndef lint
- static char *RCSid = "$Id: EpsViewer.m,v 3.24 1992/02/29 16:27:40 woo Exp woo $";
- #endif
-
- /*
- * $Log: EpsViewer.m,v $
- # Revision 3.24 1992/02/29 16:27:40 woo
- # gnuplot3.2, beta 4
- #
- */
-
- #import "EpsViewer.h"
- #import "EPSView.h"
- #import <appkit/nextstd.h>
- #import <appkit/OpenPanel.h>
-
- @implementation EpsViewer
-
- - windowCreate:(NXCoord) width Height:(NXCoord) height
- {
- NXRect rect = {{0.0,0.0},{width,height}};
-
- /* create the new window, in a good place */
- theNewWin = [Window
- newContent:[self nextRectForWidth:width Height:height]
- style:NX_TITLEDSTYLE
- backing:NX_RETAINED
- buttonMask:(NX_CLOSEBUTTONMASK | NX_MINIATURIZEBUTTONMASK)
- defer:NO];
- /* we need to receive windowDidBecomeMain: and windowDidResignMain: */
- [theNewWin setDelegate:self];
- /*
- * create a new EPSView, make it the contentView of our new window,
- * and destroy the window's old contentView
- */
- [[theNewWin setContentView:[EPSView new]] free];
- /* display the window, and bring it forth */
- [theNewWin display];
- [theNewWin makeKeyAndOrderFront:self];
- /* [theNewWin orderBack:self]; */
- /* show the frame */
- return self;
- }
-
- /***************************************************************************/
- /* nextRectForWidth:Height: - return the next good content rectangle */
- /* from Carl F. Sutter's wonderful ViewGif2 'Controller' method... */
- /***************************************************************************/
- /* nextTopLeft - return the next good top left window position */
- /***************************************************************************/
-
- - (NXRect *)nextRectForWidth:(NXCoord)width Height:(NXCoord)height
- {
- #define OFFSET 10.0
- #define MAX_STEPS 20
- #define INITIAL_X 356.0
- #define INITIAL_Y 241.0
- NXPoint nxpTopLeft;
- NXRect nxrTemp; /* used to find window height */
- NXRect nxrWinHeight; /* bounds of enclosing window */
- NXSize nxsScreen; /* size of screen */
- static NXRect nxrResult; /* the Answer! */
- static int nCurStep = 0;
-
- /* find a good top-left coord */
- nxpTopLeft.x = INITIAL_X + nCurStep * OFFSET;
- nxpTopLeft.y = INITIAL_Y + nCurStep * OFFSET;
- if (++nCurStep > MAX_STEPS)
- nCurStep = 0;
- /* find window height using nxrTemp */
- nxrTemp.size.width = width;
- nxrTemp.size.height = height;
- nxrTemp.origin.x = nxrTemp.origin.y = 0;
- [Window getFrameRect:&nxrWinHeight forContentRect:&nxrTemp
- style:NX_TITLEDSTYLE];
- [NXApp getScreenSize:&nxsScreen];
- /* find the lower-left coord */
- nxrResult.origin.x = nxpTopLeft.x;
- nxrResult.origin.y = nxsScreen.height - nxrWinHeight.size.height - nxpTopLeft.y;
- nxrResult.size.width = width;
- nxrResult.size.height = height;
- return (&nxrResult);
- }
-
- @end
-
-