/*************************************************************************
 *
 *	WinSize - a window sizing utility
 *
 *	Copyright © 1987 by
 *		Limited Reality, Inc.
 *
 ************************************************************************/

#include        <exec/types.h>
#include        <intuition/intuitionbase.h>
#include	<stdio.h>

#ifdef stdout
#undef stdout
#endif

FILE *stdout;

struct IntuitionBase *IntuitionBase = 0;

main(argc, argv)
int argc;
char *argv[];
{
    int width = 9999, height = 9999, left = -1, top = -1;

    stdout = (FILE *)Output();

    if ((argc == 2) && (argv[1][0] == '?')) {
	printf("Usage: %s [leftedge topedge width height]\n",argv[0]);
	exit(0);
    }

    if ((argc != 1) && (argc != 5)) {
	puts("Bad ARGS");
	exit(0);
    }

    if ((IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 0)) == 0) {
        exit(20);
    }

    if (argc == 5) {
	left = atoi(argv[1]);
	top = atoi(argv[2]);
	width = atoi(argv[3]);
	height = atoi(argv[4]);
    }

    if (width > IntuitionBase->ActiveScreen->Width)
	width = IntuitionBase->ActiveScreen->Width;

    if (width > IntuitionBase->ActiveWindow->MaxWidth)
	IntuitionBase->ActiveWindow->MaxWidth = width;

    if (width < IntuitionBase->ActiveWindow->MinWidth)
	width = IntuitionBase->ActiveWindow->MinWidth;

    if (height > IntuitionBase->ActiveScreen->Height)
	height = IntuitionBase->ActiveScreen->Height;

    if (height > IntuitionBase->ActiveWindow->MaxHeight)
	IntuitionBase->ActiveWindow->MaxHeight = height;

    if (height < IntuitionBase->ActiveWindow->MinHeight)
	height = IntuitionBase->ActiveWindow->MinHeight;

    if (left < 0) left = 0;

    if (top < 0) top = 0;

    if (left > (IntuitionBase->ActiveScreen->Width - width))
	left = (IntuitionBase->ActiveScreen->Width - width);

    if (top > (IntuitionBase->ActiveScreen->Height - height))
	top = (IntuitionBase->ActiveScreen->Height - height);

    if ((left < IntuitionBase->ActiveWindow->LeftEdge) ||
	(top < IntuitionBase->ActiveWindow->TopEdge)) {
	    MoveWindow(IntuitionBase->ActiveWindow,
		left-IntuitionBase->ActiveWindow->LeftEdge,
		top-IntuitionBase->ActiveWindow->TopEdge);

	    SizeWindow(IntuitionBase->ActiveWindow,
		width-IntuitionBase->ActiveWindow->Width,
		height-IntuitionBase->ActiveWindow->Height);
    } else {
	    SizeWindow(IntuitionBase->ActiveWindow,
		width-IntuitionBase->ActiveWindow->Width,
		height-IntuitionBase->ActiveWindow->Height);

	    MoveWindow(IntuitionBase->ActiveWindow,
		left-IntuitionBase->ActiveWindow->LeftEdge,
		top-IntuitionBase->ActiveWindow->TopEdge);
    }

    RethinkDisplay();

    CloseLibrary(IntuitionBase);
}
