mirror of https://github.com/BOINC/boinc.git
130 lines
4.9 KiB
C
Executable File
130 lines
4.9 KiB
C
Executable File
// The contents of this file are subject to the Mozilla Public License
|
|
// Version 1.0 (the "License"); you may not use this file except in
|
|
// compliance with the License. You may obtain a copy of the License at
|
|
// http://www.mozilla.org/MPL/
|
|
//
|
|
// Software distributed under the License is distributed on an "AS IS"
|
|
// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
|
// License for the specific language governing rights and limitations
|
|
// under the License.
|
|
//
|
|
// The Original Code is the Berkeley Open Infrastructure for Network Computing.
|
|
//
|
|
// The Initial Developer of the Original Code is the SETI@home project.
|
|
// Portions created by the SETI@home project are Copyright (C) 2002
|
|
// University of California at Berkeley. All Rights Reserved.
|
|
//
|
|
// Contributor(s):
|
|
//
|
|
|
|
/*
|
|
Contains: Functions to enable build and destory a GL fullscreen context
|
|
|
|
Written by: Geoff Stahl (ggs)
|
|
|
|
Copyright: Copyright © 1999 Apple Computer, Inc., All Rights Reserved
|
|
|
|
Disclaimer: You may incorporate this sample code into your applications without
|
|
restriction, though the sample code has been provided "AS IS" and the
|
|
responsibility for its operation is 100% yours. However, what you are
|
|
not permitted to do is to redistribute the source as "DSC Sample Code"
|
|
after having made changes. If you're going to re-distribute the source,
|
|
we require that you make it clear in the source that the code was
|
|
descended from Apple Sample Code, but that you've made changes.
|
|
|
|
Adapted to BOINC by Eric Heien
|
|
*/
|
|
|
|
// include control --------------------------------------------------
|
|
|
|
#ifndef SetupGL_h
|
|
#define SetupGL_h
|
|
|
|
// includes ---------------------------------------------------------
|
|
|
|
#ifdef __APPLE_CC__
|
|
#include <DrawSprocket/DrawSprocket.h>
|
|
#include <AGL/agl.h>
|
|
#else
|
|
#include <DrawSprocket.h>
|
|
#include <agl.h>
|
|
#include <gl.h>
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
// structures (public) -----------------------------------------------
|
|
|
|
// structure for creating a fullscreen context
|
|
struct structGLInfo // storage for setup info
|
|
{
|
|
SInt16 width; // input: width of drawable (screen width in full screen mode), return: actual width allocated
|
|
SInt16 height; // input: height of drawable (screen height in full screen mode), return: actual height allocated
|
|
UInt32 pixelDepth; // input: requested pixel depth
|
|
GLint aglAttributes[64]; // input: pixel format attributes always required (reset to what was actually allocated)
|
|
AGLPixelFormat fmt; // input: none; output pixel format...
|
|
};
|
|
typedef struct structGLInfo structGLInfo;
|
|
typedef struct structGLInfo * pstructGLInfo;
|
|
|
|
// structure for creating a context from a window
|
|
struct structGLWindowInfo // storage for setup info
|
|
{
|
|
GLint aglAttributes[64]; // input: pixel format attributes always required (reset to what was actually allocated)
|
|
AGLPixelFormat fmt; // input: none; output pixel format...
|
|
// if so renderer check (accel) will look at all renderers vice just the current one
|
|
// if window is not dragable renderer check will either check the single device or short
|
|
// circuit to software if window spans multiple devices
|
|
};
|
|
typedef struct structGLWindowInfo structGLWindowInfo;
|
|
typedef struct structGLWindowInfo * pstructGLWindowInfo;
|
|
|
|
|
|
// public function declarations -------------------------------------
|
|
// Destroys drawable and context
|
|
// Ouputs: *paglDraw, *paglContext and *pdspContext should be 0 on exit
|
|
|
|
OSStatus BuildGLonWindow (WindowPtr pWindow, AGLContext* paglContext, pstructGLWindowInfo pcontextInfo);
|
|
|
|
// same as above but destorys a context that was associated with an existing window, window is left intacted
|
|
OSStatus DestroyGLFromWindow (AGLContext* paglContext, pstructGLWindowInfo pcontextInfo);
|
|
|
|
// Special suspend function to ensure the the GL window is hidden
|
|
OSStatus SuspendFullScreenGL (AGLDrawable aglDraw, AGLContext aglContext);
|
|
|
|
// Special resume function to ensure the the GL window is shown
|
|
OSStatus ResumeFullScreenGL (AGLDrawable aglDraw, AGLContext aglContext);
|
|
|
|
short FindGDHandleFromWindow (WindowPtr pWindow, GDHandle * phgdOnThisDevice);
|
|
|
|
GLuint BuildFontGL (AGLContext ctx, GLint fontID, Style face, GLint size);
|
|
|
|
void DeleteFontGL (GLuint fontList);
|
|
|
|
// Error reporter, can be set to report however the application desires
|
|
void ReportError (char * strError);
|
|
|
|
// Error with numeric code reporter, can be set to report however the application desires
|
|
void ReportErrorNum (char * strError, long numError);
|
|
|
|
// Handle reporting of DSp errors, error code is passed through
|
|
OSStatus DSpReportError (OSStatus error);
|
|
|
|
// Handle reporting of agl errors, error code is passed through
|
|
OSStatus aglReportError (void);
|
|
|
|
// Handle reporting of OpenGL errors, error code is passed through
|
|
OSStatus glReportError (void);
|
|
|
|
void DoUpdate (AGLContext aglContext);
|
|
|
|
extern WindowRef appGLWindow;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // SetupGL_h
|