mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
234 lines
6.2 KiB
234 lines
6.2 KiB
/*
|
|
* (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);
|