Home | History | Annotate | Download | only in main
      1 /**
      2  * \file dlist.h
      3  * Display lists management.
      4  */
      5 
      6 /*
      7  * Mesa 3-D graphics library
      8  *
      9  * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
     10  *
     11  * Permission is hereby granted, free of charge, to any person obtaining a
     12  * copy of this software and associated documentation files (the "Software"),
     13  * to deal in the Software without restriction, including without limitation
     14  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
     15  * and/or sell copies of the Software, and to permit persons to whom the
     16  * Software is furnished to do so, subject to the following conditions:
     17  *
     18  * The above copyright notice and this permission notice shall be included
     19  * in all copies or substantial portions of the Software.
     20  *
     21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     22  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     23  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
     24  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
     25  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
     26  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
     27  * OTHER DEALINGS IN THE SOFTWARE.
     28  */
     29 
     30 
     31 
     32 #ifndef DLIST_H
     33 #define DLIST_H
     34 
     35 #include <stdio.h>
     36 #include "main/mtypes.h"
     37 
     38 
     39 /**
     40  * Describes the location and size of a glBitmap image in a texture atlas.
     41  */
     42 struct gl_bitmap_glyph
     43 {
     44    unsigned short x, y, w, h;  /**< position and size in the texture */
     45    float xorig, yorig;         /**< bitmap origin */
     46    float xmove, ymove;         /**< rasterpos move */
     47 };
     48 
     49 
     50 /**
     51  * Describes a set of glBitmap display lists which live in a texture atlas.
     52  * The idea is when we see a code sequence of glListBase(b), glCallLists(n)
     53  * we're probably drawing bitmap font glyphs.  We try to put all the bitmap
     54  * glyphs into one texture map then render the glCallLists as a textured
     55  * quadstrip.
     56  */
     57 struct gl_bitmap_atlas
     58 {
     59    bool complete;     /**< Is the atlas ready to use? */
     60    bool incomplete;   /**< Did we fail to construct this atlas? */
     61 
     62    unsigned numBitmaps;
     63    unsigned texWidth, texHeight;
     64    struct gl_texture_object *texObj;
     65    struct gl_texture_image *texImage;
     66 
     67    unsigned glyphHeight;
     68 
     69    struct gl_bitmap_glyph *glyphs;
     70 };
     71 
     72 void
     73 _mesa_delete_bitmap_atlas(struct gl_context *ctx,
     74                           struct gl_bitmap_atlas *atlas);
     75 
     76 
     77 GLboolean GLAPIENTRY
     78 _mesa_IsList(GLuint list);
     79 
     80 void GLAPIENTRY
     81 _mesa_DeleteLists(GLuint list, GLsizei range);
     82 
     83 GLuint GLAPIENTRY
     84 _mesa_GenLists(GLsizei range);
     85 
     86 void GLAPIENTRY
     87 _mesa_NewList(GLuint name, GLenum mode);
     88 
     89 void GLAPIENTRY
     90 _mesa_EndList(void);
     91 
     92 void GLAPIENTRY
     93 _mesa_CallList(GLuint list);
     94 
     95 void GLAPIENTRY
     96 _mesa_CallLists(GLsizei n, GLenum type, const GLvoid *lists);
     97 
     98 void GLAPIENTRY
     99 _mesa_ListBase(GLuint base);
    100 
    101 struct gl_display_list *
    102 _mesa_lookup_list(struct gl_context *ctx, GLuint list);
    103 
    104 void
    105 _mesa_compile_error(struct gl_context *ctx, GLenum error, const char *s);
    106 
    107 void *
    108 _mesa_dlist_alloc(struct gl_context *ctx, GLuint opcode, GLuint sz);
    109 
    110 void *
    111 _mesa_dlist_alloc_aligned(struct gl_context *ctx, GLuint opcode, GLuint bytes);
    112 
    113 GLint
    114 _mesa_dlist_alloc_opcode(struct gl_context *ctx, GLuint sz,
    115                          void (*execute)(struct gl_context *, void *),
    116                          void (*destroy)(struct gl_context *, void *),
    117                          void (*print)(struct gl_context *, void *, FILE *));
    118 
    119 void
    120 _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist);
    121 
    122 void
    123 _mesa_initialize_save_table(const struct gl_context *);
    124 
    125 void
    126 _mesa_install_dlist_vtxfmt(struct _glapi_table *disp,
    127                            const GLvertexformat *vfmt);
    128 
    129 void
    130 _mesa_init_display_list(struct gl_context * ctx);
    131 
    132 void
    133 _mesa_free_display_list_data(struct gl_context *ctx);
    134 
    135 
    136 #endif /* DLIST_H */
    137