windows-nt/Source/XPSP1/NT/multimedia/opengl/toolkits/libtk/tk.h

235 lines
6.2 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*
* (c) Copyright 1993, Silicon Graphics, Inc.
* ALL RIGHTS RESERVED
* Permission to use, copy, modify, and distribute this software for
* any purpose and without fee is hereby granted, provided that the above
* copyright notice appear in all copies and that both the copyright notice
* and this permission notice appear in supporting documentation, and that
* the name of Silicon Graphics, Inc. not be used in advertising
* or publicity pertaining to distribution of the software without specific,
* written prior permission.
*
* THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
* AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
* FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
* GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
* SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
* KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
* LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
* THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
* ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
* POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
*
* US Government Users Restricted Rights
* Use, duplication, or disclosure by the Government is subject to
* restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
* (c)(1)(ii) of the Rights in Technical Data and Computer Software
* clause at DFARS 252.227-7013 and/or in similar or successor
* clauses in the FAR or the DOD or NASA FAR Supplement.
* Unpublished-- rights reserved under the copyright laws of the
* United States. Contractor/manufacturer is Silicon Graphics,
* Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
*
* OpenGL(TM) is a trademark of Silicon Graphics, Inc.
*/
#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
/*
** Window Types
*/
#define TK_RGB 0
#define TK_INDEX 1
#define TK_SINGLE 0
#define TK_DOUBLE 2
#define TK_DIRECT 0
#define TK_INDIRECT 4
#define TK_ACCUM 8
#define TK_ALPHA 16
#define TK_DEPTH 32
#define TK_STENCIL 64
/*
** Window Masks
*/
#define TK_IS_RGB(x) (((x) & TK_INDEX) == 0)
#define TK_IS_INDEX(x) (((x) & TK_INDEX) != 0)
#define TK_IS_SINGLE(x) (((x) & TK_DOUBLE) == 0)
#define TK_IS_DOUBLE(x) (((x) & TK_DOUBLE) != 0)
#define TK_HAS_ACCUM(x) (((x) & TK_ACCUM) != 0)
#define TK_HAS_ALPHA(x) (((x) & TK_ALPHA) != 0)
#define TK_HAS_DEPTH(x) (((x) & TK_DEPTH) != 0)
#define TK_HAS_STENCIL(x) (((x) & TK_STENCIL) != 0)
#define TK_IS_DIRECT(x) (((x) & TK_INDIRECT) == 0)
#define TK_IS_INDIRECT(x) (((x) & TK_INDIRECT) != 0)
/*
** Event Status
*/
#define TK_LEFTBUTTON 1
#define TK_RIGHTBUTTON 2
#define TK_MIDDLEBUTTON 4
#define TK_SHIFT 1
#define TK_CONTROL 2
/*
** Key Codes
*/
#define TK_RETURN 0x0D
#define TK_ESCAPE 0x1B
#define TK_SPACE 0x20
#define TK_LEFT 0x25
#define TK_UP 0x26
#define TK_RIGHT 0x27
#define TK_DOWN 0x28
#define TK_A 'A'
#define TK_B 'B'
#define TK_C 'C'
#define TK_D 'D'
#define TK_E 'E'
#define TK_F 'F'
#define TK_G 'G'
#define TK_H 'H'
#define TK_I 'I'
#define TK_J 'J'
#define TK_K 'K'
#define TK_L 'L'
#define TK_M 'M'
#define TK_N 'N'
#define TK_O 'O'
#define TK_P 'P'
#define TK_Q 'Q'
#define TK_R 'R'
#define TK_S 'S'
#define TK_T 'T'
#define TK_U 'U'
#define TK_V 'V'
#define TK_W 'W'
#define TK_X 'X'
#define TK_Y 'Y'
#define TK_Z 'Z'
#define TK_a 'a'
#define TK_b 'b'
#define TK_c 'c'
#define TK_d 'd'
#define TK_e 'e'
#define TK_f 'f'
#define TK_g 'g'
#define TK_h 'h'
#define TK_i 'i'
#define TK_j 'j'
#define TK_k 'k'
#define TK_l 'l'
#define TK_m 'm'
#define TK_n 'n'
#define TK_o 'o'
#define TK_p 'p'
#define TK_q 'q'
#define TK_r 'r'
#define TK_s 's'
#define TK_t 't'
#define TK_u 'u'
#define TK_v 'v'
#define TK_w 'w'
#define TK_x 'x'
#define TK_y 'y'
#define TK_z 'z'
#define TK_0 '0'
#define TK_1 '1'
#define TK_2 '2'
#define TK_3 '3'
#define TK_4 '4'
#define TK_5 '5'
#define TK_6 '6'
#define TK_7 '7'
#define TK_8 '8'
#define TK_9 '9'
/*
** Color Macros - Default Windows Logical palette
*/
enum {
TK_BLACK = 0,
TK_RED = 13,
TK_GREEN,
TK_YELLOW,
TK_BLUE,
TK_MAGENTA,
TK_CYAN,
TK_WHITE
};
extern float auxRGBMap[20][3];
#define tkRGBMap auxRGBMap
#define TK_SETCOLOR(x, y) (TK_IS_RGB((x)) ? \
glColor3fv(auxRGBMap[(y)]) : glIndexf((y)))
/*
** RGB Image Structure
*/
typedef struct _TK_RGBImageRec {
GLint sizeX, sizeY;
unsigned char *data;
} TK_RGBImageRec;
/*
** Prototypes
*/
extern void tkInitDisplayMode(GLenum);
extern void tkInitPosition(int, int, int, int);
extern GLenum tkInitWindow(char *);
extern GLenum tkInitWindowAW(char *, BOOL);
extern void tkCloseWindow(void);
extern void tkQuit(void);
extern void tkExec(void);
extern void tkExposeFunc(void (*)(int, int));
extern void tkReshapeFunc(void (*)(int, int));
extern void tkDisplayFunc(void (*)(void));
extern void tkKeyDownFunc(GLenum (*)(int, GLenum));
extern void tkMouseDownFunc(GLenum (*)(int, int, GLenum));
extern void tkMouseUpFunc(GLenum (*)(int, int, GLenum));
extern void tkMouseMoveFunc(GLenum (*)(int, int, GLenum));
extern void tkIdleFunc(void (*)(void));
extern void tkSwapBuffers(void);
extern GLint tkGetColorMapSize(void);
extern void tkGetMouseLoc(int *, int *);
//extern Display *tkGetXDisplay(void);
//extern Window tkGetXWindow(void);
extern void tkSetOneColor(int, float, float, float);
extern void tkSetFogRamp(int, int);
extern void tkSetGreyRamp(void);
extern void tkSetRGBMap(int, float *);
extern TK_RGBImageRec *tkRGBImageLoad(char *);
extern TK_RGBImageRec *tkRGBImageLoadAW(char *, BOOL);
extern TK_RGBImageRec *tkDIBImageLoad(char *);
extern TK_RGBImageRec *tkDIBImageLoadAW(char *, BOOL);
extern GLenum tkCreateStrokeFont(GLuint);
extern GLenum tkCreateOutlineFont(GLuint);
extern GLenum tkCreateFilledFont(GLuint);
extern GLenum tkCreateBitmapFont(GLuint);
extern void tkDrawStr(GLuint, char *);
/* Windows specific routines */
extern HWND tkGetHWND(void);
extern HDC tkGetHDC(void);
extern HGLRC tkGetHRC(void);