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

📄 loader.c

📁 linux下开源图片codec
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include "loader.h"/* ----------------------------------------------------------------------- */void load_bits_lsb(unsigned char *dst, unsigned char *src, int width,		   int on, int off){    int i,mask,bit;        for (i = 0; i < width; i++) {	mask = 1 << (i & 0x07);	bit  = src[i>>3] & mask;	dst[0] = bit ? on : off;	dst[1] = bit ? on : off;	dst[2] = bit ? on : off;	dst += 3;    }}void load_bits_msb(unsigned char *dst, unsigned char *src, int width,		   int on, int off){    int i,mask,bit;        for (i = 0; i < width; i++) {	mask = 1 << (7 - (i & 0x07));	bit  = src[i>>3] & mask;	dst[0] = bit ? on : off;	dst[1] = bit ? on : off;	dst[2] = bit ? on : off;	dst += 3;    }}void load_gray(unsigned char *dst, unsigned char *src, int width){    int i;    for (i = 0; i < width; i++) {	dst[0] = src[0];	dst[1] = src[0];	dst[2] = src[0];	dst += 3;	src += 1;    }}void load_graya(unsigned char *dst, unsigned char *src, int width){    int i;    for (i = 0; i < width; i++) {	dst[0] = src[0];	dst[1] = src[0];	dst[2] = src[0];	dst += 3;	src += 2;    }}void load_rgba(unsigned char *dst, unsigned char *src, int width){    int i;    for (i = 0; i < width; i++) {	dst[0] = src[0];	dst[1] = src[1];	dst[2] = src[2];	dst += 3;	src += 4;    }}/* ----------------------------------------------------------------------- */int load_add_extra(struct ida_image_info *info, enum ida_extype type,		   unsigned char *data, unsigned int size){    struct ida_extra *extra;    extra = malloc(sizeof(*extra));    if (NULL == extra)	return -1;    memset(extra,0,sizeof(*extra));    extra->data = malloc(size);    if (NULL == extra->data) {	free(extra);	return -1;    }    extra->type = type;    extra->size = size;    memcpy(extra->data,data,size);    extra->next = info->extra;    info->extra = extra;    return 0;};struct ida_extra* load_find_extra(struct ida_image_info *info,				  enum ida_extype type){    struct ida_extra *extra;    for (extra = info->extra; NULL != extra; extra = extra->next)	if (type == extra->type)	    return extra;    return NULL;}int load_free_extras(struct ida_image_info *info){    struct ida_extra *next;    while (NULL != info->extra) {	next = info->extra->next;	free(info->extra->data);	free(info->extra);	info->extra = next;    }    return 0;}/* ----------------------------------------------------------------------- */LIST_HEAD(loaders);LIST_HEAD(writers);void load_register(struct ida_loader *loader){    list_add_tail(&loader->list, &loaders);}#ifdef USE_X11void write_register(struct ida_writer *writer){    list_add_tail(&writer->list, &writers);}#endif

⌨️ 快捷键说明

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