2 * Copyright (c) 1999, 2000, 2001 Greg Haerr <greg@censoft.com>
4 * Framebuffer drivers header file for Microwindows Screen Drivers
7 /* Linux framebuffer critical sections*/
9 extern volatile int mwdrawing;
10 #define DRAWON ++mwdrawing
11 #define DRAWOFF --mwdrawing
17 typedef unsigned char * ADDR8;
18 typedef unsigned short * ADDR16;
19 typedef unsigned long * ADDR32;
21 /* ROP macro for 16 drawing modes*/
24 /* applyOp w/stored dst*/
25 #define applyOp(op, src, pdst, type) \
47 CHECK("SETTO1", *d); \
63 CHECK("INVERT", *d); \
65 case MWMODE_COPYINVERTED: \
67 CHECK("COPYINVERTED", *d); \
69 case MWMODE_ORINVERTED: \
71 CHECK("ORINVERTED", *d); \
73 case MWMODE_ANDINVERTED: \
75 CHECK("ANDINVERTED", *d); \
77 case MWMODE_ORREVERSE: \
79 CHECK("ORREVERSE", *d); \
81 case MWMODE_ANDREVERSE: \
83 CHECK("ANDREVERSE", *d); \
95 /* applyOp w/return value*/
96 #define DEFINE_applyOpR \
97 static inline int applyOpR(op, src, dst) \
101 return (src) ^ (dst); \
103 return (src) & (dst); \
105 return (src) | (dst); \
108 case MWMODE_SETTO1: \
111 return ~((src) ^ (dst)); \
113 return ~((src) | (dst)); \
115 return ~((src) & (dst)); \
116 case MWMODE_INVERT: \
118 case MWMODE_COPYINVERTED: \
120 case MWMODE_ORINVERTED: \
121 return ~(src) | (dst); \
122 case MWMODE_ANDINVERTED: \
123 return ~(src) & (dst); \
124 case MWMODE_ORREVERSE: \
125 return (src) | ~(dst); \
126 case MWMODE_ANDREVERSE: \
127 return (src) & ~(dst); \
137 extern int gr_mode; /* temp kluge*/
141 void ioctl_getpalette(int start, int len, short *red, short *green,short *blue);
142 void ioctl_setpalette(int start, int len, short *red, short *green,short *blue);
145 void gen_fillrect(PSD psd,MWCOORD x1,MWCOORD y1,MWCOORD x2,MWCOORD y2,
147 MWBOOL set_subdriver(PSD psd, PSUBDRIVER subdriver, MWBOOL init);
148 void get_subdriver(PSD psd, PSUBDRIVER subdriver);
151 PSUBDRIVER select_fb_subdriver(PSD psd);