home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
back2roots/padua
/
padua.7z
/
padua
/
ftp.vapor.com
/
voyager
/
voyager-sdk.lzx
/
zapster_vplug.c
< prev
next >
Wrap
C/C++ Source or Header
|
2014-05-19
|
7KB
|
306 lines
/*
** Zapster plugin interface
** ------------------------
**
** ⌐ 2000 by David Gerber <zapek@vapor.com>
** All rights reserved
**
** $Id$
**
*/
#define BUILDPLUGIN
#include "v_plugin.h"
#include <exec/memory.h>
#include <dos.h>
#include <dos/dostags.h>
#include <dos/dosextens.h>
#include <libraries/dos.h>
/* MUI */
#include <graphics/gfxmacros.h>
#include <libraries/mui.h>
#include <libraries/gadtools.h>
#include <intuition/intuition.h>
/* Protos */
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/graphics.h>
#include <proto/utility.h>
#include <proto/intuition.h>
#include <proto/muimaster.h>
#include "zapster_mcc.h"
/*
* Some colormaps, bitmaps and bitplanes. We put them to chipram because
* I'm lazy but we should really use AllocBitMap() + remapping but that's
* not so trivial
*/
static ULONG flash_imageCMap32[]={
0x95959595,0x95959595,0x95959595,
0x00000000,0x00000000,0x00000000,
0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
0x3B3B3B3B,0x67676767,0xA2A2A2A2,
0x7B7B7B7B,0x7B7B7B7B,0x7B7B7B7B,
0xAFAFAFAF,0xAFAFAFAF,0xAFAFAFAF,
0xAAAAAAAA,0x90909090,0x7C7C7C7C,
0xFFFFFFFF,0xA9A9A9A9,0x97979797
};
static USHORT __chip flash_imageData[84]={
/* BitPlane 0 */
0x0c00,0x3000,0x7f81,0xfe00,0xefff,0xf100,0x53ff,0xca00,
0x6c7e,0x3200,0x2b81,0xd400,0x34ff,0x2400,0x3524,0xa800,
0x1b24,0xc800,0x0dff,0x9000,0x0701,0x6000,0x01ff,0x8000,
0x0000,0x0000,0x0000,0x0000,
/* BitPlane 1 */
0x0000,0x0000,0x0c00,0x3000,0x7f81,0xfe00,0x3fff,0xfc00,
0x33ff,0xdc00,0x1c7e,0x3800,0x1f00,0xf800,0x1edb,0x7000,
0x0edb,0x7000,0x07ff,0xe000,0x01ff,0x8000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,
/* BitPlane 2 */
0x0000,0x0000,0x8000,0x0100,0x7c00,0x3e00,0xaf81,0xf500,
0xb3ff,0xcd00,0x507e,0x0b00,0x5881,0x1a00,0x1924,0x9600,
0x0d24,0xb400,0x0600,0x6c00,0x01ff,0x9800,0x0200,0x7000,
0x01ff,0xc000,0x0000,0x0000};
static struct BitMap flash_imageBitMap={4,14,0,3,0,(PLANEPTR)&flash_imageData[0],(PLANEPTR)&flash_imageData[28],(PLANEPTR)&flash_imageData[56]};
struct GfxBase *GfxBase;
struct Library *MUIMasterBase;
struct DosLibrary *DOSBase;
struct Library *UtilityBase;
struct IntuitionBase *IntuitionBase;
struct MUI_CustomClass *ZapsterClass;
struct MUI_CustomClass *PrefsClass;
struct vplug_functable *ft;
/*
* Displays a failure message
*/
void Fail(STRPTR txt)
{
static struct IntuiText BodyText = { 255, 255, 0, 4, 4, NULL, NULL, NULL };
static struct IntuiText ContinueText = { 255, 255, 0, 4, 4, NULL, "Ok", NULL };
BodyText.IText = txt;
AutoRequest(NULL, &BodyText, NULL, &ContinueText, 0, 0, 320, 60);
}
// Move lib down the liblist (we're nice, aren't we?)
long __asm __saveds __UserLibInit( register __a6 struct Library *libbase )
{
libbase->lib_Node.ln_Pri = -128;
return( 0 );
}
struct TagItem tags[]á= {
VPLUG_Query_Version, VERSION,
VPLUG_Query_Revision, REVISION,
VPLUG_Query_Copyright, (ULONG)"(C) 2000 David Gerber <zapek@vapor.com>, All Rights Reserved",
VPLUG_Query_Infostring, (ULONG)"Voyager Zapster Demo Plugin",
VPLUG_Query_APIVersion, 2,
VPLUG_Query_RegisterMIMEType, (ULONG)"application/zapster",
VPLUG_Query_PluginID, (ULONG)"Zapster",
VPLUG_Query_HasPrefs, TRUE,
TAG_DONE
};
/*
* Voyager gets some informations
* here
*/
struct TagItem * __asm __saveds VPLUG_Query( void )
{
/*
* So we specify the tags we need
*/
return tags;
}
/*
* Setup function
*/
BOOL __asm __saveds VPLUG_Setup( register __a0 struct vplug_functable *table )
{
if (!(IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 39)))
{
return(FALSE);
}
if (!(MUIMasterBase = OpenLibrary(MUIMASTER_NAME, 18)))
{
Fail("Couldn't open "MUIMASTER_NAME" v18 or higher.");
return(FALSE);
}
GfxBase = (APTR)OpenLibrary( "graphics.library", 39 );
/*
* Setup our main custom classes, subclass of Area class
*/
if (!(ZapsterClass = MUI_CreateCustomClass(NULL, MUIC_Area, NULL, sizeof(struct Data), dispatch)))
{
Fail("Couldn't create custom class.");
return(FALSE);
}
DOSBase = (struct DosLibrary *)ZapsterClass->mcc_DOSBase;
UtilityBase = ZapsterClass->mcc_UtilityBase;
/*
* Setup our preference custom class, subclass of Group class
*/
if (!(PrefsClass = MUI_CreateCustomClass(NULL, MUIC_Group, NULL, sizeof(struct PrefsData), prefs_dispatch)))
{
Fail("Couldn't create custom class.");
return(FALSE);
}
/*
* Now we save the A4 register (this is *NEEDED*
* for a library + dispatchers' hooks)
*/
ZapsterClass->mcc_Class->cl_UserData = PrefsClass->mcc_Class->cl_UserData = getreg(REG_A4);
ft = table;
/*
* This is a good place to setup default prefs
*/
return(TRUE);
}
/* Cleanup */
void __asm __saveds VPLUG_Cleanup( void )
{
if (PrefsClass)
{
MUI_DeleteCustomClass(PrefsClass);
}
if (ZapsterClass)
{
MUI_DeleteCustomClass(ZapsterClass);
}
if (GfxBase)
{
CloseLibrary((APTR)GfxBase);
}
if (MUIMasterBase)
{
CloseLibrary(MUIMasterBase);
}
if (IntuitionBase)
{
CloseLibrary((struct Library *)IntuitionBase);
}
}
/*
* Embedding objects, V will NewObject() it.
* We just return the class here
*/
APTR __asm __saveds VPLUG_GetClass( register __a0 STRPTR mimetype )
{
return(ZapsterClass->mcc_Class);
}
APTR __asm __saveds VPLUG_ProcessURLMethod( register __a0 STRPTR url )
{
return(0); // dummy
}
APTR __asm __saveds VPLUG_GetURLData( register __a0 APTR handle )
{
return(0); // dummy
}
STRPTR __asm __saveds VPLUG_GetURLMIMEType( register __a0 APTR handle )
{
return(0); // dummy
}
void __asm __saveds VPLUG_FreeURLData( register __a0 APTR handle )
{
return; // dummy
}
void __asm __saveds VPLUG_FinalSetup( void )
{
return; // dummy
}
int __asm __saveds VPLUG_GetInfo( register __a0 struct PluginInfo *pi, register __a1 APTR nethandle )
{
return(TRUE); // nothing done
}
int __asm __saveds VPLUG_GetURLDataSize( register __a0 APTR handle)
{
return(0); // dummy
}
void __asm __saveds VPLUG_Hook_Prefs( register __d0 ULONG methodid, register __a0 struct vplug_prefs *prefs )
{
switch(methodid)
{
case VPLUGPREFS_Setup:
/*
* Optionally give the colormap and bitmap
* if we want to display a custom image
* in the preferences.
*/
prefs->bitmap = &flash_imageBitMap;
prefs->colormap = flash_imageCMap32;
break;
case VPLUGPREFS_Create:
/*
* We create the MUI prefs object here
*/
prefs->object = VGroup,
Child, NewObject(PrefsClass->mcc_Class, NULL, TAG_DONE),
End;
break;
case VPLUGPREFS_Dispose:
MUI_DisposeObject(prefs->object);
break;
case VPLUGPREFS_Use:
/*
* Use whatever you want to make the
* current prefs active. Sending a method
* to our prefs object is a good way.
*/
DoMethod(prefs->object, MM_Prefs_StorePrefs);
break;
case VPLUGPREFS_Save:
/*
* Here we should save the prefs to disk. Suggested
* path is PROGDIR:Plugins/Data
*/
break;
}
return;
}