File: tr.h

package info (click to toggle)
gnubg 1.06.002-1%2Bdeb10u1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 26,608 kB
  • sloc: ansic: 97,578; xml: 15,136; sh: 4,919; yacc: 700; makefile: 582; python: 573; lex: 297; sql: 238; awk: 26
file content (166 lines) | stat: -rw-r--r-- 4,436 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/* $Id: tr.h,v 1.7 2018/04/28 21:40:58 plm Exp $ */

/*
 * $originalLog: tr.h,v $
 * Revision 1.5  1997/07/21  17:34:07  brianp
 * added tile borders, incremented version to 1.1
 *
 * Revision 1.4  1997/07/21  15:47:35  brianp
 * renamed all "near" and "far" variables
 *
 * Revision 1.3  1997/04/26  21:23:25  brianp
 * added trRasterPos3f function
 *
 * Revision 1.2  1997/04/19  23:26:10  brianp
 * many API changes
 *
 * Revision 1.1  1997/04/18  21:53:05  brianp
 * Initial revision
 *
 */


/*
 * Tiled Rendering library
 * Version 1.1
 * Copyright (C) 1997 Brian Paul
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Notice added by Russ Allbery on 2013-07-21 based on the license information
 * in tr-1.3.tar.gz retrieved from <http://www.mesa3d.org/brianp/TR.html>.
 *
 *
 * This library allows one to render arbitrarily large images with OpenGL.
 * The basic idea is to break the image into tiles which are rendered one
 * at a time.  The tiles are assembled together to form the final, large
 * image.  Tiles and images can be of any size.
 *
 * Basic usage:
 *
 * 1. Allocate a tile rendering context:
 *       TRcontext t = trNew();
 *
 * 2. Specify the final image buffer and tile size:
 *       GLubyte image[W][H][4]
 *       trImageSize(t, W, H);
 *       trImageBuffer(t, GL_RGBA, GL_UNSIGNED_BYTE, (GLubyte *) image);
 *
 * 3. Setup your projection:
 *       trFrustum(t, left, right, bottom top, near, far);
 *    or
 *       trOrtho(t, left, right, bottom top, near, far);
 *    or
 *       trPerspective(t, fovy, aspect, near, far);
 *
 * 4. Render the tiles:
 *       do {
 *           trBeginTile(t);
 *           DrawMyScene();
 *       } while (trEndTile(t));
 *
 *    You provide the DrawMyScene() function which calls glClear() and
 *    draws all your stuff.
 *
 * 5. The image array is now complete.  Display it, write it to a file, etc.
 *
 * 6. Delete the tile rendering context when finished:
 *       trDelete(t);
 *
 */


#ifndef TR_H
#define TR_H



#ifdef __cplusplus
extern "C" {
#endif


#define TR_VERSION "1.1"
#define TR_MAJOR_VERSION 1
#define TR_MINOR_VERSION 1


    typedef struct _TRctx TRcontext;


    typedef enum {
        TR_TILE_WIDTH = 100,
        TR_TILE_HEIGHT,
        TR_TILE_BORDER,
        TR_IMAGE_WIDTH,
        TR_IMAGE_HEIGHT,
        TR_ROWS,
        TR_COLUMNS,
        TR_CURRENT_ROW,
        TR_CURRENT_COLUMN,
        TR_CURRENT_TILE_WIDTH,
        TR_CURRENT_TILE_HEIGHT,
        TR_ROW_ORDER,
        TR_TOP_TO_BOTTOM,
        TR_BOTTOM_TO_TOP
    } TRenum;



    extern TRcontext *trNew(void);

    extern void trDelete(TRcontext * tr);


    extern void trTileSize(TRcontext * tr, GLint width, GLint height, GLint border);

#if 0
    extern void trTileBuffer(TRcontext * tr, GLenum format, GLenum type, GLvoid * image);
#endif

    extern void trImageSize(TRcontext * tr, GLuint width, GLuint height);

    extern void trImageBuffer(TRcontext * tr, GLenum format, GLenum type, GLvoid * image);

#if 0
    extern void trRowOrder(TRcontext * tr, TRenum order);


    extern GLint trGet(const TRcontext * tr, TRenum param);
#endif

    extern void trOrtho(TRcontext * tr,
                        GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble znear, GLdouble zfar);

    extern void trFrustum(TRcontext * tr,
                          GLdouble left, GLdouble right,
                          GLdouble bottom, GLdouble top, GLdouble znear, GLdouble zfar);

#if 0
    extern void trPerspective(TRcontext * tr, GLdouble fovy, GLdouble aspect, GLdouble zNearx, GLdouble zFarx);
#endif

    extern void trBeginTile(TRcontext * tr);

    extern int trEndTile(TRcontext * tr);

#if 0
    extern void trRasterPos3d(const TRcontext * tr, GLdouble x, GLdouble y, GLdouble z);
#endif


#ifdef __cplusplus
}
#endif
#endif