summaryrefslogtreecommitdiff
path: root/graphics/asymptote/tr.h
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/asymptote/tr.h
Initial commit
Diffstat (limited to 'graphics/asymptote/tr.h')
-rw-r--r--graphics/asymptote/tr.h167
1 files changed, 167 insertions, 0 deletions
diff --git a/graphics/asymptote/tr.h b/graphics/asymptote/tr.h
new file mode 100644
index 0000000000..72d1bef0e0
--- /dev/null
+++ b/graphics/asymptote/tr.h
@@ -0,0 +1,167 @@
+/* This file is released under version 2 of the GNU Library General Public
+ * License (see the files LICENSE.LIBRARY and LICENSE).
+ */
+
+/* $Id: tr.h,v 1.5 1997/07/21 17:34:07 brianp Exp $ */
+
+/*
+ * $Log: 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) Brian Paul
+ *
+ *
+ * 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 __APPLE__
+#include <OpenGL/gl.h>
+#else
+#include <GL/gl.h>
+#endif
+
+
+#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);
+
+extern void trTileBuffer(TRcontext *tr, GLenum format, GLenum type,
+ GLvoid *image);
+
+
+extern void trImageSize(TRcontext *tr, GLint width, GLint height);
+
+extern void trImageBuffer(TRcontext *tr, GLenum format, GLenum type,
+ GLvoid *image);
+
+
+extern void trRowOrder(TRcontext *tr, TRenum order);
+
+
+extern GLint trGet(TRcontext *tr, TRenum param);
+
+
+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);
+
+extern void trPerspective(TRcontext *tr,
+ GLdouble fovy, GLdouble aspect,
+ GLdouble zNear, GLdouble zFar );
+
+
+extern void trBeginTile(TRcontext *tr);
+
+extern int trEndTile(TRcontext *tr);
+
+
+extern void trRasterPos3f(TRcontext *tr, GLfloat x, GLfloat y, GLfloat z);
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif