40 lines
1.1 KiB
C
40 lines
1.1 KiB
C
/*
|
|
* Copyright (c) 1980 Regents of the University of California.
|
|
* All rights reserved. The Berkeley software License Agreement
|
|
* specifies the terms and conditions for redistribution.
|
|
*/
|
|
|
|
#ifndef lint
|
|
static char sccsid[] = "@(#)space.c 1.1 94/10/31 SMI"; /* from UCB 5.2 4/30/85 */
|
|
#endif not lint
|
|
|
|
|
|
#include "aed.h"
|
|
|
|
/*---------------------------------------------------------
|
|
* Space sets up the world-to-screen transformation so
|
|
* that the rectangular area described by (x0, y0) and
|
|
* (x1, y1) will all be on-screen.
|
|
*
|
|
* Results: None.
|
|
*
|
|
* Side Effects:
|
|
* Our own variables scale, xbot, and ybot are changed.
|
|
*---------------------------------------------------------
|
|
*/
|
|
space(x0, y0, x1, y1)
|
|
int x0, y0, x1, y1;
|
|
{
|
|
int xscale, yscale, xsize, ysize;
|
|
xscale = (GRXMAX<<12)/(x1-x0);
|
|
yscale = (GRYMAX<<12)/(y1-y0);
|
|
if (xscale > yscale) scale = yscale;
|
|
else scale = xscale;
|
|
scale = (scale*9)/10 - 1;
|
|
if (scale<1) scale = 1;
|
|
xsize = (2048*GRXMAX)/scale + 1;
|
|
xbot = (x1+x0)/2 - xsize;
|
|
ysize = (2048*GRYMAX)/scale + 1;
|
|
ybot = (y1+y0)/2 - ysize;
|
|
}
|