[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     ! 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