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

📄 mwtypes.h

📁 开放源码实时操作系统源码.
💻 H
📖 第 1 页 / 共 2 页
字号:
#ifndef _MWTYPES_H
#define _MWTYPES_H
/*
 * Copyright (c) 1999, 2000, 2001 Greg Haerr <greg@censoft.com>
 *
 * Exported Microwindows engine typedefs and defines
 */
#define MWPACKED	__attribute__ ((aligned(1), packed))

/* builtin font std names*/
#define MWFONT_SYSTEM_VAR	"System"	/* winSystem 14x16 (ansi)*/
#define MWFONT_GUI_VAR		"Helvetica"	/* winMSSansSerif 11x13 (ansi)*/
#define MWFONT_OEM_FIXED	"Terminal"	/* rom8x16 (oem)*/
#define MWFONT_SYSTEM_FIXED	"SystemFixed"	/* X6x13 (should be ansi)*/

/* Text/GetTextSize encoding flags*/
#define MWTF_ASCII	0x0000	/* 8 bit packing, ascii*/
#define MWTF_UTF8	0x0001	/* 8 bit packing, utf8*/
#define MWTF_UC16	0x0002	/* 16 bit packing, unicode 16*/
#define MWTF_UC32	0x0004	/* 32 bit packing, unicode 32*/
#define MWTF_PACKMASK	0x0007	/* packing mask*/

/* Text alignment flags*/
#define MWTF_TOP	0x0010	/* align on top*/
#define MWTF_BASELINE	0x0020	/* align on baseline*/
#define MWTF_BOTTOM	0x0040	/* align on bottom*/

/* SetFontAttr flags*/
#define MWTF_KERNING	0x1000	/* font kerning*/
#define MWTF_ANTIALIAS	0x2000	/* antialiased output*/
#define MWTF_UNDERLINE	0x4000	/* draw underline*/

/* Drawing modes*/
#define	MWMODE_COPY		0	/* src*/
#define	MWMODE_XOR		1	/* src ^ dst*/
#define	MWMODE_OR		2	/* src | dst*/
#define	MWMODE_AND		3	/* src & dst*/
#define	MWMODE_CLEAR		4	/* 0*/
#define	MWMODE_SETTO1		5	/* 11111111*/ /* obsolete name, will be MWMODE_SET*/
#define	MWMODE_EQUIV		6	/* ~(src ^ dst)*/
#define	MWMODE_NOR		7	/* ~(src | dst)*/
#define	MWMODE_NAND		8	/* ~(src & dst)*/
#define	MWMODE_INVERT		9	/* ~dst*/
#define	MWMODE_COPYINVERTED	10	/* ~src*/
#define	MWMODE_ORINVERTED	11	/* ~src | dst*/
#define	MWMODE_ANDINVERTED	12	/* ~src & dst*/
#define MWMODE_ORREVERSE	13	/* src | ~dst*/
#define	MWMODE_ANDREVERSE	14	/* src & ~dst*/
#define	MWMODE_NOOP		15	/* dst*/
#define	MWMODE_MAX		15

/* Mouse button bits*/
#define MWBUTTON_L	04
#define MWBUTTON_M	02
#define MWBUTTON_R	01

/* Color defines*/
#define MWRGB(r,g,b)	((MWCOLORVAL)(((unsigned char)(r)|\
				((unsigned short)((unsigned char)(g))<<8))|\
				(((unsigned long)(unsigned char)(b))<<16)))
#define MWF_PALINDEX	0x01000000
#define MWPALINDEX(x)	((MWCOLORVAL)MWF_PALINDEX | (x))

/* 
 * ROP blitter opcodes (extensions < 0x10000000 are MWMODE_xxx blit ops)
 */
#define MWROP_EXTENSION		0xff000000L	/* rop extension bits*/

/* copy src -> dst except for transparent color in src*/
#define MWROP_SRCTRANSCOPY	0x11000000L

/* alpha blend src -> dst with constant alpha, alpha value in low 8 bits*/
#define MWROP_BLENDCONSTANT	0x12000000L

/* alpha blend fg/bg color -> dst with src as alpha channel*/
#define MWROP_BLENDFGBG		0x13000000L

/* alpha blend src -> dst with separate per pixel alpha channel*/
#define MWROP_BLENDCHANNEL	0x14000000L

/* stretch src -> dst*/
#define MWROP_STRETCH		0x15000000L

/* blits rops based on src/dst binary operations*/
#define MWROP_COPY		(MWMODE_COPY << 24L)
#define	MWROP_XOR		(MWMODE_XOR << 24L)
#define	MWROP_OR		(MWMODE_OR << 24L)
#define MWROP_AND		(MWMODE_AND << 24L)
#define	MWROP_CLEAR		(MWMODE_CLEAR << 24L)
#define	MWROP_SET		(MWMODE_SETTO1 << 24L)
#define	MWROP_EQUIV		(MWMODE_EQUIV << 24L)
#define	MWROP_NOR		(MWMODE_NOR << 24L)
#define	MWROP_NAND		(MWMODE_NAND << 24L)
#define	MWROP_INVERT		(MWMODE_INVERT << 24L)
#define	MWROP_COPYINVERTED	(MWMODE_COPYINVERTED << 24L)
#define	MWROP_ORINVERTED	(MWMODE_ORINVERTED << 24L)
#define	MWROP_ANDINVERTED	(MWMODE_ANDINVERTED << 24L)
#define MWROP_ORREVERSE		(MWMODE_ORREVERSE << 24L)
#define	MWROP_ANDREVERSE	(MWMODE_ANDREVERSE << 24L)
#define	MWROP_NOOP		(MWMODE_NOOP << 24L)

#define MWROP_SRCCOPY		MWROP_COPY	/* obsolete*/
#define MWROP_SRCAND		MWROP_AND	/* obsolete*/
#define MWROP_SRCINVERT		MWROP_XOR	/* obsolete*/
#define MWROP_BLACKNESS     	MWROP_CLEAR	/* obsolete*/

/* convert an MWROP to drawing mode MWMODE value*/
#define MWROP_TO_MODE(op)	((op) >> 24)

/* 
 * Pixel formats
 * Note the two pseudo pixel formats are never returned by display drivers,
 * but rather used as a data structure type in GrArea.  The other
 * types are both returned by display drivers and used as pixel packing
 * specifiers.
 */
#define MWPF_RGB	   0	/* pseudo, convert from packed 32 bit RGB*/
#define MWPF_PIXELVAL	   1	/* pseudo, no convert from packed PIXELVAL*/
#define MWPF_PALETTE	   2	/* pixel is packed 8 bits 1, 4 or 8 pal index*/
#define MWPF_TRUECOLOR0888 3	/* pixel is packed 32 bits 8/8/8 truecolor*/
#define MWPF_TRUECOLOR888  4	/* pixel is packed 24 bits 8/8/8 truecolor*/
#define MWPF_TRUECOLOR565  5	/* pixel is packed 16 bits 5/6/5 truecolor*/
#define MWPF_TRUECOLOR555  6	/* pixel is packed 16 bits 5/5/5 truecolor*/
#define MWPF_TRUECOLOR332  7	/* pixel is packed 8 bits 3/3/2 truecolor*/
#define MWPF_TRUECOLOR233  8	/* pixel is packed 8 bits 2/3/3 truecolor (BGR) */

/*
 * MWPIXELVAL definition: changes based on target system
 * Set using -DMWPIXEL_FORMAT=MWPF_XXX
 *
 * For the Nano-X server, it is important to use the correct MWPF_* value
 * for the MWPIXEL_FORMAT macro in order to match the hardware,
 * while the Nano-X clients that includes this file can get away with
 * a default pixel format of 24-bit color as the client will either:
 *    1) Use the MWPF_PIXELVAL native format when calling GrReadArea, in
 *       which case we have to have enough spare room to hold 32-bit
 *       pixlevalues (hence the default MWPF_TRUECOLOR0888 format), or
 *    2) Will use some other PF_* format, in which case the application
 *       is well aware of which pixel-format it uses and can avoid the
 *       device specific RGB2PIXEL and use RGB2PIXEL565 etc. instead,
 *       and specifiy the pixel fomar as MWPF_TRUECOLOR565 etc. when
 *       calling the GrArea function(s).
 */
#ifndef MWPIXEL_FORMAT
#define MWPIXEL_FORMAT	MWPF_TRUECOLOR0888
#endif

#if defined(__AS386_16__)
/* Force 8 bit palettized display for ELKS*/
#undef MWPIXEL_FORMAT
#define MWPIXEL_FORMAT	MWPF_PALETTE
#endif

#if (MWPIXEL_FORMAT == MWPF_TRUECOLOR565) || (MWPIXEL_FORMAT == MWPF_TRUECOLOR555)
typedef unsigned short MWPIXELVAL;
#else
  #if (MWPIXEL_FORMAT == MWPF_TRUECOLOR332) || (MWPIXEL_FORMAT == MWPF_TRUECOLOR233)
  typedef unsigned char MWPIXELVAL;
  #else
    #if MWPIXEL_FORMAT == MWPF_PALETTE
    typedef unsigned char MWPIXELVAL;
    #else
      typedef unsigned long MWPIXELVAL;
    #endif
  #endif
#endif

/* portrait modes*/
#define MWPORTRAIT_NONE		0x00	/* hw framebuffer, no rotation*/
#define MWPORTRAIT_LEFT		0x01	/* rotate left*/
#define	MWPORTRAIT_RIGHT	0x02	/* rotate right*/
#define MWPORTRAIT_DOWN		0x04	/* upside down*/

/*
 * Type definitions
 */
typedef int		MWCOORD;	/* device coordinates*/
typedef int		MWBOOL;		/* boolean value*/
typedef unsigned char	MWUCHAR;	/* unsigned char*/
typedef unsigned long	MWCOLORVAL;	/* device-independent color value*/
typedef unsigned short	MWIMAGEBITS;	/* bitmap image unit size*/
typedef unsigned long	MWTIMEOUT;	/* timeout value */

/* dbl linked list data structure*/
typedef struct _mwlist {		/* LIST must be first decl in struct*/
	struct _mwlist *next;		/* next item*/
	struct _mwlist *prev;		/* previous item*/
} MWLIST, *PMWLIST;

/* dbl linked list head data structure*/
typedef struct _mwlisthead {
	struct _mwlist *head;		/* first item*/
	struct _mwlist *tail;		/* last item*/
} MWLISTHEAD, *PMWLISTHEAD;

/* Keyboard state modifiers*/
typedef unsigned int	MWKEYMOD;

/* GetScreenInfo structure*/
typedef struct {
	MWCOORD  rows;		/* number of rows on screen */
	MWCOORD  cols;		/* number of columns on screen */
	int 	 xdpcm;		/* dots/centimeter in x direction */
	int 	 ydpcm;		/* dots/centimeter in y direction */
	int	 planes;	/* hw # planes*/
	int	 bpp;		/* hw bpp*/
	long	 ncolors;	/* hw number of colors supported*/
	int 	 fonts;		/* number of built-in fonts */
	int 	 buttons;	/* buttons which are implemented */
	MWKEYMOD modifiers;	/* modifiers which are implemented */
	int	 pixtype;	/* format of pixel value*/
	int	 portrait;	/* current portrait mode*/
	MWBOOL	 fbdriver;	/* true if running mwin fb screen driver*/
	unsigned long rmask;	/* red mask bits in pixel*/
	unsigned long gmask;	/* green mask bits in pixel*/
	unsigned long bmask;	/* blue mask bits in pixel*/
	MWCOORD	 xpos;		/* current x mouse position*/
	MWCOORD	 ypos;		/* current y mouse position*/

/* items below are get/set by the window manager and not used internally*/
	int	vs_width;	/* virtual screen width/height*/
	int	vs_height;
	int	ws_width;	/* workspace width/height*/
	int	ws_height;
} MWSCREENINFO, *PMWSCREENINFO;

/* client side window framebuffer info*/
typedef struct {
	unsigned char *	physpixels;	/* address of real framebuffer*/
	/* note winpixels is only correct in non-portrait modes*/
	unsigned char *	winpixels;	/* address of 0,0 this window in fb*/
	int	pixtype;	/* MWPF_ pixel type*/
	int	bpp;		/* bits per pixel*/
	int	bytespp;	/* bytes per pixel*/
	int	pitch;		/* bytes per scan line for window (=fb pitch)*/
	int	x, y;		/* absolute virtual window coordinates*/
	int	portrait_mode;	/* current portrait mode*/
	MWCOORD	xres;		/* real framebuffer resolution*/
	MWCOORD	yres;
	MWCOORD	xvirtres;	/* virtual framebuffer resolution*/
	MWCOORD	yvirtres;
} MWWINDOWFBINFO;

/* GetFontInfo structure*/
typedef struct {
	int 	maxwidth;	/* maximum width of any char */
	int 	height;		/* height of font in pixels*/
	int 	baseline;	/* baseline (ascent) of font */
	int	firstchar;	/* first character in font*/
	int	lastchar;	/* last character in font*/
	MWBOOL	fixed;		/* TRUE if font is fixed width */
	MWUCHAR	widths[256];	/* table of character widths */
} MWFONTINFO, *PMWFONTINFO;

/* GetFontList structure */
typedef struct {
	char *ttname;		/* TrueType name, eg "Times New Roman Bold" */
	char *mwname;		/* microwin name, eg "timesb" */
} MWFONTLIST, *PMWFONTLIST;

/* logical font descriptor*/

/* font classes - used internally*/
#define MWLF_CLASS_BUILTIN	1	/* Builtin fonts (bitmaps) */
#define MWLF_CLASS_FREETYPE	2	/* FreeType fonts in TT format */
#define MWLF_CLASS_T1LIB	3	/* T1LIB outlined Adobe Type 1 fonts */
#define MWLF_CLASS_ANY		4	/* Any font*/

#define MWLF_FACESIZE		64	/* max facename size*/

/* font type selection - lfOutPrecision*/
#define MWLF_TYPE_DEFAULT	0	/* any font*/
#define MWLF_TYPE_SCALED	4	/* outlined font (tt or adobe)*/
#define MWLF_TYPE_RASTER	5	/* raster only*/
#define MWLF_TYPE_TRUETYPE	7	/* truetype only*/
#define MWLF_TYPE_ADOBE		10	/* adobe type 1 only*/

/* font weights - lfWeight*/
#define MWLF_WEIGHT_DEFAULT	0	/* any weight*/
#define MWLF_WEIGHT_THIN	100	/* thin*/
#define MWLF_WEIGHT_EXTRALIGHT	200
#define MWLF_WEIGHT_LIGHT	300	/* light */
#define MWLF_WEIGHT_NORMAL	400	/* regular*/
#define MWLF_WEIGHT_REGULAR	400
#define MWLF_WEIGHT_MEDIUM	500	/* medium */
#define MWLF_WEIGHT_DEMIBOLD	600
#define MWLF_WEIGHT_BOLD	700	/* bold*/
#define MWLF_WEIGTH_EXTRABOLD	800
#define MWLF_WEIGHT_BLACK	900	/* black */

/* font charset - lfCharSet*/
#define MWLF_CHARSET_ANSI	0	/* win32 ansi*/
#define MWLF_CHARSET_DEFAULT	1	/* any charset*/
#define MWLF_CHARSET_UNICODE	254	/* unicode*/
#define MWLF_CHARSET_OEM	255	/* local hw*/

/* font pitch - lfPitch */
#define MWLF_PITCH_DEFAULT		0	/* any pitch */
#define MWLF_PITCH_ULTRACONDENSED	10
#define MWLF_PITCH_EXTRACONDENSED	20
#define MWLF_PITCH_CONDENSED		30
#define MWLF_PITCH_SEMICONDENSED	40
#define MWLF_PITCH_NORMAL		50
#define MWLF_PITCH_SEMIEXPANDED		60
#define MWLF_PITCH_EXPANDED		70
#define MWLF_PITCH_EXTRAEXPANDED	80
#define MWLF_PITCH_ULTRAEXPANDED	90

/* flags for the GdAddFont function */
#define MWLF_FLAGS_ALIAS	1

typedef struct {
	long	lfHeight;		/* desired height in pixels*/
	long	lfWidth;		/* desired width in pixels or 0*/
	long	lfEscapement;		/* rotation in tenths of degree*/
	long	lfOrientation;		/* not used*/
	long	lfWeight;		/* font weight*/
	MWUCHAR	lfItalic;		/* =1 for italic */
	MWUCHAR	lfUnderline;		/* =1 for underline */
	MWUCHAR	lfStrikeOut;		/* not used*/
	MWUCHAR	lfCharSet;		/* font character set*/
	MWUCHAR	lfOutPrecision;		/* font type selection*/
	MWUCHAR	lfClipPrecision;	/* not used*/
	MWUCHAR	lfQuality;		/* not used*/

	/* the following differs from windows font model*/
	MWUCHAR	lfRoman;		/* =1 for Roman letters (upright) */
	MWUCHAR	lfSerif;		/* =1 for Serifed font */
	MWUCHAR	lfSansSerif;		/* =1 for Sans-serif font */
	MWUCHAR	lfModern;		/* =1 for Modern font */
	MWUCHAR	lfMonospace;		/* =1 for Monospaced font */
	MWUCHAR	lfProportional;		/* =1 for Proportional font */
	MWUCHAR	lfOblique;		/* =1 for Oblique (kind of Italic) */

⌨️ 快捷键说明

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