/* ** $VER: sviewmesa.c 1.00 (24.11.98) ** ** SuperView output driver for AMesaRTL Shared Library ** ** (C) Copyright 1998 Andreas R. Kleinert ** All Rights Reserved. */ #include #include #include #include #include #include #include "gl/outputhandler.h" AmigaMesaRTLContext ctx; struct Library *mesadriverBase; __asm __saveds int InitOutputHandlerA(register __a0 AmigaMesaRTLContext mesacontext, register __a1 struct TagItem *tags) { long mode; ctx = mesacontext; if (!(mesadriverBase = (struct Library *) GetTagData(OH_DriverBase,NULL,tags))) return(0); if(!stricmp(GetTagData(OH_OutputType,"",tags),"window")) if (!GetTagData(OH_Output,0,tags)) return(0); AmigaMesaRTLGetContextAttr(AMRTL_Mode,mesacontext,&mode); if(mode == AMRTL_RGBAMode) { /* init */ return(1); } DeleteOutputHandler(); return(0); } __asm __saveds void DeleteOutputHandler(void) { } __asm __saveds int ResizeOutputHandler(void) { return(1); } ULONG width = 640; ULONG height = 480; __asm __saveds int ProcessOutput(void) { UBYTE *src; ULONG i, j; BPTR handle; char name[64]; if(!FindPort("SViewII.rx")) Execute("SViewII -OPEN_GUI", NULL, Output()); AmigaMesaRTLGetContextAttr(AMRTL_Buffer,ctx, &src); AmigaMesaRTLGetContextAttr(AMRTL_BufferWidth,ctx, &width); sprintf(name, "VMEM:sviewmesa_%lx", &handle); handle = Open(name, MODE_NEWFILE); if(handle) { UBYTE header[64]; UBYTE name2[64]; sprintf(&header[0], "P6\n%ld %ld\n255\n", width, height); FWrite(handle, &header[0], strlen(header), 1); for(i=0; i