Annotation of researchv10dc/630/man/src/p_man/man3/structures.3r, revision 1.1.1.1

1.1       root        1: .ds ZZ DEVELOPMENT PACKAGE
                      2: .TH STRUCTURES 3R "630 MTG"
                      3: .XE "Word"
                      4: .XE "Code"
                      5: .XE "Point"
                      6: .XE "Rectangle"
                      7: .XE "Bitmap"
                      8: .XE "Texture16"
                      9: .XE "Font"
                     10: .XE "Fontchar"
                     11: .XE "msgbuf"
                     12: .XE "message_list"
                     13: .XE "msqid_ds"
                     14: .SH NAME
                     15: structures: Word, Code, Point, Rectangle, Bitmap, Texture16, Font, Fontchar, msgbuf, message_list, msqid_ds \- 630 MTG Structures
                     16: .SH SYNOPSIS
                     17: .ft B
                     18: #include <dmd.h>
                     19: .sp
                     20: #include <font.h>
                     21: .sp
                     22: #include <message.h>
                     23: .SH DESCRIPTION
                     24: In the following summaries,
                     25: all coordinates are screen or Bitmap coordinates
                     26: (which are scaled the same)
                     27: unless specified as window coordinates.
                     28: .I Word ,
                     29: .I Code ,
                     30: .I Point ,
                     31: .I Rectangle ,
                     32: .I Bitmap
                     33: and
                     34: .I Texture16
                     35: are included in a program
                     36: by including
                     37: .BR dmd.h .
                     38: .I Font
                     39: and
                     40: .I Fontchar
                     41: are defined in
                     42: .BR font.h .
                     43: .IR Msgbuf ,
                     44: .IR message_list ,
                     45: and
                     46: .I msqid_ds
                     47: are defined in
                     48: .BR message.h .
                     49: .SH \fIWord\fR
                     50: .RS 3
                     51: .ft CM
                     52: typedef short Word;
                     53: .br
                     54: typedef unsigned short UWord;
                     55: .RE
                     56: .PP
                     57: A
                     58: .I Word
                     59: is a 16-bit integer and is the unit of storage used in the graphics software.
                     60: .SH \fICode\fR
                     61: .RS 3
                     62: .ft CM
                     63: typedef int Code;
                     64: .RE
                     65: .PP
                     66: .I Code
                     67: is the functional constant used in all graphical drawing or copying 
                     68: operations.  Available Codes are:
                     69: .PP
                     70: .RS 3
                     71: .nf
                     72: .ft CM
                     73: F_STORE     target  =  source
                     74: F_OR        target |=  source
                     75: F_XOR       target ^=  source
                     76: F_CLR       target &= ~source
                     77: .fi
                     78: .ft 1
                     79: .RE
                     80: .SH \fIPoint\fR
                     81: .RS 3
                     82: .nf
                     83: .ft CM
                     84: typedef struct Point {
                     85:    short  x;   /* x-coordinate */
                     86:    short  y;   /* y-coordinate */
                     87: } Point;
                     88: .fi
                     89: .ft 1
                     90: .RE
                     91: .PP
                     92: A
                     93: .I Point
                     94: is a location in a
                     95: .IR Bitmap ,
                     96: such as the display.
                     97: The coordinate system has
                     98: .I x
                     99: increasing to the right and
                    100: .I y
                    101: increasing down.
                    102: .SH \fIRectangle\fR
                    103: .RS 3
                    104: .nf
                    105: .ft CM
                    106: typedef struct Rectangle {
                    107:    Point  origin;        /* Upper left corner */
                    108:    Point  corner;        /* Lower right corner*/
                    109: } Rectangle;
                    110: .fi
                    111: .ft 1
                    112: .RE
                    113: .PP
                    114: A
                    115: .I Rectangle
                    116: is a rectangular area in a
                    117: .IR Bitmap .
                    118: By definition
                    119: .BR "origin.x<=corner.x" " and " "origin.y<=corner.y"
                    120: define the rectangle.
                    121: By convention, the right (maximum \f2x\f1) and bottom (maximum \f2y\f1) edges are
                    122: excluded from the represented rectangle, so abutting rectangles have no
                    123: points in common.  Thus
                    124: .I corner
                    125: is the coordinates of the first point beyond the rectangle.
                    126: The data on the screen of the 630 MTG is contained in the
                    127: .B Rectangle
                    128: \f3{0, 0, \s-1XMAX, YMAX\s+1}\f1
                    129: where
                    130: \f3\s-1XMAX\s+1=1024\f1
                    131: and
                    132: \f3\s-1YMAX\s+1=1024\f1.
                    133: .SH \fIBitmap\fR
                    134: .RS 3
                    135: .nf
                    136: .ft CM
                    137: typedef struct Bitmap {
                    138:    Word      *base;/* pointer to start of data */
                    139:    unsigned short width;/* width in Words of total data area */
                    140:    Rectangle rect;     /* rectangle describing data area */
                    141:    char      *_null;   /* unused, must always be zero */
                    142: } Bitmap;
                    143: .fi
                    144: .ft 1
                    145: .RE
                    146: .PP
                    147: A
                    148: .I Bitmap
                    149: holds a rectangular image stored in contiguous memory starting at
                    150: .I base.
                    151: Each
                    152: .I width
                    153: words of memory form a scan-line of the image.
                    154: The
                    155: .I rect
                    156: argument
                    157: defines the coordinate system inside the
                    158: .IR Bitmap .
                    159: Argument
                    160: .I rect.origin
                    161: is the location in the
                    162: .I Bitmap
                    163: of the upper-leftmost point in the image
                    164: and is not necessarily (0,0).
                    165: Graphical operations performed on a \f2Bitmap\f1 are clipped to
                    166: .I rect.
                    167: .SH \fITexture16\fR
                    168: .RS 3
                    169: .nf
                    170: .ft CM
                    171: typedef struct Texture16 {
                    172:        Word   bits[16];
                    173: } Texture16;
                    174: .fi
                    175: .ft 1
                    176: .RE
                    177: .PP
                    178: A
                    179: .I Texture16
                    180: is a 16\(mu16 bit dot pattern.
                    181: \f2Texture16\f1's
                    182: are aligned to absolute display positions,
                    183: so adjacent areas colored with the same
                    184: .I Texture16
                    185: align smoothly.
                    186: .SH \fIFont\fR \fRand \fIFontchar\fR
                    187: .RS 3
                    188: \s-3
                    189: .nf
                    190: .ft CM
                    191: typedef struct Fontchar
                    192: {
                    193:    short         x;       /* left edge of character cell in Font.bits */
                    194:    unsigned char top;     /* first non-zero scan-line of character image */
                    195:    unsigned char bottom;  /* last non-zero scan-line of character image */
                    196:    char          left;    /* offset of baseline from x; used for kerning */
                    197:    unsigned char width;   /* width of baseline for character image */
                    198: } Fontchar;
                    199: 
                    200: typedef struct Font
                    201: {
                    202:    short    n;       /* number of characters in font */
                    203:    char     height;  /* height of the Bitmap bits */
                    204:    char     ascent;  /* top of Bitmap to baseline of character image */
                    205:    long     unused;
                    206:    Bitmap   *bits;   /* Bitmap where the characters are stored */
                    207:    Fontchar info[1]; /* n+1 character descriptors */
                    208: } Font;
                    209: .fi
                    210: .ft 1
                    211: .RE
                    212: .PP
                    213: A
                    214: .I Font
                    215: is a character set.  For each character in a
                    216: .I Font
                    217: there is information stored in a
                    218: .I Fontchar
                    219: structure.  
                    220: .B Font.info[n] 
                    221: is a dummy fontchar descriptor used to determine
                    222: the right edge of the last character in 
                    223: .BR Font.bits .  
                    224: The actual character images in the
                    225: .I Font
                    226: are stored in a single
                    227: .I Bitmap
                    228: pointed to by
                    229: \f2bits\f1.
                    230: The
                    231: .I Bitmap
                    232: contains the bit pattern for each character, arrayed adjacently into a
                    233: long horizontal strip.  The characters in the
                    234: .I Bitmap
                    235: must appear in ASCII order and are aligned on the same baseline.
                    236: Characters in the
                    237: .I Bitmap
                    238: abut exactly, so the width of a character
                    239: .I c
                    240: is
                    241: .BR "Font.info[c+1].x-Font.info[c].x" .
                    242: When a character is displayed on the screen at a point
                    243: .I p ,
                    244: the upper left-hand corner of the rectangle enclosing the
                    245: character image coincides with the point
                    246: .IR p .
                    247: .SH \fImsqid_ds\fR, \fImessage_list\fR and \fImsgbuf\fR
                    248: .RS 3
                    249: .nf
                    250: .ft CM
                    251: typedef struct msgbuf
                    252: {
                    253:    long         mtype;     /* message type */
                    254:    char         mtext[1];      /* text of message */
                    255: } msgbuf;
                    256: 
                    257: typedef struct message_list
                    258: {
                    259:    msgbuf *msg;                        /* the message in the queue */
                    260:    int    size;                        /* size of the message */
                    261:    struct message_list  *next; /* link to next message */
                    262: } message_list;
                    263: 
                    264: typedef struct msqid_ds
                    265: {
                    266:    Struct Proc *cid;           /* creator process id */
                    267:    short               msg_qnum;       /* number of messages */
                    268:    short               msg_qbytes;     /* max number of bytes */
                    269:    Struct Proc *msg_lspid;     /* last process to send */
                    270:    Struct Proc *msg_lrpid;     /* last process to rcv */
                    271:    unsigned long       msg_stime;      /* time of last send */
                    272:    unsigned long       msg_rtime;      /* time of last rcv */
                    273:    unsigned long       msg_ctime;      /* time of last change */
                    274:    message_list        *msg_list;      /* linked list of messages */
                    275:    short               msg_curbytes    /* current # of bytes */
                    276:    short               state;  /* remove queue if cid exits? */
                    277:    long                name;           /* name of queue (key) */
                    278:    struct msqid_ds *next;      /* link to next queue */
                    279: } msqid_ds;
                    280: .ft 1
                    281: .fi
                    282: .RE
                    283: .PP
                    284: A
                    285: .I msqid_ds
                    286: is a message queue. The messages in the queue are kept in a linked list
                    287: referenced by the pointer
                    288: .IR msg_list .
                    289: The actual messages are stored in
                    290: .IR msgbuf s
                    291: which are pointed to by
                    292: .IR message_list .
                    293: .I Msg_qbytes
                    294: is initialized to
                    295: .B MAX_QBYTES
                    296: where
                    297: .B MAX_QBYTES=020000
                    298: (decimal 8192).
                    299: The
                    300: .I msqid_ds
                    301: is stored in a linked list in the 630 so that the number
                    302: of message queues is limited only by memory.
                    303: .SH FILES
                    304: $DMD/include/dmd.h
                    305: .br
                    306: $DMD/include/font.h
                    307: .br
                    308: $DMD/include/message.h

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.