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

📄 memdraw.h

📁 在x86平台上运行不可信任代码的sandbox。
💻 H
字号:
typedef struct	Memimage Memimage;typedef struct	Memdata Memdata;typedef struct	Memsubfont Memsubfont;typedef struct	Memlayer Memlayer;typedef struct	Memcmap Memcmap;typedef struct	Memdrawparam	Memdrawparam;/* * Memdata is allocated from main pool, but .data from the image pool. * Memdata is allocated separately to permit patching its pointer after * compaction when windows share the image data. * The first word of data is a back pointer to the Memdata, to find * The word to patch. */struct Memdata{	ulong	*base;	/* allocated data pointer */	uchar	*bdata;	/* pointer to first byte of actual data; word-aligned */	int		ref;		/* number of Memimages using this data */	void*	imref;	int		allocd;	/* is this malloc'd? */};enum {	Frepl		= 1<<0,	/* is replicated */	Fsimple	= 1<<1,	/* is 1x1 */	Fgrey	= 1<<2,	/* is grey */	Falpha	= 1<<3,	/* has explicit alpha */	Fcmap	= 1<<4,	/* has cmap channel */	Fbytes	= 1<<5,	/* has only 8-bit channels */};struct Memimage{	Rectangle	r;		/* rectangle in data area, local coords */	Rectangle	clipr;		/* clipping region */	int		depth;	/* number of bits of storage per pixel */	int		nchan;	/* number of channels */	ulong	chan;	/* channel descriptions */	Memcmap	*cmap;	Memdata	*data;	/* pointer to data; shared by windows in this image */	int		zero;		/* data->bdata+zero==&byte containing (0,0) */	ulong	width;	/* width in words of a single scan line */	Memlayer	*layer;	/* nil if not a layer*/	ulong	flags;	int		shift[NChan];	int		mask[NChan];	int		nbits[NChan];	void	*x;};struct Memcmap{	uchar	cmap2rgb[3*256];	uchar	rgb2cmap[16*16*16];};/* * Subfonts * * given char c, Subfont *f, Fontchar *i, and Point p, one says *	i = f->info+c; *	draw(b, Rect(p.x+i->left, p.y+i->top, *		p.x+i->left+((i+1)->x-i->x), p.y+i->bottom), *		color, f->bits, Pt(i->x, i->top)); *	p.x += i->width; * to draw characters in the specified color (itself a Memimage) in Memimage b. */struct	Memsubfont{	char		*name;	short	n;		/* number of chars in font */	uchar	height;		/* height of bitmap */	char	ascent;		/* top of bitmap to baseline */	Fontchar *info;		/* n+1 character descriptors */	Memimage	*bits;		/* of font */};/* * Encapsulated parameters and information for sub-draw routines. */enum {	Simplesrc=1<<0,	Simplemask=1<<1,	Replsrc=1<<2,	Replmask=1<<3,	Fullsrc=1<<4,	Fullmask=1<<5,};struct	Memdrawparam{	Memimage *dst;	Rectangle	r;	Memimage *src;	Rectangle sr;	Memimage *mask;	Rectangle mr;	int op;	ulong state;	ulong mval;	/* if Simplemask, the mask pixel in mask format */	ulong mrgba;	/* mval in rgba */	ulong sval;	/* if Simplesrc, the source pixel in src format */	ulong srgba;	/* sval in rgba */	ulong sdval;	/* sval in dst format */};/* * Memimage management */extern Memimage*	allocmemimage(Rectangle, ulong);extern Memimage*	allocmemimaged(Rectangle, ulong, Memdata*, void*);extern Memimage*	readmemimage(int);extern Memimage*	creadmemimage(int);extern int	writememimage(int, Memimage*);extern void	freememimage(Memimage*);extern int		loadmemimage(Memimage*, Rectangle, uchar*, int);extern int		cloadmemimage(Memimage*, Rectangle, uchar*, int);extern int		unloadmemimage(Memimage*, Rectangle, uchar*, int);extern ulong*	wordaddr(Memimage*, Point);extern uchar*	byteaddr(Memimage*, Point);extern int		drawclip(Memimage*, Rectangle*, Memimage*, Point*, Memimage*, Point*, Rectangle*, Rectangle*);extern void	memfillcolor(Memimage*, ulong);extern int		memsetchan(Memimage*, ulong);/* * Graphics */extern void	memdraw(Memimage*, Rectangle, Memimage*, Point, Memimage*, Point, int);extern void	memline(Memimage*, Point, Point, int, int, int, Memimage*, Point, int);extern void	mempoly(Memimage*, Point*, int, int, int, int, Memimage*, Point, int);extern void	memfillpoly(Memimage*, Point*, int, int, Memimage*, Point, int);extern void	_memfillpolysc(Memimage*, Point*, int, int, Memimage*, Point, int, int, int, int);extern void	memimagedraw(Memimage*, Rectangle, Memimage*, Point, Memimage*, Point, int);extern int	hwdraw(Memdrawparam*);extern void	memimageline(Memimage*, Point, Point, int, int, int, Memimage*, Point, int);extern void	_memimageline(Memimage*, Point, Point, int, int, int, Memimage*, Point, Rectangle, int);extern Point	memimagestring(Memimage*, Point, Memimage*, Point, Memsubfont*, char*);extern void	memellipse(Memimage*, Point, int, int, int, Memimage*, Point, int);extern void	memarc(Memimage*, Point, int, int, int, Memimage*, Point, int, int, int);extern Rectangle	memlinebbox(Point, Point, int, int, int);extern int	memlineendsize(int);extern void	_memmkcmap(void);extern void	memimageinit(void);/* * Subfont management */extern Memsubfont*	allocmemsubfont(char*, int, int, int, Fontchar*, Memimage*);extern Memsubfont*	openmemsubfont(char*);extern void	freememsubfont(Memsubfont*);extern Point	memsubfontwidth(Memsubfont*, char*);extern Memsubfont*	getmemdefont(void);/* * Predefined  */extern	Memimage*	memwhite;extern	Memimage*	memblack;extern	Memimage*	memopaque;extern	Memimage*	memtransparent;extern	Memcmap	*memdefcmap;/* * Kernel interface */void		memimagemove(void*, void*);/* * Kernel cruft */extern void	rdb(void);extern int		iprint(char*, ...);extern int		drawdebug;/* * doprint interface: numbconv bit strings */extern Memimage*	_allocmemimage(Rectangle, ulong);extern void	_freememimage(Memimage*);extern void	_memfillcolor(Memimage*, ulong);extern int	_loadmemimage(Memimage*, Rectangle, uchar*, int);extern int	_cloadmemimage(Memimage*, Rectangle, uchar*, int);extern int	_unloadmemimage(Memimage*, Rectangle, uchar*, int);extern void _memimageinit(void);extern Memdrawparam *_memimagedrawsetup(Memimage*, Rectangle, Memimage*, Point, Memimage*, Point, int);extern void _memimagedraw(Memdrawparam*);extern ulong _rgbatoimg(Memimage*, ulong);extern ulong _pixelbits(Memimage*, Point);extern ulong _imgtorgba(Memimage*, ulong);extern ulong rgbatoimg(Memimage*, ulong);extern ulong pixelbits(Memimage*, Point);extern ulong imgtorgba(Memimage*, ulong);

⌨️ 快捷键说明

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