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

📄 loadimage.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <draw.h>intloadimage(Image *i, Rectangle r, uchar *data, int ndata){	long dy;	int n, bpl;	uchar *a;	int chunk;	chunk = i->display->bufsize - 64;	if(!rectinrect(r, i->r)){		werrstr("loadimage: bad rectangle");		return -1;	}	bpl = bytesperline(r, i->depth);	n = bpl*Dy(r);	if(n > ndata){		werrstr("loadimage: insufficient data");		return -1;	}	ndata = 0;	while(r.max.y > r.min.y){		dy = r.max.y - r.min.y;		if(dy*bpl > chunk)			dy = chunk/bpl;		if(dy <= 0){			werrstr("loadimage: image too wide for buffer");			return -1;		}		n = dy*bpl;		a = bufimage(i->display, 21+n);		if(a == nil){			werrstr("bufimage failed");			return -1;		}		a[0] = 'y';		BPLONG(a+1, i->id);		BPLONG(a+5, r.min.x);		BPLONG(a+9, r.min.y);		BPLONG(a+13, r.max.x);		BPLONG(a+17, r.min.y+dy);		memmove(a+21, data, n);		ndata += n;		data += n;		r.min.y += dy;	}	if(flushimage(i->display, 0) < 0)		return -1;	return ndata;}

⌨️ 快捷键说明

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