|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T f
Length: 7435 (0x1d0b) Types: TextFile Names: »file.c«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« └─⟦2109abc41⟧ └─⟦this⟧ »./X.V10R4/Toolkit/Xr/usr/contrib/RB/file.c«
/* * $Source: /u1/Xr/usr/contrib/RB/RCS/file.c,v $ * $Header: file.c,v 1.1 86/12/17 08:53:07 swick Exp $ */ #ifndef lint static char *rcsid_file_c = "$Header: file.c,v 1.1 86/12/17 08:53:07 swick Exp $"; #endif lint static char rcsid[] = "$Header: file.c,v 1.1 86/12/17 08:53:07 swick Exp $"; /*************************************<+>************************************* ***************************************************************************** ** ** File: file.c ** ** Project: X-ray Toolbox ** ** Description: file.c handles the write, read, and get info functions ** for accessing a raster file. ** ** ******************************************************************* ** * (c) Copyright Hewlett-Packard Company, 1986. All rights are * ** * reserved. Copying or other reproduction of this program except * ** * for archival purposes is prohibited without the prior written * ** * consent of Hewlett-Packard Company. * ** ******************************************************************* ** ** ** ------------------------ MODIFICATION RECORD ------------------------ * * $Log: file.c,v $ * Revision 1.1 86/12/17 08:53:07 swick * Initial revision * * ***************************************************************************** *************************************<+>*************************************/ #include <X/Xlib.h> #include <Xr/defs.h> #include <Xr/types.h> /*************************************<->************************************* * * WriteFile (name, image) * INT8 * name; * xrPixmap * image; * * * Description: * ------------ * Write out the image contained in the xrPixmap structure image. * * * Inputs: * ------- * name = The name of the file to write to. * image = The image to be written. * * * Outputs: * -------- * TRUE = returned if the write is successful. * FALSE = returned if the write fails. * * * Procedures Called * ----------------- * BZPixmapSize - Xlib * WZPixmapSize - Xlib * creat() * write() * close() * * *************************************<->*************************************/ WriteFile (name, image) INT8 * name; xrPixmap * image; { register INT32 count; register INT32 fd; register INT32 i; INT16 csum; INT8 * rasterPtr; /* * Create the file, write out the height, width, and depth, * calculate and write out the check sum, calculate the byte * size of the image and write out the image. */ if ((fd = creat (name, 0666)) == -1) return (FALSE); ValueWrite (fd, image -> height); ValueWrite (fd, image -> width); write (fd, &(image -> depth), 1); csum = image -> height + image -> width + image -> depth; ValueWrite (fd, csum); if (image -> depth == XrBIT1) count = BitmapSize (image -> width, image -> height); else if (image -> depth <= XrBYTE1) count = BZPixmapSize (image -> width, image -> height); else count = WZPixmapSize (image -> width, image -> height); rasterPtr = (INT8 *) (image -> raster); for (i = 0; i < count; i++) write (fd, rasterPtr + i, 1); close (fd); } /*************************************<->************************************* * * ReadFile (name, image) * INT8 * name; * xrPixmap * image; * * * Description: * ------------ * Read the image from the file identified by name into image. * * * Inputs: * ------- * name = The name of the file to read. * image = The image structure to be set. * * * Outputs: * -------- * TRUE = Returned if the read is successful. * FALSE = Returned if the read fails. * image = The members of the image structure will be filled * with the image information when the read is successful. * * * Procedures Called * ----------------- * BZPixmapSize - Xlib * WZPixmapSize - Xlib * open() * close() * read() * * *************************************<->*************************************/ ReadFile (name, image) INT8 * name; xrPixmap * image; { INT32 fd; INT32 count; INT16 csum; INT32 i; INT8 * rasterPtr; /* * Open the file, read the height, width, depth, and check sum, * verify that the check sum is correct, calculate the byte size * of the image and read the image into the pixmap. */ if ((fd = open (name, 0)) == -1) return (FALSE); ValueRead (fd, &(image -> height)); ValueRead (fd, &(image -> width)); read (fd, &(image -> depth), 1); ValueRead (fd, &csum); if (csum != (image -> height + image -> width + image -> depth)) { close (fd); return (FALSE); } if (image -> depth == XrBIT1) count = BitmapSize (image -> width, image -> height); else if (image -> depth <= XrBYTE1) count = BZPixmapSize (image -> width, image -> height); else count = WZPixmapSize (image -> width, image -> height); rasterPtr = (INT8 *) (image -> raster); for (i = 0; i < count; i++) read (fd, rasterPtr + i, 1); close (fd); return (TRUE); } /*************************************<->************************************* * * GetFileInfo (name, image) * INT8 * name; * xrPixmap * image; * * * Description: * ------------ * Get the information about a image from the file. * * * Inputs: * ------- * name = The name of the file that contains the image. * image = The structure which will hold the information. * * * Outputs: * -------- * TRUE = Returned if the write is successful. * FALSE = Returned if the write fails. * image = The width, height, and depth fields of the image * structure are set if successful. * * * Procedures Called * ----------------- * open() * read() * close() * * *************************************<->*************************************/ GetFileInfo (name, image) INT8 * name; xrPixmap * image; { INT32 fd; INT16 csum; /* * Open the file, get the height, width, depth, and check sum, * verify that the check sum is correct and return. */ if ((fd = open (name, 0)) == -1) return (FALSE); ValueRead (fd, &(image -> height)); ValueRead (fd, &(image -> width)); read (fd, &(image -> depth), 1); ValueRead (fd, &csum); close (fd); if (csum != (image -> height + image -> width + image -> depth)) return (FALSE); return (TRUE); } /*************************************<->************************************* * * ValueRead (fd, value) * INT32 fd; * INT16 * value; * * ValueWrite (fd, value) * INT32 fd; * INT16 value; * * * Description: * ------------ * Read or write a value into or out of a string. * * * Procedures Called * ----------------- * read() * write() * * *************************************<->*************************************/ ValueRead (fd, value) INT32 fd; INT16 * value; { INT8 string [4]; read (fd, string, 4); *value = atoi (string); } ValueWrite (fd, value) INT32 fd; INT16 value; { INT8 string [5]; sprintf (string, "%4d", value); write (fd, (char *) string, 4); }