4.3BSD/usr/contrib/X/uwm/StoreGridBox.c

Compare this file to the similar file:
Show the results in this format:

#ifndef lint
static char *rcsid_StoreGridBox_c = "$Header: StoreGridBox.c,v 10.3 86/02/01 16:24:00 tony Rel $";
#endif	lint

/************************************************************************
 *									*
 *			Copyright (c) 1986 by				*
 *		Digital Equipment Corporation, Maynard, MA		*
 *		         All Rights Reserved.				*
 *									*
 *	Permission to use, copy, modify, and distribute this software	*
 *	and its documentation is hereby granted only to licensees of 	*
 *	The Regents of the University of California pursuant to their	*
 *	license agreement for the Berkeley Software Distribution 	*
 *	provided that the following appears on all copies.		*
 *									*
 *            "LICENSED FROM DIGITAL EQUIPMENT CORPORATION		*
 *                      COPYRIGHT (C) 1986				*	
 *                 DIGITAL EQUIPMENT CORPORATION			*
 *                         MAYNARD, MA					*
 *                     ALL RIGHTS RESERVED.				*
 *									*
 *      THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT	* 
 *	NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL	*
 *	EQUIPMENT CORPORATION.  DIGITAL MAKES NO REPRESENTATIONS	*
 *	ABOUT SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. IT IS	*
 *	SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.		*
 *									*	
 * 	IF THE UNIVERSITY OF CALIFORNIA OR ITS LICENSEES MODIFY 	*	
 *	THE SOFTWARE IN A MANNER CREATING DERIVATIVE COPYRIGHT 		*	
 *	RIGHTS APPROPRIATE COPYRIGHT LEGENDS MAY BE PLACED ON THE	*
 *	DERIVATIVE WORK IN ADDITION TO THAT SET FORTH ABOVE."		*	
 *									*
 ************************************************************************/
 

/*
 * MODIFICATION HISTORY
 *
 * 000 -- M. Gancarz, DEC Ultrix Engineering Group
 */

#ifndef lint
static char *sccsid = "@(#)StoreGridBox.c	3.8	1/24/86";
#endif
/*
 *	StoreGridBox - This subroutine is used by the X Window Manager (xwm)
 *	to store the vertices for the movement resize grid and box in a
 *	vertex list.
 */

#include "uwm.h"

/*
 * Store the vertices for the movement resize grid and box in a vertex list.
 */
int StoreGridBox(box, ulx, uly, lrx, lry)
register Vertex box[];
int ulx;			/* Upper left X coordinate. */
int uly;			/* Upper left Y coordinate. */
int lrx;			/* Lower right X coordinate. */
int lry;			/* Lower right Y coordinate. */
{
    register int xthird, ythird;
    int x1third, y1third;
    int x2third, y2third;

    /*
     * Xor in.
     */
    box[0].x = box[3].x = box[4].x = box[5].x = box[7].x = ulx;
    box[1].x = box[2].x = box[6].x = box[8].x = lrx;

    box[0].y = box[1].y = box[4].y = box[9].y = box[11].y = uly;
    box[2].y = box[3].y = box[10].y = box[12].y = lry;

    box[0].flags = box[5].flags = box[7].flags = box[9].flags =
        box[11].flags = VertexDontDraw;

    /*
     * These are the X and Y calculations for the parts of the grid that
     * are dependent on the division by 3 calculations.
     */

    /*
     * Y dimension third.
     */
    ythird = (lry - uly) / 3;
    y1third = uly + ythird;
    y2third = y1third + ythird;
   
    /*
     * X dimension third.
     */
    xthird = (lrx - ulx) / 3;
    x1third = ulx + xthird;
    x2third = x1third + xthird;

    /*
     * Stash first set of vertices.
     */
    box[5].y = box[6].y = y1third;
    box[7].y = box[8].y = y2third;

    box[9].x = box[10].x = x1third;
    box[11].x = box[12].x = x2third; 

    /*
     * Do not erase if we're freezing the screen.
     */
    if (Freeze)
        return(13);

    /*
     * From here on we're retracing the vertices to clear the
     * grid using GXxor.
     */
    box[18].y = box[19].y = y1third;
    box[20].y = box[21].y = y2third;

    box[22].x = box[23].x = x1third;
    box[24].x = box[25].x = x2third;

    box[13].x = box[16].x = box[17].x = box[18].x = box[20].x = ulx;
    box[13].y = box[14].y = box[17].y = box[22].y = box[24].y = uly;

    box[14].x = box[15].x = box[19].x = box[21].x = lrx;
    box[15].y = box[16].y = box[23].y = box[25].y = lry;

    box[13].flags = box[18].flags = box[20].flags = box[22].flags =
        box[24].flags = VertexDontDraw;


    /*
     * Total number of vertices is 26.
     */
    return(26);
}