|
|
1.1 ! root 1: /* $Header: Xapollo.h,v 10.1 86/11/29 13:53:26 jg Rel $ */ ! 2: /* ! 3: ! 4: Copyright 1986 by the University of Utah ! 5: ! 6: Permission to use, copy, modify, and distribute this ! 7: software and its documentation for any purpose and without ! 8: fee is hereby granted, provided that the above copyright ! 9: notice appear in all copies and that both that copyright ! 10: notice and this permission notice appear in supporting ! 11: documentation, and that the name of the University of Utah ! 12: not be used in advertising or publicity pertaining to ! 13: distribution of the software without specific, written ! 14: prior permission. The University of Utah makes no ! 15: representations about the suitability of this software for ! 16: any purpose. It is provided "as is" without express or ! 17: implied warranty. ! 18: ! 19: */ ! 20: ! 21: #include <stdio.h> ! 22: #include "/sys/ins/base.ins.c" ! 23: #include "/sys/ins/error.ins.c" ! 24: #include "/sys/ins/gpr.ins.c" ! 25: #include "/sys/ins/pad.ins.c" ! 26: #include "/sys/ins/streams.ins.c" ! 27: #include "/sys/ins/ms.ins.c" ! 28: #include <sys/types.h> ! 29: ! 30: #include <X/X.h> ! 31: #include "../X/vsinput.h" ! 32: #include "../X/Xdev.h" ! 33: ! 34: #define dprintf if(Xdbg) fprintf ! 35: ! 36: #define ConstantPixmap 0x0 /* kinds of pixmaps on apollo, constant */ ! 37: #define BitmapPixmap 0x1 /* and ones with associated bitmaps */ ! 38: #define ZColorPixmap 0x2 /* and (up to) 8-bit color ones */ ! 39: #define XYColorPixmap 0x3 /* in both styles (but they're not done yet) */ ! 40: #define CanBeTiled 1 /* this pixmap can be tiled */ ! 41: #define CannotBeTiled 0 /* this pixmap cannont be tiled */ ! 42: ! 43: #define InvertFlag 0x10 /* pixmap source should be inverted */ ! 44: #define PTYPE(x) (((int) (x)->kind) & 0xf) ! 45: #define PINVERT(x) (((int) (x)->kind) >> 4) ! 46: ! 47: typedef enum { apollo_bitmap, memory_bitmap } BitmapType; ! 48: #define BM_TYPE(bm) ( (BitmapType)((bm)->kind) ) ! 49: #define A_BITMAP(bm) ( (int)((bm)->data ) ) ! 50: #define M_BITMAP(bm) ( (short *)((bm)->data) ) ! 51: ! 52: ! 53: typedef struct _fontpriv { ! 54: int maxwidth; /* maximum width found in the font */ ! 55: short *widths; /* width table (in pixels) */ ! 56: short *leftarray; /* leftarray */ ! 57: boolean ap_font; /* true->Apollo format font */ ! 58: int ap_font_id; /* the font id returned by gpr_$load_font */ ! 59: int ap_font_id_inv; /* ditto for the inverse font */ ! 60: BITMAP *strike; /* the font bitmap (not for Apollo format) */ ! 61: long *chrs; /* chars in independent bitmaps */ ! 62: } FontPriv; ! 63: ! 64: typedef struct _curspriv { ! 65: BITMAP *bits; /* the cursor image */ ! 66: BITMAP *mask; /* the mask bitmap */ ! 67: BITMAP *save; /* a place to save what the cursor covers */ ! 68: int fore, back; ! 69: } CursPriv; ! 70: ! 71: #define CDATA(x) ((CursPriv *) x->data) ! 72: ! 73: #define PDATA(x) ((BITMAP *) x->data) ! 74: ! 75: #define CURSOR_WIDTH 16 ! 76: #define CURSOR_HEIGHT 16 ! 77: ! 78: #define GetNextClip(clips, win) \ ! 79: win.x_coord = clips->left; \ ! 80: win.y_coord = clips->top; \ ! 81: win.x_size = clips->width; \ ! 82: win.y_size = clips->height; \ ! 83: clips++; ! 84: ! 85: #define OverLap(win, x2, y2, w2, h2) \ ! 86: ((win.x_coord < x2+w2) && (win.y_coord < y2+h2) && \ ! 87: (x2 < win.x_coord+win.x_size) && (y2 < win.y_coord+win.y_size)) ! 88: ! 89: #define imin(i,j) ((i)<(j)?(i):(j)) ! 90: ! 91: #define imax(i,j) ((i)>(j)?(i):(j)) ! 92: ! 93: #define set_zmask( zmask ) \ ! 94: { extern long old_zmask; \ ! 95: if (old_zmask != zmask) { \ ! 96: gpr_$set_plane_mask((gpr_$mask_t)(zmask & Screen.plane_mask), status); \ ! 97: old_zmask = zmask; \ ! 98: } \ ! 99: } ! 100: ! 101: #define set_op( op ) \ ! 102: { extern int old_op; \ ! 103: if (old_op != op) { \ ! 104: for (i=0; i<Screen.depth; i++) \ ! 105: gpr_$set_raster_op( (gpr_$plane_t)i, (gpr_$raster_op_t)op, status ); \ ! 106: old_op = op; \ ! 107: } \ ! 108: } ! 109: ! 110: #define CheckCursor(basex, basey, w, h) \ ! 111: { extern int CursorDisplayed; \ ! 112: extern DEVICE *CurrentDevice; \ ! 113: extern CURSOR *CurrentCursor; \ ! 114: int mousex = CurrentDevice->mouse->x; \ ! 115: int mousey = CurrentDevice->mouse->y; \ ! 116: if (CursorDisplayed && \ ! 117: (basex < mousex+CurrentCursor->width) && \ ! 118: (basey < mousey+CurrentCursor->height) && \ ! 119: (mousex < basex+w) && (mousey < basey+h)) \ ! 120: DisplayCursor(NULL); \ ! 121: } ! 122: ! 123: #define RestoreCursor() \ ! 124: { extern int CursorDisplayed; \ ! 125: extern CURSOR *CurrentCursor; \ ! 126: extern DisplayCursor(); \ ! 127: if (!CursorDisplayed) \ ! 128: DisplayCursor(CurrentCursor); \ ! 129: } ! 130: ! 131: extern struct Scr { ! 132: gpr_$plane_t depth; ! 133: gpr_$mask_t plane_mask; ! 134: short width; /* screen width */ ! 135: short height; /* screen height */ ! 136: short line_width; /* halfwords between scan lines */ ! 137: caddr_t ptr; /* memory ptr to bitmap */ ! 138: stream_$id_t fd; /* file descriptor for screen pad */ ! 139: gpr_$bitmap_desc_t bm; /* bitmap descriptor */ ! 140: gpr_$attribute_desc_t ab; /* attribute descriptor */ ! 141: } Screen; ! 142: ! 143: BITMAP * make_bitmap(); ! 144: ! 145: extern int Xdbg; ! 146: ! 147:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.