亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? tga.c

?? miniucgui1.30版本的源碼
?? C
字號(hào):
/* $Id: tga.c,v 1.4 2003/09/04 06:02:53 weiym Exp $**** Low-level TGA bitmap file read/save function.**** Copyright (C) 2003 Feynman Software.** Copyright (C) 2000 ~ 2002 Wei Yongming.**** Create date: 2000/08/27, derived from original bitmap.c** ** Current maintainer: Wei Yongming.**** FIXME: Some errors occurred when RLE used.*//*** 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*//*         ______   ___    ___ *        /\  _  \ /\_ \  /\_ \ *        \ \ \L\ \\//\ \ \//\ \      __     __   _ __   ___ *         \ \  __ \ \ \ \  \ \ \   /'__`\ /'_ `\/\`'__\/ __`\ *          \ \ \/\ \ \_\ \_ \_\ \_/\  __//\ \L\ \ \ \//\ \L\ \ *           \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/ *            \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/ *                                           /\____/ *                                           \_/__/ * *      TGA reader by Tim Gunn. * *      RLE support added by Michal Mertl and Salvador Eduardo Tropea. * *      See allegro source for copyright information. */#include <stdio.h>#include <stdlib.h>#include "common.h"#include "gdi.h"#include "readbmp.h"#ifdef _TGA_FILE_SUPPORT/* rle_tga_read: *  Helper for reading 256 color RLE data from TGA files. */static void rle_tga_read(unsigned char *b, int len, MG_RWops *f){   unsigned char value;   int count;   int c = 0;   do {      count = fp_getc(f);      if (count & 0x80) {         count = (count & 0x7F) + 1;         c += count;         value = fp_getc(f);         while (count--)            *(b++) = value;      }      else {         count++;         c += count;         MGUI_RWread (f, b, 1, count);         b += count;      }   } while (!MGUI_RWeof (f) && c < len);}/* rle_tga_read32: *  Helper for reading 32 bit RLE data from TGA files. */static void rle_tga_read32(unsigned char *b, int len, MG_RWops *f){   unsigned char value[4];   int count;   int c = 0;   do {      count = fp_getc(f);      if (count & 0x80) {         count = (count & 0x7F) + 1;         c += count;         MGUI_RWread (f, value, 1, 4);         while (count--) {            b[3] = value[3];            b[2] = value[2];            b[1] = value[1];            b[0] = value[0];            b += 4;         }      }      else {         count++;         c += count;         while (count--) {            MGUI_RWread (f, value, 1, 4);            b[3] = value[3];            b[2] = value[2];            b[1] = value[1];            b[0] = value[0];            b += 4;         }      }   } while (!MGUI_RWeof (f) && c < len);}/* rle_tga_read24: *  Helper for reading 24 bit RLE data from TGA files. */static void rle_tga_read24(unsigned char *b, int len, MG_RWops *f){   unsigned char value[4];   int count;   int c = 0;   do {      count = fp_getc(f);      if (count & 0x80) {         count = (count & 0x7F) + 1;         c += count;         MGUI_RWread (f, value, 1, 3);         while (count--) {            b[2] = value[2];            b[1] = value[1];            b[0] = value[0];            b += 3;         }      }      else {         count++;         c += count;         while (count--) {            MGUI_RWread (f, value, 1, 3);            b[2] = value[2];            b[1] = value[1];            b[0] = value[0];            b += 3;         }      }   } while (!MGUI_RWeof (f) && c < len);}/* rle_tga_read16: *  Helper for reading 16 bit RLE data from TGA files. */static void rle_tga_read16(unsigned short *b, int len, MG_RWops *f){   unsigned int value;   unsigned short color;   int count;   int c = 0;   do {      count = fp_getc(f);      if (count & 0x80) {         count = (count & 0x7F) + 1;         c += count;         value = fp_igetw(f);         color = value;         while (count--)            *(b++) = color;      }      else {         count++;         c += count;         while (count--) {            value = fp_igetw(f);            color = value;            *(b++) = color;         }      }   } while (!MGUI_RWeof (f) && c < len);}/* load_tga: *  Loads a 256 color or 24 bit uncompressed TGA file, returning a bitmap *  structure and storing the palette data in the specified palette (this *  should be an array of at least 256 RGB structures). */int load_tga (MG_RWops* f, MYBITMAP* bmp, RGB *pal){   unsigned char image_id[256], image_palette[256][3], rgb[4];   unsigned char id_length, palette_type, image_type, palette_entry_size;   unsigned char bpp, descriptor_bits;   short unsigned int first_color, palette_colors;   short unsigned int left, top, image_width, image_height;   unsigned int i, x, y;   unsigned short *s;   int compressed;   int pitch, bytes_per_pixel;   unsigned int size;   unsigned char* bits;   id_length = fp_getc(f);   palette_type = fp_getc(f);   image_type = fp_getc(f);   first_color = fp_igetw(f);   palette_colors  = fp_igetw(f);   palette_entry_size = fp_getc(f);   left = fp_igetw(f);   top = fp_igetw(f);   image_width = fp_igetw(f);   image_height = fp_igetw(f);   bpp = fp_getc(f);   descriptor_bits = fp_getc(f);   MGUI_RWread (f, image_id, 1, id_length);   image_id [id_length - 1] = '\0';#if 0    fprintf (stderr, "TGA image id: %s, bpp: %d, colors: %d\n", image_id, bpp, palette_colors);#endif   MGUI_RWread (f, image_palette, 1, palette_colors*3);   /* Image type:    *    0 = no image data    *    1 = uncompressed color mapped    *    2 = uncompressed true color    *    3 = grayscale    *    9 = RLE color mapped    *   10 = RLE true color    *   11 = RLE grayscale    */   compressed = (image_type & 8);   image_type &= 7;   if ((image_type < 1) || (image_type > 3)) {      return ERR_BMP_NOT_SUPPORTED;   }   switch (image_type) {      case 1:         /* paletted image */         if ((palette_type != 1) || (bpp != 8)) {            return ERR_BMP_NOT_SUPPORTED;         }         for(i=0; i<palette_colors; i++) {             pal[i].r = image_palette[i][2];             pal[i].g = image_palette[i][1];             pal[i].b = image_palette[i][0];         }         break;      case 2:         /* truecolor image */         if ((palette_type == 0)                     && ((bpp == 15) || (bpp == 16)                    || (bpp == 24) || (bpp == 32))) {         }         else {            return ERR_BMP_NOT_SUPPORTED;         }         break;      case 3:         /* grayscale image */         if ((palette_type != 0) || (bpp != 8)) {            return ERR_BMP_NOT_SUPPORTED;         }         for (i=0; i<256; i++) {             pal[i].r = i;             pal[i].g = i;             pal[i].b = i;         }         break;      default:         return ERR_BMP_NOT_SUPPORTED;   }    bytes_per_pixel = bmpComputePitch (bpp, image_width, &pitch, TRUE);    size = pitch * image_height;    if( !(bits = malloc (size)) ) {        return ERR_BMP_MEM;    }    bmp->flags = MYBMP_TYPE_RGB;    if (bpp == 24)        bmp->flags |= MYBMP_RGBSIZE_3;    else if (bpp == 32)        bmp->flags |= MYBMP_RGBSIZE_4;    if (descriptor_bits & 0x20)        bmp->flags |= MYBMP_FLOW_DOWN;    else        bmp->flags |= MYBMP_FLOW_UP;    bmp->depth = bpp;    bmp->w     = image_width;    bmp->h     = image_height;    bmp->pitch = (compressed) ? (image_width * bytes_per_pixel): pitch;    bmp->frames = 1;    bmp->size  = size;    bmp->bits  = bits;   for (y=image_height; y; y--) {      switch (image_type) {         case 1:         case 3:            if (compressed) {               rle_tga_read(bits, image_width * image_height, f);               return ERR_BMP_OK;            }            else               MGUI_RWread (f, bits, 1, image_width);            break;         case 2:            if (bpp == 32) {               if (compressed) {                  rle_tga_read32(bits, image_width * image_height, f);                  return ERR_BMP_OK;               }               else {                  for (x=0; x<image_width; x++) {                     MGUI_RWread (f, rgb, 1, 4);                     bits[x*4+3] = rgb[3];                     bits[x*4+2] = rgb[2];                     bits[x*4+1] = rgb[1];                     bits[x*4+0] = rgb[0];                  }               }            }            else if (bpp == 24) {               if (compressed) {                  rle_tga_read24(bits, image_width * image_height, f);                  return ERR_BMP_OK;               }               else {                  for (x=0; x<image_width; x++) {                     MGUI_RWread (f, rgb, 1, 3);                     bits[x*3+2] = rgb[2];                     bits[x*3+1] = rgb[1];                     bits[x*3+0] = rgb[0];                  }               }            }            else {               if (compressed) {                  rle_tga_read16((unsigned short *)bits, image_width * image_height, f);                  return ERR_BMP_OK;               }               else {                  s = (unsigned short *)bits;                  for (x=0; x<image_width; x++) {                     s [x] = fp_igetw(f);                  }               }            }            break;      }      bits += pitch;   }   return ERR_BMP_OK;}#if 0/* save_tga: *  Writes a bitmap into a TGA file, using the specified palette (this *  should be an array of at least 256 RGB structures). */int save_tga(char *filename, BITMAP *bmp, RGB *pal){   unsigned char image_palette[256][3];   int x, y, c, r, g, b;   int depth;   FILE *f;   PALETTE tmppal;   if (!pal) {      get_palette(tmppal);      pal = tmppal;   }   depth = bitmap_color_depth(bmp);   if (depth == 15)      depth = 16;   f = fp_fopen(filename, F_WRITE);   if (!f)      return *allegro_errno;   fp_putc(0, f);                          /* id length (no id saved) */   fp_putc((depth == 8) ? 1 : 0, f);       /* palette type */   fp_putc((depth == 8) ? 1 : 2, f);       /* image type */   fp_iputw(0, f);                         /* first colour */   fp_iputw((depth == 8) ? 256 : 0, f);    /* number of colours */   fp_putc((depth == 8) ? 24 : 0, f);      /* palette entry size */   fp_iputw(0, f);                         /* left */   fp_iputw(0, f);                         /* top */   fp_iputw(bmp->w, f);                    /* width */   fp_iputw(bmp->h, f);                    /* height */   fp_putc(depth, f);                      /* bits per pixel */   fp_putc(0, f);                          /* descriptor (bottom to top) */   if (depth == 8) {      for (y=0; y<256; y++) {         image_palette[y][2] = _rgb_scale_6[pal[y].r];         image_palette[y][1] = _rgb_scale_6[pal[y].g];         image_palette[y][0] = _rgb_scale_6[pal[y].b];      }      fp_fwrite(image_palette, 768, f);   }   switch (bitmap_color_depth(bmp)) {      #ifdef ALLEGRO_COLOR8         case 8:            for (y=bmp->h; y; y--)               for (x=0; x<bmp->w; x++)                  fp_putc(getpixel(bmp, x, y-1), f);            break;      #endif      #ifdef ALLEGRO_COLOR16         case 15:            for (y=bmp->h; y; y--) {               for (x=0; x<bmp->w; x++) {                  c = getpixel(bmp, x, y-1);                  r = getr15(c);                  g = getg15(c);                  b = getb15(c);                  c = ((r<<7)&0x7C00) | ((g<<2)&0x3E0) | ((b>>3)&0x1F);                  fp_iputw(c, f);               }            }            break;         case 16:            for (y=bmp->h; y; y--) {               for (x=0; x<bmp->w; x++) {                  c = getpixel(bmp, x, y-1);                  r = getr16(c);                  g = getg16(c);                  b = getb16(c);                  c = ((r<<7)&0x7C00) | ((g<<2)&0x3E0) | ((b>>3)&0x1F);                  fp_iputw(c, f);               }            }            break;      #endif      #ifdef ALLEGRO_COLOR24         case 24:            for (y=bmp->h; y; y--) {               for (x=0; x<bmp->w; x++) {                  c = getpixel(bmp, x, y-1);                  fp_putc(getb24(c), f);                  fp_putc(getg24(c), f);                  fp_putc(getr24(c), f);               }            }            break;      #endif      #ifdef ALLEGRO_COLOR32         case 32:            for (y=bmp->h; y; y--) {               for (x=0; x<bmp->w; x++) {                  c = getpixel(bmp, x, y-1);                  fp_putc(getb32(c), f);                  fp_putc(getg32(c), f);                  fp_putc(getr32(c), f);                  fp_putc(geta32(c), f);               }            }            break;      #endif   }   fp_fclose(f);   return *allegro_errno;}#endif#endif /* _TGA_FILE_SUPPORT */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
北岛玲一区二区三区四区| 欧美一区二区三区啪啪| 婷婷久久综合九色综合伊人色| 欧美va在线播放| 欧美日韩国产一级| 色94色欧美sute亚洲线路一ni| 国产91精品在线观看| 精品伊人久久久久7777人| 日韩**一区毛片| 午夜欧美电影在线观看| 亚洲精品成人a在线观看| 国产精品久久久久久久久久免费看| 久久久午夜精品| 久久久久综合网| 久久综合色婷婷| 欧美成人精品高清在线播放| 日韩欧美一级片| 日韩欧美三级在线| 欧美videossexotv100| 欧美变态口味重另类| 日韩西西人体444www| 91精品国产入口| 3d成人h动漫网站入口| 欧美夫妻性生活| 91精品国产色综合久久ai换脸| 欧美日韩一区二区在线观看 | 久久午夜色播影院免费高清| 精品欧美一区二区三区精品久久 | 欧美日韩夫妻久久| 欧美在线视频你懂得| 色菇凉天天综合网| 精品视频在线视频| 欧美精选一区二区| 欧美一级免费观看| 欧美va在线播放| 国产亚洲成年网址在线观看| 久久久国际精品| 国产精品日日摸夜夜摸av| 《视频一区视频二区| 亚洲国产精品自拍| 蜜桃视频在线观看一区二区| 久久婷婷成人综合色| 欧美日韩在线播放三区| 欧美精品免费视频| 91麻豆精品国产自产在线| 日韩一区二区三区在线观看| 久久久蜜桃精品| 亚洲三级在线免费| 亚洲国产精品久久不卡毛片| 免费国产亚洲视频| 国产精品白丝jk黑袜喷水| 99久久久精品| 欧美军同video69gay| 欧美一级夜夜爽| 久久色在线视频| 中文字幕亚洲综合久久菠萝蜜| 一区二区三区免费在线观看| 日韩av中文字幕一区二区三区| 久久av资源网| 99久久久国产精品| 6080亚洲精品一区二区| 久久午夜色播影院免费高清| 亚洲素人一区二区| 午夜在线成人av| 国产一区91精品张津瑜| 色国产综合视频| 亚洲精品在线三区| 伊人婷婷欧美激情| 精品中文av资源站在线观看| 成人黄色av网站在线| 精品视频色一区| 国产三级欧美三级日产三级99| 中文字幕在线观看一区| 青青青伊人色综合久久| 成a人片亚洲日本久久| 欧美男女性生活在线直播观看| 久久久亚洲精华液精华液精华液| 一区二区久久久久久| 国产精品自拍毛片| 欧美探花视频资源| 中文字幕乱码亚洲精品一区| 亚洲成人三级小说| 成人国产免费视频| 精品美女一区二区三区| 18涩涩午夜精品.www| 久久成人免费网| 色吧成人激情小说| 国产欧美日韩在线观看| 亚洲成人在线观看视频| 91污片在线观看| 久久欧美一区二区| 天天综合色天天综合| 色综合天天综合网天天狠天天| 日韩欧美一级在线播放| 亚洲综合色婷婷| www.成人网.com| 久久尤物电影视频在线观看| 亚洲蜜桃精久久久久久久| 国产黄色91视频| 日韩欧美一二三区| 午夜精品福利一区二区三区av| 99精品视频在线观看| 国产欧美综合在线观看第十页| 美女免费视频一区| 欧美一区二区三区公司| 亚洲成av人片www| 色狠狠桃花综合| 成人欧美一区二区三区在线播放| 国产一本一道久久香蕉| 欧美电影精品一区二区| 丁香天五香天堂综合| 精品久久国产老人久久综合| 日韩电影免费在线看| 欧美人妇做爰xxxⅹ性高电影| 国产欧美精品国产国产专区| 精品一区二区三区在线播放视频| 91精品国产91久久久久久一区二区 | 一区二区三区不卡视频| 成人短视频下载| 精品久久人人做人人爰| 蜜桃视频在线观看一区二区| 欧美一区二区在线观看| 日日嗨av一区二区三区四区| 欧美在线小视频| 香蕉久久一区二区不卡无毒影院 | 麻豆精品精品国产自在97香蕉| 91精品国产综合久久婷婷香蕉| 天堂av在线一区| 色婷婷久久久综合中文字幕 | 亚洲影视在线播放| 日本久久电影网| 一区二区三区高清在线| 在线国产电影不卡| 午夜一区二区三区视频| 欧美一区二区三区视频在线| 麻豆91精品91久久久的内涵| 日韩欧美在线影院| www.亚洲在线| 日日夜夜免费精品| 中文天堂在线一区| 欧美三级乱人伦电影| 黑人巨大精品欧美一区| 亚洲欧美日韩人成在线播放| 在线成人免费视频| 高清在线观看日韩| 亚洲香肠在线观看| 久久久久久久久久久电影| 91片黄在线观看| 久久99精品久久只有精品| 国产精品污污网站在线观看| 欧美日韩国产一区| 成人小视频在线| 天天综合天天综合色| 欧美激情一区二区三区不卡| 欧美图片一区二区三区| 国产精品综合久久| 午夜伦理一区二区| 国产精品乱人伦| 日韩精品一区二区三区三区免费| av在线这里只有精品| 美女一区二区三区| 亚洲色图欧美激情| 久久蜜臀精品av| 91 com成人网| 色综合久久天天| 国产毛片精品视频| 天天做天天摸天天爽国产一区 | 久久久亚洲综合| 欧美美女黄视频| 93久久精品日日躁夜夜躁欧美| 免费久久精品视频| 亚洲国产人成综合网站| 国产精品女同一区二区三区| 欧美一激情一区二区三区| 色综合久久综合中文综合网| 国产成人在线视频网站| 日韩av在线播放中文字幕| 一区二区三区国产豹纹内裤在线| 欧美激情一区三区| 久久综合国产精品| 欧美一级片免费看| 欧美日韩一区成人| 在线视频中文字幕一区二区| 成人中文字幕电影| 国产精品伊人色| 精品一区二区在线播放| 天堂va蜜桃一区二区三区| 一区二区三区影院| 亚洲人成小说网站色在线| 国产婷婷色一区二区三区 | 91久久线看在观草草青青| 国产在线精品一区二区不卡了| 午夜电影一区二区三区| 亚洲一区二区三区在线| 一区二区三区在线观看欧美 | 国产精品乡下勾搭老头1| 蜜桃视频在线观看一区| 青青草国产精品97视觉盛宴 | 欧美日韩亚洲综合| 在线观看91视频|