home *** CD-ROM | disk | FTP | other *** search
- /*===========================================================================*
- * fsize.c *
- * *
- * procedures to keep track of frame size *
- * *
- * EXPORTED PROCEDURES: *
- * Fsize_Reset *
- * Fsize_Note *
- * Fsize_Validate *
- * *
- * EXPORTED VARIABLES: *
- * Fsize_x *
- * Fsize_y *
- * *
- *===========================================================================*/
-
- /*
- * Copyright (c) 1993 The Regents of the University of California.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose, without fee, and without written agreement is
- * hereby granted, provided that the above copyright notice and the following
- * two paragraphs appear in all copies of this software.
- *
- * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
- * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
- * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
- * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
- * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
- * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
- */
-
-
- /*==============*
- * HEADER FILES *
- *==============*/
-
- #include "all.h"
- #include "fsize.h"
- #include "dct.h"
-
-
- /*==================*
- * GLOBAL VARIABLES *
- *==================*/
- int Fsize_x = 0;
- int Fsize_y = 0;
-
-
- /*=====================*
- * EXPORTED PROCEDURES *
- *=====================*/
-
- /*===========================================================================*
- *
- * Fsize_Reset
- *
- * reset the frame size to 0
- *
- * RETURNS: nothing
- *
- * SIDE EFFECTS: Fsize_x, Fsize_y
- *
- *===========================================================================*/
- void
- Fsize_Reset()
- {
- Fsize_x = Fsize_y = 0;
- }
-
-
- /*===========================================================================*
- *
- * Fsize_Validate
- *
- * make sure that the x, y values are 16-pixel aligned
- *
- * RETURNS: modifies the x, y values to 16-pixel alignment
- *
- * SIDE EFFECTS: none
- *
- *===========================================================================*/
- void
- Fsize_Validate(x, y)
- int *x;
- int *y;
- {
- *x &= ~(DCTSIZE * 2 - 1);
- *y &= ~(DCTSIZE * 2 - 1);
- }
-
-
- /*===========================================================================*
- *
- * Fsize_Note
- *
- * note the given frame size and modify the global values as appropriate
- *
- * RETURNS: nothing
- *
- * SIDE EFFECTS: Fsize_x, Fsize_y
- *
- *===========================================================================*/
- void
- Fsize_Note(id, width, height)
- int id;
- int width;
- int height;
- {
- if (Fsize_x == 0) {
- Fsize_x = width;
- Fsize_y = height;
- Fsize_Validate(&Fsize_x, &Fsize_y);
- } else if (width < Fsize_x || height < Fsize_y) {
- fprintf(stderr, "Frame %d: wrong size: (%d,%d). Should be greater or equal to: (%d,%d)\n",
- id, width, height, Fsize_x, Fsize_y);
- exit(1);
- }
- }
-