diff options
Diffstat (limited to 'Build/source/texk/web2c/xetexdir/image/bmpimage.c')
-rw-r--r-- | Build/source/texk/web2c/xetexdir/image/bmpimage.c | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/Build/source/texk/web2c/xetexdir/image/bmpimage.c b/Build/source/texk/web2c/xetexdir/image/bmpimage.c deleted file mode 100644 index 57b76091904..00000000000 --- a/Build/source/texk/web2c/xetexdir/image/bmpimage.c +++ /dev/null @@ -1,211 +0,0 @@ -/****************************************************************************\ - Part of the XeTeX typesetting system - Copyright (c) 1994-2006 by SIL International - - SIL Author(s): Jonathan Kew - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. -\****************************************************************************/ - -/* this file is derived from the dvipdfmx project; - the original header follows... */ - -/* $Header: /home/cvsroot/dvipdfmx/src/bmpimage.c,v 1.2 2004/07/27 12:08:46 hirata Exp $ - - This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks. - - Copyright (C) 2002 by Jin-Hwan Cho and Shunsaku Hirata, - the dvipdfmx project team <dvipdfmx@project.ktug.or.kr> - - Copyright (C) 1998, 1999 by Mark A. Wicks <mwicks@kettering.edu> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. -*/ - -/* - * BMP SUPPORT: - */ - -#if HAVE_CONFIG_H -#include <w2c/config.h> -#endif - -#include "bmpimage.h" - -#define DIB_FILE_HEADER_SIZE 14 -#define DIB_CORE_HEADER_SIZE 12 -#define DIB_INFO_HEADER_SIZE 40 -#define DIB_INFO_HEADER_SIZE2 64 -#define DIB_INFO_HEADER_SIZE4 108 -#define DIB_INFO_HEADER_SIZE5 124 - -#define DIB_COMPRESS_NONE 0 -#define DIB_COMPRESS_RLE8 1 -#define DIB_COMPRESS_RLE4 2 - -#define DIB_HEADER_SIZE_MAX (DIB_FILE_HEADER_SIZE+DIB_INFO_HEADER_SIZE5) - -static void -WARN(const char *fmt, ...) -{ - va_list argp; - - fprintf(stderr, "** WARNING ** "); - va_start(argp, fmt); - vfprintf(stderr, fmt, argp); - va_end(argp); - fprintf(stderr, "\n"); -} - -int -check_for_bmp (FILE *fp) -{ - unsigned char sigbytes[2]; - - if (!fp) - return 0; - - rewind(fp); - if (fread(sigbytes, 1, sizeof(sigbytes), fp) != sizeof(sigbytes) || - sigbytes[0] != 'B' || sigbytes[1] != 'M') - return 0; - else - return 1; - - return 0; -} - -int -bmp_scan_file(struct bmp_info *info, FILE *fp) -{ - unsigned char buf[DIB_HEADER_SIZE_MAX+4]; - unsigned char *p; - long offset, hsize; - long psize; /* Bytes per palette color: 3 for OS2, 4 for Win */ - unsigned short bit_count; /* Bits per pix */ - int num_palette; - unsigned long biXPelsPerMeter, biYPelsPerMeter; - - p = buf; - - rewind(fp); - if (fread(buf, 1, DIB_FILE_HEADER_SIZE + 4, fp) - != DIB_FILE_HEADER_SIZE + 4) { - WARN("Could not read BMP file header..."); - } - - if (p[0] != 'B' || p[1] != 'M') { - WARN("File not starting with \'B\' \'M\'... Not a BMP file?"); - return -1; - } - p += 2; - -#define ULONG_LE(b) ((b)[0] + ((b)[1] << 8) +\ - ((b)[2] << 16) + ((b)[3] << 24)) -#define USHORT_LE(b) ((b)[0] + ((b)[1] << 8)) - - /* ignore fsize */ p += 4; - if (ULONG_LE(p) != 0) { - WARN("Not a BMP file???"); - return -1; - } - p += 4; - offset = ULONG_LE(p); p += 4; - - /* info header */ - hsize = ULONG_LE(p); p += 4; - if (fread(p, sizeof(char), hsize - 4, fp) != hsize - 4) { - WARN("Could not read BMP file header..."); - return -1; - } - if (hsize == DIB_CORE_HEADER_SIZE) { - info->width = USHORT_LE(p); p += 2; - info->height = USHORT_LE(p); p += 2; - info->xdpi = 72.0; /* assume 72 DPI */ - info->ydpi = 72.0; /* assume 72 DPI */ - if (USHORT_LE(p) != 1) { - WARN("Unknown bcPlanes value in BMP COREHEADER."); - return -1; - } - p += 2; - bit_count = USHORT_LE(p); p += 2; - psize = 3; - } else if (hsize == DIB_INFO_HEADER_SIZE || - hsize == DIB_INFO_HEADER_SIZE2 || - hsize == DIB_INFO_HEADER_SIZE4 || - hsize == DIB_INFO_HEADER_SIZE5) { - info->width = ULONG_LE(p); p += 4; - info->height = ULONG_LE(p); p += 4; - if (USHORT_LE(p) != 1) { - WARN("Unknown biPlanes value in BMP INFOHEADER."); - return -1; - } - p += 2; - bit_count = USHORT_LE(p); p += 2; - /* ignore compression */ p += 4; - /* ignore biSizeImage */ p += 4; - biXPelsPerMeter = ULONG_LE(p); p += 4; - biYPelsPerMeter = ULONG_LE(p); p += 4; - info->xdpi = biXPelsPerMeter * 0.0254; /* convert pixels per meter to DPI */ - info->ydpi = biYPelsPerMeter * 0.0254; - if (info->height < 0) { - info->height = -info->height; - } - psize = 4; - } else { - fprintf (stderr, "Unknown BMP header type.\n"); - exit (1); - return -1; /* never reaches here */ - } - - if (bit_count < 24) { - if (bit_count != 1 && - bit_count != 4 && bit_count != 8) { - WARN("Unsupported palette size: %ld", bit_count); - return -1; - } - num_palette = (offset - hsize - DIB_FILE_HEADER_SIZE) / psize; - info->bits_per_component = bit_count; - info->num_components = 1; - } else if (bit_count == 24) { /* full color */ - num_palette = 1; /* dummy */ - info->bits_per_component = 8; - info->num_components = 3; - } else { - WARN("Unkown BMP bitCount: %ld", bit_count); - return -1; - } - - if (info->width == 0 || info->height == 0 || num_palette < 1) { - WARN("Invalid BMP file: width=%ld, height=%ld, #palette=%d", - info->width, info->height, num_palette); - return -1; - } - - return 0; -} - |