/* Make the current context active */ int CGX_GL_MakeCurrent(_THIS) { if(glcont == NULL) return -1; AmigaMesaMakeCurrent(glcont, glcont->buffer); return 0; }
int _glfwPlatformOpenWindow( int width, int height, int redbits, int greenbits, int bluebits, int alphabits, int depthbits, int stencilbits, int mode, int accumredbits, int accumgreenbits, int accumbluebits, int accumalphabits, int auxbuffers, int stereo, int refreshrate ) { struct TagItem tagList[ 25 ]; int tagNR, accumbits; // Calculate sum of accumulator bits accumbits = accumredbits + accumgreenbits + accumbluebits + accumalphabits; // Clear window state _glfwWin.Screen = NULL; _glfwWin.Window = NULL; _glfwWin.Context = NULL; _glfwWin.PointerHidden = 0; _glfwWin.PointerSprite = NULL; _glfwWin.InputMP = NULL; _glfwWin.InputIO = NULL; // Create input.device message port if( !(_glfwWin.InputMP = CreatePort( NULL, 0 )) ) { _glfwPlatformCloseWindow(); return GL_FALSE; } // Create input.device I/O request if( !(_glfwWin.InputIO = (struct IOStdReq *) CreateExtIO( _glfwWin.InputMP, sizeof(struct IOStdReq) )) ) { _glfwPlatformCloseWindow(); return GL_FALSE; } // Open input.device (for pointer position manipulation) if( OpenDevice( "input.device", 0, (struct IORequest *)_glfwWin.InputIO, 0 ) ) { DeleteExtIO( (struct IORequest *) _glfwWin.InputIO ); _glfwWin.InputIO = NULL; _glfwPlatformCloseWindow(); return GL_FALSE; } // Do we want fullscreen? if( _glfwWin.Fullscreen ) { // Open a new Amiga screen if( !_glfwOpenScreen( &width, &height, &redbits, &greenbits, &bluebits, refreshrate ) ) { _glfwWin.Fullscreen = GL_FALSE; } } // Select window properties tagNR = 0; tagList[ tagNR ].ti_Tag = WA_Left; tagList[ tagNR++ ].ti_Data = 0; tagList[ tagNR ].ti_Tag = WA_Top; tagList[ tagNR++ ].ti_Data = 0; tagList[ tagNR ].ti_Tag = WA_IDCMP; tagList[ tagNR++ ].ti_Data = IDCMP_REFRESHWINDOW | IDCMP_CLOSEWINDOW | IDCMP_NEWSIZE | IDCMP_ACTIVEWINDOW | IDCMP_INACTIVEWINDOW | IDCMP_RAWKEY | IDCMP_MOUSEMOVE | IDCMP_MOUSEBUTTONS; tagList[ tagNR ].ti_Tag = WA_ReportMouse; tagList[ tagNR++ ].ti_Data = TRUE; tagList[ tagNR ].ti_Tag = WA_RMBTrap; tagList[ tagNR++ ].ti_Data = TRUE; tagList[ tagNR ].ti_Tag = WA_NoCareRefresh; tagList[ tagNR++ ].ti_Data = FALSE; tagList[ tagNR ].ti_Tag = WA_SimpleRefresh; tagList[ tagNR++ ].ti_Data = TRUE; tagList[ tagNR ].ti_Tag = WA_Activate; tagList[ tagNR++ ].ti_Data = TRUE; tagList[ tagNR ].ti_Tag = WA_CloseGadget; tagList[ tagNR++ ].ti_Data = _glfwWin.Fullscreen ? FALSE : TRUE; tagList[ tagNR ].ti_Tag = WA_SizeGadget; tagList[ tagNR++ ].ti_Data = _glfwWin.Fullscreen ? FALSE : ( _glfwWinHints.WindowNoResize ? FALSE : TRUE ); tagList[ tagNR ].ti_Tag = WA_DepthGadget; tagList[ tagNR++ ].ti_Data = _glfwWin.Fullscreen ? FALSE : TRUE; tagList[ tagNR ].ti_Tag = WA_DragBar; tagList[ tagNR++ ].ti_Data = _glfwWin.Fullscreen ? FALSE : TRUE; tagList[ tagNR ].ti_Tag = WA_Borderless; tagList[ tagNR++ ].ti_Data = _glfwWin.Fullscreen ? TRUE : FALSE; tagList[ tagNR ].ti_Tag = WA_Backdrop; tagList[ tagNR++ ].ti_Data = _glfwWin.Fullscreen ? TRUE : FALSE; if( _glfwWin.Fullscreen ) { tagList[ tagNR ].ti_Tag = WA_CustomScreen; tagList[ tagNR++ ].ti_Data = (ULONG) _glfwWin.Screen; tagList[ tagNR ].ti_Tag = WA_Width; tagList[ tagNR++ ].ti_Data = width; tagList[ tagNR ].ti_Tag = WA_Height; tagList[ tagNR++ ].ti_Data = height; } else { tagList[ tagNR ].ti_Tag = WA_GimmeZeroZero; tagList[ tagNR++ ].ti_Data = TRUE; tagList[ tagNR ].ti_Tag = WA_InnerWidth; tagList[ tagNR++ ].ti_Data = width; tagList[ tagNR ].ti_Tag = WA_InnerHeight; tagList[ tagNR++ ].ti_Data = height; tagList[ tagNR ].ti_Tag = WA_MinWidth; tagList[ tagNR++ ].ti_Data = 20; tagList[ tagNR ].ti_Tag = WA_MinHeight; tagList[ tagNR++ ].ti_Data = 20; tagList[ tagNR ].ti_Tag = WA_MaxWidth; tagList[ tagNR++ ].ti_Data = 9999; tagList[ tagNR ].ti_Tag = WA_MaxHeight; tagList[ tagNR++ ].ti_Data = 9999; tagList[ tagNR ].ti_Tag = WA_Title; tagList[ tagNR++ ].ti_Data = (ULONG) "GLFW Window"; tagList[ tagNR ].ti_Tag = WA_ScreenTitle; tagList[ tagNR++ ].ti_Data = (ULONG) "GLFW Application"; } tagList[ tagNR ].ti_Tag = TAG_DONE; // Open window _glfwWin.Window = OpenWindowTagList( NULL, tagList ); if( !_glfwWin.Window ) { _glfwPlatformCloseWindow(); return GL_FALSE; } // Fullscreen/windowed post fixups if( _glfwWin.Fullscreen ) { // Don't show screen title ShowTitle( _glfwWin.Screen, FALSE ); // Remember window size _glfwWin.Width = _glfwWin.Window->Width; _glfwWin.Height = _glfwWin.Window->Height; } else { // If we are not in fullscreen mode, get screen handle from window _glfwWin.Screen = _glfwWin.Window->WScreen; // Get ModeID for the current video mode _glfwWin.ModeID = GetVPModeID( &_glfwWin.Screen->ViewPort ); // Remember window size _glfwWin.Width = _glfwWin.Window->GZZWidth; _glfwWin.Height = _glfwWin.Window->GZZHeight; } // Put window on top WindowToFront( _glfwWin.Window ); // Create OpenGL context #ifdef _GLFW_STORMMESA tagNR = 0; tagList[ tagNR ].ti_Tag = AMA_Window; tagList[ tagNR++ ].ti_Data = (ULONG) _glfwWin.Window; tagList[ tagNR ].ti_Tag = AMA_RastPort; tagList[ tagNR++ ].ti_Data = (ULONG) _glfwWin.Window->RPort; tagList[ tagNR ].ti_Tag = AMA_Screen; tagList[ tagNR++ ].ti_Data = (ULONG) _glfwWin.Screen; tagList[ tagNR ].ti_Tag = AMA_Left; tagList[ tagNR++ ].ti_Data = 0; tagList[ tagNR ].ti_Tag = AMA_Bottom; tagList[ tagNR++ ].ti_Data = 0; tagList[ tagNR ].ti_Tag = AMA_Width; tagList[ tagNR++ ].ti_Data = _glfwWin.Width; tagList[ tagNR ].ti_Tag = AMA_Height; tagList[ tagNR++ ].ti_Data = _glfwWin.Height; tagList[ tagNR ].ti_Tag = AMA_DoubleBuf; tagList[ tagNR++ ].ti_Data = GL_TRUE; tagList[ tagNR ].ti_Tag = AMA_RGBMode; tagList[ tagNR++ ].ti_Data = GL_TRUE; tagList[ tagNR ].ti_Tag = AMA_AlphaFlag; tagList[ tagNR++ ].ti_Data = alphabits ? GL_TRUE : GL_FALSE; tagList[ tagNR ].ti_Tag = AMA_NoDepth; tagList[ tagNR++ ].ti_Data = depthbits ? GL_FALSE : GL_TRUE; tagList[ tagNR ].ti_Tag = AMA_NoStencil; tagList[ tagNR++ ].ti_Data = stencilbits ? GL_FALSE : GL_TRUE; tagList[ tagNR ].ti_Tag = AMA_NoAccum; tagList[ tagNR++ ].ti_Data = accumbits ? GL_FALSE : GL_TRUE; tagList[ tagNR ].ti_Tag = AMA_DirectRender; tagList[ tagNR++ ].ti_Data = GL_TRUE; tagList[ tagNR ].ti_Tag = AMA_DrawMode; tagList[ tagNR++ ].ti_Data = AMESA_AGA_C2P; tagList[ tagNR ].ti_Tag = TAG_DONE; _glfwWin.Context = AmigaMesaCreateContext( tagList ); #endif if( !_glfwWin.Context ) { _glfwPlatformCloseWindow(); return GL_FALSE; } // Make current #ifdef _GLFW_STORMMESA AmigaMesaMakeCurrent( _glfwWin.Context, _glfwWin.Context->buffer ); #endif return GL_TRUE; }