⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readpcd.c

📁 zgv-5.6,一个Linux系统下的图片浏览器(VGA/SVGA)
💻 C
字号:
/* Zgv v5.0 - GIF, JPEG and PBM/PGM/PPM viewer, for VGA PCs running Linux. * Copyright (C) 1993-1999 Russell Marks. See README for license details. * * readpcd.c - load PhotoCD image files. * Written by Matan Ziv-Av */#ifdef PCD_SUPPORT#include <stdio.h>#include <string.h>#include <stdlib.h>#include <pcd.h>#include "zgv.h"#include "readpnm.h"#include "rc_config.h"#include "rcfile.h"/* for aborted file stuff */static unsigned char *work_bmap, *work_pal;struct PCD_IMAGE *work_img;int read_pcd_file(char *filename,hffunc howfarfunc,unsigned char **bmap,  unsigned char **pal,int *output_type,PICINFO *pp){struct PCD_IMAGE img;int i, x, y, w, h ;*bmap=NULL;*pal=NULL;if(pcd_open(&img,filename)==-1)  return(_PICERR_NOFILE);x = y = w = h = 0 ;if ((pcd_select(&img,cfg.pcdres,0,0,0,pcd_get_rot(&img,0),&x,&y,&w,&h)==-1)||    (pcd_decode(&img)==-1))return(_PICERR_CORRUPT);if((*output_type)!=1)*output_type=3;if((*bmap=malloc(w*(h+3-*output_type)*(*output_type)))==NULL)  return(_PICERR_NOMEM);if((*pal=malloc(768))==NULL)  return(_PICERR_NOMEM);if(*output_type==1){   unsigned char *ptr = *pal;   int r,g,b;    for (r = 16; r < 256; r += 32)     for (g = 16; g < 256; g += 32)	/* colours are 3:3:2 */       for (b = 32; b < 256; b += 64)	 {	   *ptr = r;	   ptr[256] = g;           ptr[512] = b;	   ptr++;	 };};work_img=&img;work_bmap=*bmap;work_pal=*pal;if(*output_type==1)ditherinit(w);for(i=0;i<h;i++)  {     pcd_get_image_line(&img,i,(*bmap)+i*w*(*output_type),PCD_TYPE_BGR,0);     if(*output_type==1)ditherline((*bmap)+i*w,i+1,w);     if(howfarfunc!=NULL) howfarfunc(i+1,h);  }if(*output_type==1)ditherfinish();pcd_close(&img);pp->width=w;pp->height=h;pp->bpp=24;return(_PIC_OK);  }void aborted_file_pcd_cleanup(){free(work_bmap);free(work_pal); pcd_close(work_img);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -