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

📄 gd_io_file.c

📁 下载来的一个看图软件的源代码
💻 C
字号:
/*   * io_file.c   *   * Implements the file interface.   *   * As will all I/O modules, most functions are for local use only (called   * via function pointers in the I/O context).   *   * Most functions are just 'wrappers' for standard file functions.   *   * Written/Modified 1999, Philip Warner.   * *//* For platforms with incomplete ANSI defines. Fortunately,   SEEK_SET is defined to be zero by the standard. */#ifndef SEEK_SET#define SEEK_SET 0#endif /* SEEK_SET */#include <math.h>#include <string.h>#include <stdlib.h>#include "gd.h"#include "gdhelpers.h"/* this is used for creating images in main memory */typedef struct fileIOCtx  {    gdIOCtx ctx;    FILE *f;  }fileIOCtx;struct fileIOCtx *fileIOCtxPtr;gdIOCtx *newFileCtx (FILE * f);static int fileGetbuf (gdIOCtx *, void *, int);static int filePutbuf (gdIOCtx *, const void *, int);static void filePutchar (gdIOCtx *, int);static int fileGetchar (gdIOCtx * ctx);static int fileSeek (struct gdIOCtx *, const int);static long fileTell (struct gdIOCtx *);static void gdFreeFileCtx (gdIOCtx * ctx);/* return data as a dynamic pointer */gdIOCtx *gdNewFileCtx (FILE * f){  fileIOCtx *ctx;  ctx = (fileIOCtx *) gdMalloc (sizeof (fileIOCtx));  if (ctx == NULL)    {      return NULL;    }  ctx->f = f;  ctx->ctx.getC = fileGetchar;  ctx->ctx.putC = filePutchar;  ctx->ctx.getBuf = fileGetbuf;  ctx->ctx.putBuf = filePutbuf;  ctx->ctx.tell = fileTell;  ctx->ctx.seek = fileSeek;  ctx->ctx.free = gdFreeFileCtx;  return (gdIOCtx *) ctx;}staticvoidgdFreeFileCtx (gdIOCtx * ctx){  gdFree (ctx);}static intfilePutbuf (gdIOCtx * ctx, const void *buf, int size){  fileIOCtx *fctx;  fctx = (fileIOCtx *) ctx;  return fwrite (buf, 1, size, fctx->f);}static intfileGetbuf (gdIOCtx * ctx, void *buf, int size){  fileIOCtx *fctx;  fctx = (fileIOCtx *) ctx;  return (fread (buf, 1, size, fctx->f));}static voidfilePutchar (gdIOCtx * ctx, int a){  unsigned char b;  fileIOCtx *fctx;  fctx = (fileIOCtx *) ctx;  b = a;  putc (b, fctx->f);}static intfileGetchar (gdIOCtx * ctx){  fileIOCtx *fctx;  fctx = (fileIOCtx *) ctx;  return getc (fctx->f);}static intfileSeek (struct gdIOCtx *ctx, const int pos){  fileIOCtx *fctx;  fctx = (fileIOCtx *) ctx;  return (fseek (fctx->f, pos, SEEK_SET) == 0);}static longfileTell (struct gdIOCtx *ctx){  fileIOCtx *fctx;  fctx = (fileIOCtx *) ctx;  return ftell (fctx->f);}

⌨️ 快捷键说明

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