[BACK]Return to rasops.h CVS log [TXT][DIR] Up to [local] / sys / dev / rasops

Annotation of sys/dev/rasops/rasops.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: rasops.h,v 1.8 2006/11/29 19:08:22 miod Exp $ */
                      2: /*     $NetBSD: rasops.h,v 1.13 2000/06/13 13:36:54 ad Exp $ */
                      3:
                      4: /*-
                      5:  * Copyright (c) 1999 The NetBSD Foundation, Inc.
                      6:  * All rights reserved.
                      7:  *
                      8:  * This code is derived from software contributed to The NetBSD Foundation
                      9:  * by Andrew Doran.
                     10:  *
                     11:  * Redistribution and use in source and binary forms, with or without
                     12:  * modification, are permitted provided that the following conditions
                     13:  * are met:
                     14:  * 1. Redistributions of source code must retain the above copyright
                     15:  *    notice, this list of conditions and the following disclaimer.
                     16:  * 2. Redistributions in binary form must reproduce the above copyright
                     17:  *    notice, this list of conditions and the following disclaimer in the
                     18:  *    documentation and/or other materials provided with the distribution.
                     19:  * 3. All advertising materials mentioning features or use of this software
                     20:  *    must display the following acknowledgement:
                     21:  *     This product includes software developed by the NetBSD
                     22:  *     Foundation, Inc. and its contributors.
                     23:  * 4. Neither the name of The NetBSD Foundation nor the names of its
                     24:  *    contributors may be used to endorse or promote products derived
                     25:  *    from this software without specific prior written permission.
                     26:  *
                     27:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
                     28:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     29:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     30:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
                     31:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     32:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     33:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     34:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     35:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     36:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     37:  * POSSIBILITY OF SUCH DAMAGE.
                     38:  */
                     39:
                     40: #ifndef _RASOPS_H_
                     41: #define _RASOPS_H_ 1
                     42:
                     43: #ifdef SMALL_KERNEL
                     44: #define        RASOPS_SMALL
                     45: #endif
                     46:
                     47: #include "rasops_glue.h"
                     48:
                     49: struct wsdisplay_font;
                     50:
                     51: /* For rasops_info::ri_flg */
                     52: #define RI_FULLCLEAR   0x0001  /* eraserows() hack to clear full screen */
                     53: #define RI_FORCEMONO   0x0002  /* monochrome output even if we can do color */
                     54: #define RI_BSWAP       0x0004  /* framebuffer endianness doesn't match CPU */
                     55: #define RI_CURSOR      0x0008  /* cursor is switched on */
                     56: #define RI_CLEAR       0x0010  /* clear display on startup */
                     57: #define        RI_CLEARMARGINS 0x0020  /* clear display margins on startup */
                     58: #define RI_CENTER      0x0040  /* center onscreen output */
                     59: #define RI_CURSORCLIP  0x0080  /* cursor is currently clipped */
                     60: #define        RI_ROTATE_CW    0x0100  /* display is rotated, quarter clockwise */
                     61: #define RI_CFGDONE     0x0200  /* rasops_reconfig() completed successfully */
                     62:
                     63: struct rasops_info {
                     64:        /* These must be filled in by the caller */
                     65:        int     ri_depth;       /* depth in bits */
                     66:        u_char  *ri_bits;       /* ptr to bits */
                     67:        int     ri_width;       /* width (pels) */
                     68:        int     ri_height;      /* height (pels) */
                     69:        int     ri_stride;      /* stride in bytes */
                     70:
                     71:        /*
                     72:         * These can optionally be left zeroed out. If you fill ri_font,
                     73:         * but aren't using wsfont, set ri_wsfcookie to -1.
                     74:         */
                     75:        struct  wsdisplay_font *ri_font;
                     76:        int     ri_wsfcookie;   /* wsfont cookie */
                     77:        void    *ri_hw;         /* driver private data; ignored by rasops */
                     78:        int     ri_crow;        /* cursor row */
                     79:        int     ri_ccol;        /* cursor column */
                     80:        int     ri_flg;         /* various operational flags */
                     81:
                     82:        /*
                     83:         * These are optional and will default if zero. Meaningless
                     84:         * on depths other than 15, 16, 24 and 32 bits per pel. On
                     85:         * 24 bit displays, ri_{r,g,b}num must be 8.
                     86:         */
                     87:        u_char  ri_rnum;        /* number of bits for red */
                     88:        u_char  ri_gnum;        /* number of bits for green */
                     89:        u_char  ri_bnum;        /* number of bits for blue */
                     90:        u_char  ri_rpos;        /* which bit red starts at */
                     91:        u_char  ri_gpos;        /* which bit green starts at */
                     92:        u_char  ri_bpos;        /* which bit blue starts at */
                     93:
                     94:        /* These are filled in by rasops_init() */
                     95:        int     ri_emuwidth;    /* width we actually care about */
                     96:        int     ri_emuheight;   /* height we actually care about */
                     97:        int     ri_emustride;   /* bytes per row we actually care about */
                     98:        int     ri_rows;        /* number of rows (characters, not pels) */
                     99:        int     ri_cols;        /* number of columns (characters, not pels) */
                    100:        int     ri_delta;       /* row delta in bytes */
                    101:        int     ri_pelbytes;    /* bytes per pel (may be zero) */
                    102:        int     ri_fontscale;   /* fontheight * fontstride */
                    103:        int     ri_xscale;      /* fontwidth * pelbytes */
                    104:        int     ri_yscale;      /* fontheight * stride */
                    105:        u_char  *ri_origbits;   /* where screen bits actually start */
                    106:        int     ri_xorigin;     /* where ri_bits begins (x) */
                    107:        int     ri_yorigin;     /* where ri_bits begins (y) */
                    108:        int32_t ri_devcmap[16]; /* color -> framebuffer data */
                    109:
                    110:        /* The emulops you need to use, and the screen caps for wscons */
                    111:        struct  wsdisplay_emulops ri_ops;
                    112:        int     ri_caps;
                    113:
                    114:        /* Callbacks so we can share some code */
                    115:        void    (*ri_do_cursor)(struct rasops_info *);
                    116:        void    (*ri_updatecursor)(struct rasops_info *);
                    117:
                    118: #if NRASOPS_ROTATION > 0
                    119:        /* Used to intercept putchar to permit display rotation */
                    120:        struct  wsdisplay_emulops ri_real_ops;
                    121: #endif
                    122: };
                    123:
                    124: #define DELTA(p, d, cast) ((p) = (cast)((caddr_t)(p) + (d)))
                    125:
                    126: /*
                    127:  * rasops_init().
                    128:  *
                    129:  * Integer parameters are the number of rows and columns we'd *like*.
                    130:  *
                    131:  * In terms of optimization, fonts that are a multiple of 8 pixels wide
                    132:  * work the best.
                    133:  *
                    134:  * rasops_init() takes care of rasops_reconfig(). The parameters to both
                    135:  * are the same. If calling rasops_reconfig() to change the font and
                    136:  * ri_wsfcookie >= 0, you must call wsfont_unlock() on it, and reset it
                    137:  * to -1 (or a new, valid cookie).
                    138:  */
                    139:
                    140: /*
                    141:  * Per-depth initialization functions. These should not be called outside
                    142:  * the rasops code.
                    143:  */
                    144: void   rasops1_init(struct rasops_info *);
                    145: void   rasops2_init(struct rasops_info *);
                    146: void   rasops4_init(struct rasops_info *);
                    147: void   rasops8_init(struct rasops_info *);
                    148: void   rasops15_init(struct rasops_info *);
                    149: void   rasops24_init(struct rasops_info *);
                    150: void   rasops32_init(struct rasops_info *);
                    151:
                    152: /* rasops.c */
                    153: int    rasops_init(struct rasops_info *, int, int);
                    154: int    rasops_reconfig(struct rasops_info *, int, int);
                    155: void   rasops_eraserows(void *, int, int, long);
                    156: void   rasops_erasecols(void *, int, int, int, long);
                    157:
                    158: extern const u_char    rasops_isgray[16];
                    159: extern const u_char    rasops_cmap[256*3];
                    160:
                    161: #endif /* _RASOPS_H_ */

CVSweb