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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wbmp.c

?? 下載來的一個看圖軟件的源代碼
?? C
字號:
/* WBMP   ** ----   ** WBMP Level 0: B/W, Uncompressed   ** This implements the WBMP format as specified in WAPSpec 1.1 and 1.2.   ** It does not support ExtHeaders as defined in the spec. The spec states   ** that a WAP client does not need to implement ExtHeaders.   **   ** (c) 2000 Johan Van den Brande <johan@vandenbrande.com> */#include <stdio.h>#include <stddef.h>#include <stdlib.h>#include <string.h>#include "wbmp.h"#include "gd.h"#include "gdhelpers.h"#ifdef NOTDEF#define __TEST			/* Compile with main function */#define __DEBUG			/* Extra verbose when with __TEST */#define __WRITE			/* readwbmp and writewbmp(stdout) */#define __VIEW			/* view the wbmp on stdout */#endif/* getmbi   ** ------   ** Get a multibyte integer from a generic getin function    ** 'getin' can be getc, with in = NULL   ** you can find getin as a function just above the main function   ** This way you gain a lot of flexibilty about how this package   ** reads a wbmp file. */intgetmbi (int (*getin) (void *in), void *in){  int i, mbi = 0;  do    {      i = getin (in);      if (i < 0)	return (-1);      mbi = mbi << 7 | i & 0x7f;    }  while (i & 0x80);  return (mbi);}/* putmbi   ** ------   ** Put a multibyte intgerer in some kind of output stream   ** I work here with a function pointer, to make it as generic   ** as possible. Look at this function as an iterator on the   ** mbi integers it spits out.   ** */voidputmbi (int i, void (*putout) (int c, void *out), void *out){  int cnt, l, accu;  /* Get number of septets */  cnt = 0;  accu = 0;  while (accu != i)    accu += i & 0x7f << 7 * cnt++;  /* Produce the multibyte output */  for (l = cnt - 1; l > 0; l--)    putout (0x80 | (i & 0x7f << 7 * l) >> 7 * l, out);  putout (i & 0x7f, out);}/* skipheader   ** ----------   ** Skips the ExtHeader. Not needed for the moment   ** */intskipheader (int (*getin) (void *in), void *in){  int i;  do    {      i = getin (in);      if (i < 0)	return (-1);    }  while (i & 0x80);  return (0);}/* create wbmp   ** -----------   ** create an empty wbmp   ** */Wbmp *createwbmp (int width, int height, int color){  int i;  Wbmp *wbmp;  if ((wbmp = (Wbmp *) gdMalloc (sizeof (Wbmp))) == NULL)    return (NULL);  if ((wbmp->bitmap = (int *) gdMalloc (sizeof (int) * width * height)) == NULL)    {      gdFree (wbmp);      return (NULL);    }  wbmp->width = width;  wbmp->height = height;  for (i = 0; i < width * height; wbmp->bitmap[i++] = color);  return (wbmp);}/* readwbmp   ** -------   ** Actually reads the WBMP format from an open file descriptor   ** It goes along by returning a pointer to a WBMP struct.   ** */intreadwbmp (int (*getin) (void *in), void *in, Wbmp ** return_wbmp){  int row, col, byte, pel, pos;  Wbmp *wbmp;  if ((wbmp = (Wbmp *) gdMalloc (sizeof (Wbmp))) == NULL)    return (-1);  wbmp->type = getin (in);  if (wbmp->type != 0)    {      gdFree (wbmp);      return (-1);    }  if (skipheader (getin, in))    return (-1);  wbmp->width = getmbi (getin, in);  if (wbmp->width == -1)    {      gdFree (wbmp);      return (-1);    }  wbmp->height = getmbi (getin, in);  if (wbmp->height == -1)    {      gdFree (wbmp);      return (-1);    }#ifdef __DEBUG  printf ("W: %d, H: %d\n", wbmp->width, wbmp->height);#endif  if ((wbmp->bitmap = (int *) gdMalloc (sizeof (int) * wbmp->width * wbmp->height)) == NULL)    {      gdFree (wbmp);      return (-1);    }#ifdef __DEBUG  printf ("DATA CONSTRUCTED\n");#endif  pos = 0;  for (row = 0; row < wbmp->height; row++)    {      for (col = 0; col < wbmp->width;)	{	  byte = getin (in);	  for (pel = 7; pel >= 0; pel--)	    {	      if (col++ < wbmp->width)		{		  if (byte & 1 << pel)		    {		      wbmp->bitmap[pos] = WBMP_WHITE;		    }		  else		    {		      wbmp->bitmap[pos] = WBMP_BLACK;		    }		  pos++;		}	    }	}    }  *return_wbmp = wbmp;  return (0);}/* writewbmp   ** ---------   ** Write a wbmp to a file descriptor   **   ** Why not just giving a filedescriptor to this function?   ** Well, the incentive to write this function was the complete   ** integration in gd library from www.boutell.com. They use   ** their own io functions, so the passing of a function seemed to be    ** a logic(?) decision ...   ** */intwritewbmp (Wbmp * wbmp, void (*putout) (int c, void *out), void *out){  int row, col;  int bitpos, octet;  /* Generate the header */  putout (0, out);		/* WBMP Type 0: B/W, Uncompressed bitmap */  putout (0, out);		/* FixHeaderField */  /* Size of the image */  putmbi (wbmp->width, putout, out);	/* width */  putmbi (wbmp->height, putout, out);	/* height */  /* Image data */  for (row = 0; row < wbmp->height; row++)    {      bitpos = 8;      octet = 0;      for (col = 0; col < wbmp->width; col++)	{	  octet |= ((wbmp->bitmap[row * wbmp->width + col] == 1) ? WBMP_WHITE : WBMP_BLACK) << --bitpos;	  if (bitpos == 0)	    {	      bitpos = 8;	      putout (octet, out);	      octet = 0;	    }	}      if (bitpos != 8)	putout (octet, out);    }  return (0);}/* freewbmp   ** --------   ** gdFrees up memory occupied by a WBMP structure   ** */voidfreewbmp (Wbmp * wbmp){  gdFree (wbmp->bitmap);  gdFree (wbmp);}/* printwbmp   ** ---------   ** print a WBMP to stdout for visualisation   ** */voidprintwbmp (Wbmp * wbmp){  int row, col;  for (row = 0; row < wbmp->height; row++)    {      for (col = 0; col < wbmp->width; col++)	{	  if (wbmp->bitmap[wbmp->width * row + col] == WBMP_BLACK)	    {	      putchar ('#');	    }	  else	    {	      putchar (' ');	    }	}      putchar ('\n');    }}#ifdef __TEST/* putout to file descriptor   ** ------------------------- */intputout (int c, void *out){  return (putc (c, (FILE *) out));}/* getin from file descriptor    ** -------------------------- */intgetin (void *in){  return (getc ((FILE *) in));}/* Main function   ** -------------   ** */intmain (int argc, char *argv[]){  FILE *wbmp_file;  Wbmp *wbmp;  wbmp_file = fopen (argv[1], "rb");  if (wbmp_file)    {      readwbmp (&getin, wbmp_file, &wbmp);#ifdef __VIEW#ifdef __DEBUG      printf ("\nVIEWING IMAGE\n");#endif      printwbmp (wbmp);#endif#ifdef __WRITE#ifdef __DEBUG      printf ("\nDUMPING WBMP to STDOUT\n");#endif      writewbmp (wbmp, &putout, stdout);#endif      freewbmp (wbmp);      fclose (wbmp_file);    }}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美mv和日韩mv国产网站| 久久精品免费观看| 色欲综合视频天天天| 成人欧美一区二区三区黑人麻豆 | 亚洲裸体xxx| 一本到三区不卡视频| 亚洲最新在线观看| 欧美一区二区在线播放| 九色porny丨国产精品| 日本一区二区三区dvd视频在线| 国产白丝网站精品污在线入口| 国产欧美一区二区精品仙草咪| 不卡电影一区二区三区| 亚洲综合在线免费观看| 91精品国产一区二区三区 | 精品粉嫩超白一线天av| 国产精品一区二区视频| 国产精品另类一区| 色av一区二区| 激情综合色播激情啊| 国产精品久久久久一区二区三区| 91视频观看免费| 男人操女人的视频在线观看欧美| 精品剧情在线观看| 色综合天天综合在线视频| 日本中文在线一区| 国产日产欧产精品推荐色| 在线观看日韩电影| 91在线云播放| 日本不卡123| 中文字幕一区二区三区乱码在线 | 欧美日韩在线播| 美女视频免费一区| 一区二区三区精品视频| 韩国av一区二区| 亚洲乱码国产乱码精品精小说| 欧美精品日韩一区| 成人听书哪个软件好| 天堂av在线一区| 国产欧美一区二区三区网站| 欧美三级在线播放| 成人动漫av在线| 奇米四色…亚洲| 一区二区三区在线免费视频| 久久综合久久综合久久| 欧美天堂亚洲电影院在线播放| 国产精品1区2区| 免费久久精品视频| 亚洲综合丝袜美腿| 欧美国产乱子伦| 日韩欧美国产综合| 欧美怡红院视频| 成人网在线免费视频| 久久99国产精品免费| 一区二区三区不卡视频在线观看| 国产蜜臀av在线一区二区三区| 91麻豆精品国产91久久久资源速度| 国产喂奶挤奶一区二区三区| 午夜精品一区二区三区免费视频| 91免费国产在线观看| 蜜桃视频免费观看一区| 樱花草国产18久久久久| 欧美精品一区男女天堂| 欧美精品 日韩| 99视频精品免费视频| 九色综合狠狠综合久久| 国产在线日韩欧美| 日韩欧美中文字幕公布| 亚洲福利视频导航| 国产精品久久国产精麻豆99网站| 精品国产一区二区三区忘忧草 | 久久久久久久久久久99999| 欧美福利电影网| 欧美日韩激情一区二区| 欧美性感一类影片在线播放| 99国产欧美另类久久久精品| 亚洲综合999| 国产精品免费视频网站| 久久人人爽人人爽| 日韩欧美一卡二卡| 欧美成人高清电影在线| 精品久久久久香蕉网| 亚洲精品一区二区在线观看| 欧美成人精品福利| 久久噜噜亚洲综合| 久久久91精品国产一区二区三区| 久久免费看少妇高潮| 国产蜜臀av在线一区二区三区| 国产人久久人人人人爽| 中文字幕永久在线不卡| 亚洲美女少妇撒尿| 性欧美大战久久久久久久久| 亚洲 欧美综合在线网络| 男男gaygay亚洲| 国内精品免费**视频| 丁香一区二区三区| 色婷婷久久久久swag精品| 欧美在线999| 日韩女优av电影在线观看| 久久久精品中文字幕麻豆发布| 国产日韩欧美不卡| 在线欧美日韩国产| 日韩欧美电影一区| 在线观看视频91| 日本韩国欧美一区| 日韩视频免费直播| 综合久久给合久久狠狠狠97色| 国产精品国产三级国产aⅴ入口| 亚洲男人的天堂av| 日韩电影在线一区二区| 国产福利不卡视频| 在线看不卡av| 久久亚洲精精品中文字幕早川悠里| 国产女人18水真多18精品一级做| 亚洲人被黑人高潮完整版| 日韩国产欧美一区二区三区| 国产99精品视频| 欧美日韩一区在线| 久久久www成人免费无遮挡大片| 自拍偷拍欧美激情| 奇米一区二区三区av| www.日韩精品| 日韩欧美电影一区| 亚洲美腿欧美偷拍| 国产一区二区在线观看免费| 91精品91久久久中77777| 日韩精品影音先锋| 亚洲理论在线观看| 国产一区二区三区免费观看| 色av一区二区| 中文子幕无线码一区tr| 喷水一区二区三区| 色噜噜狠狠成人网p站| 久久久久高清精品| 日韩av中文字幕一区二区三区| 国产成人免费9x9x人网站视频| 在线观看不卡视频| 国产精品视频在线看| 美女视频网站久久| 欧洲精品在线观看| 中文成人av在线| 韩国av一区二区三区四区| 欧美这里有精品| 国产精品久久久久久久久果冻传媒 | 奇米影视一区二区三区小说| 日本韩国欧美三级| 国产女人18毛片水真多成人如厕 | 91片黄在线观看| 久久精品视频一区二区| 奇米精品一区二区三区在线观看| 在线观看国产91| 亚洲视频中文字幕| 成人动漫在线一区| 欧美国产精品一区二区三区| 久久99久久99精品免视看婷婷| 欧美日韩国产123区| 亚洲欧美综合另类在线卡通| 国产mv日韩mv欧美| 久久久噜噜噜久噜久久综合| 精品中文字幕一区二区| 91精品国产高清一区二区三区| 亚洲va国产天堂va久久en| 91国偷自产一区二区使用方法| 亚洲日本丝袜连裤袜办公室| 99久久免费精品高清特色大片| 国产女人18水真多18精品一级做| 国产精品一二三四| 久久久国产一区二区三区四区小说| 久久精品国产在热久久| 成人avav影音| 日韩一区日韩二区| 91女神在线视频| 一区二区三区在线免费视频| 91福利精品视频| 午夜伦理一区二区| 5月丁香婷婷综合| 久久国产夜色精品鲁鲁99| 精品欧美黑人一区二区三区| 国产在线播精品第三| 国产欧美一区二区精品性色超碰| 成人精品小蝌蚪| 亚洲免费资源在线播放| 欧美色欧美亚洲另类二区| 日韩综合一区二区| 日韩欧美综合在线| 国产福利精品一区| 亚洲日本va午夜在线影院| 欧美在线三级电影| 奇米影视一区二区三区| 久久久五月婷婷| 91亚洲国产成人精品一区二区三 | 日韩精品一二三区| 精品国产一二三区| jizzjizzjizz欧美| 亚洲国产日韩a在线播放性色| 欧美一区二区三区免费在线看 | 国产成人一区在线| 亚洲乱码精品一二三四区日韩在线| 欧美男同性恋视频网站| 九九精品一区二区|