/* * $Id$ * * $Date$ * $Revision$ * * (C) 1999 by Hyperion * All rights reserved * * This file is part of the MiniGL library project * See the file Licence.txt for more details * */ #include "sysinc.h" #include static char rcsid[] UNUSED = "$Id$"; struct Library *UtilityBase = NULL; struct UtilityIFace *IUtility = NULL; struct Library *IntuitionBase = NULL; struct IntuitionIFace *IIntuition = NULL; struct Library *GfxBase = NULL; struct GraphicsIFace *IGraphics = NULL; struct Library *Warp3DBase = NULL; struct Warp3DIFace *IWarp3D = NULL; struct Library *P96Base = NULL; struct P96IFace *IP96 = NULL; struct Device *TimerBase = NULL; struct TimerIFace *ITimer = NULL; struct Library *SysBase = NULL; struct ExecIFace *IExec = NULL; struct Library *DOSBase = NULL; struct DOSIFace *IDOS = NULL; void MGL_SINCOS_Init(void); void InitVertexArray(void); void MGLTerm(void); GLboolean MGLInit(void) { IntuitionBase = IExec->OpenLibrary("intuition.library", 0L); if (IntuitionBase) { IIntuition = (struct IntuitionIFace *)IExec->GetInterface((struct Library *)IntuitionBase, "main", 1, NULL); } GfxBase = IExec->OpenLibrary("graphics.library", 0L); if (GfxBase) { IGraphics = (struct GraphicsIFace *)IExec->GetInterface((struct Library *)GfxBase, "main", 1, NULL); } UtilityBase = IExec->OpenLibrary("utility.library", 0L); if (UtilityBase) { IUtility = (struct UtilityIFace *)IExec->GetInterface((struct Library *)UtilityBase, "main", 1, NULL); } Warp3DBase = IExec->OpenLibrary("Warp3D.library", 4L); if (Warp3DBase) { IWarp3D = (struct Warp3DIFace *)IExec->GetInterface((struct Library *)Warp3DBase, "main", 1, NULL); } P96Base = IExec->OpenLibrary("Picasso96API.library", 1L); if (P96Base) { IP96 = (struct P96IFace *)IExec->GetInterface(P96Base, "main", 1, NULL); } if (!TimerBase) { TimerBase = (struct Device *)IExec->FindName(&((struct ExecBase *)SysBase)->DeviceList, "timer.device"); } if (TimerBase && !ITimer) { ITimer = (struct TimerIFace *)IExec->GetInterface((struct Library *)TimerBase, "main", 1, NULL); } if ( !IntuitionBase || !GfxBase || !UtilityBase || !P96Base || !Warp3DBase || !IIntuition || !IGraphics || !IUtility || !IWarp3D ) { MGLTerm(); return GL_FALSE; } InitVertexArray(); #ifdef TRIGTABLES MGL_SINCOS_Init(); #endif return GL_TRUE; } void MGLTerm(void) { if (ITimer) { IExec->DropInterface((struct Interface *)ITimer); ITimer = NULL; } if (IIntuition) { IExec->DropInterface((struct Interface *)IIntuition); IIntuition = NULL; } if (IGraphics) { IExec->DropInterface((struct Interface *)IGraphics); IGraphics = NULL; } if (IUtility) { IExec->DropInterface((struct Interface *)IUtility); IUtility = NULL; } if (IWarp3D) { IExec->DropInterface((struct Interface *)IWarp3D); IWarp3D = NULL; } if (IP96) { IExec->DropInterface((struct Interface *)IP96); IP96 = NULL; } if (P96Base) { IExec->CloseLibrary(P96Base); P96Base = NULL; } if (Warp3DBase) { IExec->CloseLibrary(Warp3DBase); Warp3DBase = NULL; } if (IntuitionBase) { IExec->CloseLibrary(IntuitionBase); IntuitionBase = NULL; } if (GfxBase) { IExec->CloseLibrary(GfxBase); GfxBase = NULL; } if (UtilityBase) { IExec->CloseLibrary(UtilityBase); UtilityBase = NULL; } }