1848b8605Smrg/*
2848b8605Smrg Copyright (c) 2008, 2009 Apple Inc.
3848b8605Smrg
4848b8605Smrg Permission is hereby granted, free of charge, to any person
5848b8605Smrg obtaining a copy of this software and associated documentation files
6848b8605Smrg (the "Software"), to deal in the Software without restriction,
7848b8605Smrg including without limitation the rights to use, copy, modify, merge,
8848b8605Smrg publish, distribute, sublicense, and/or sell copies of the Software,
9848b8605Smrg and to permit persons to whom the Software is furnished to do so,
10848b8605Smrg subject to the following conditions:
11848b8605Smrg
12848b8605Smrg The above copyright notice and this permission notice shall be
13848b8605Smrg included in all copies or substantial portions of the Software.
14848b8605Smrg
15848b8605Smrg THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16848b8605Smrg EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17848b8605Smrg MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18848b8605Smrg NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
19848b8605Smrg HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20848b8605Smrg WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21848b8605Smrg OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22848b8605Smrg DEALINGS IN THE SOFTWARE.
23848b8605Smrg
24848b8605Smrg Except as contained in this notice, the name(s) of the above
25848b8605Smrg copyright holders shall not be used in advertising or otherwise to
26848b8605Smrg promote the sale, use or other dealings in this Software without
27848b8605Smrg prior written authorization.
28848b8605Smrg*/
29848b8605Smrg
30848b8605Smrg#ifndef APPLE_CGL_H
31848b8605Smrg#define APPLE_CGL_H
32848b8605Smrg
33848b8605Smrg#include <stdio.h>
34848b8605Smrg#include <OpenGL/CGLCurrent.h>
35848b8605Smrg#include <OpenGL/CGLTypes.h>
36848b8605Smrg#include <OpenGL/OpenGL.h>
37848b8605Smrg
38848b8605Smrg/* For GLint and GLsizei on Tiger */
39848b8605Smrg#include <OpenGL/gl.h>
40848b8605Smrg
41848b8605Smrgstruct apple_cgl_api
42848b8605Smrg{
43848b8605Smrg     GLint version_major, version_minor;
44848b8605Smrg     void (*get_version) (GLint * version_major, GLint * version_minor);
45848b8605Smrg
46848b8605Smrg     CGLError(*choose_pixel_format) (const CGLPixelFormatAttribute * attribs,
47848b8605Smrg                                     CGLPixelFormatObj * pix, GLint * npix);
48848b8605Smrg     CGLError(*destroy_pixel_format) (CGLPixelFormatObj pix);
49848b8605Smrg
50848b8605Smrg     CGLError(*clear_drawable) (CGLContextObj ctx);
51848b8605Smrg     CGLError(*flush_drawable) (CGLContextObj ctx);
52848b8605Smrg
53848b8605Smrg     CGLError(*create_context) (CGLPixelFormatObj pix, CGLContextObj share,
54848b8605Smrg                                CGLContextObj * ctx);
55848b8605Smrg     CGLError(*destroy_context) (CGLContextObj pix);
56848b8605Smrg
57848b8605Smrg     CGLError(*set_current_context) (CGLContextObj ctx);
58848b8605Smrg     CGLContextObj(*get_current_context) (void);
59848b8605Smrg   const char *(*error_string) (CGLError error);
60848b8605Smrg
61848b8605Smrg     CGLError(*set_off_screen) (CGLContextObj ctx,
62848b8605Smrg                                GLsizei width, GLsizei height, GLint rowbytes,
63848b8605Smrg                                void *baseaddr);
64848b8605Smrg
65848b8605Smrg     CGLError(*copy_context) (CGLContextObj src, CGLContextObj dst,
66848b8605Smrg                              GLbitfield mask);
67848b8605Smrg
68848b8605Smrg     CGLError(*create_pbuffer) (GLsizei width,
69848b8605Smrg                                GLsizei height,
70848b8605Smrg                                GLenum target,
71848b8605Smrg                                GLenum internalFormat,
72848b8605Smrg                                GLint max_level, CGLPBufferObj * pbuffer);
73848b8605Smrg
74848b8605Smrg     CGLError(*destroy_pbuffer) (CGLPBufferObj pbuffer);
75848b8605Smrg
76848b8605Smrg     CGLError(*set_pbuffer) (CGLContextObj ctx,
77848b8605Smrg                             CGLPBufferObj pbuffer,
78848b8605Smrg                             GLenum face, GLint level, GLint screen);
79848b8605Smrg};
80848b8605Smrg
81848b8605Smrgextern struct apple_cgl_api apple_cgl;
82848b8605Smrg
83848b8605Smrgextern void apple_cgl_init(void);
84848b8605Smrg
85848b8605Smrgextern void *apple_cgl_get_dl_handle(void);
86848b8605Smrg
87848b8605Smrg#endif
88