/* Unterprogramme für ShowPicasso
** File: tools.c
*/


#include "sp_tools.h"


/* Umwandlung eines String in LONG */

LONG stol(UBYTE *str)
{
 LONG i=NULL,j=strlen(str),l=NULL;

 if(!str) return(NULL);

 while((i < j) && (str[i] > 47) && (str[i] < 58))
 {
  l += (str[i] - 48);
  l *= 10;
  i++;
 }

 return(l / 10);
}

/* Ausgabe von Programmeldungen */

void OutText(UBYTE *str)
{
 if(WBSTART)
 {
  msgreq.es_TextFormat = str;
  if(IntuitionBase) EasyRequest(NULL,&msgreq,NULL,NULL);
 }
 else
 {
  PutStr(str);
  PutStr("\n");
 }
}


/* Öffnen der benötigten Libraries */


BOOL OpenLibs(void)
{
 if(!(IntuitionBase=OpenLibrary("intuition.library",LIBRARY_MIN))) return(FALSE);
 if(!(IconBase=OpenLibrary("icon.library",LIBRARY_MIN)))           return(FALSE);
 if(!(AslBase=OpenLibrary("asl.library",LIBRARY_MIN)))             return(FALSE);
 if(!(GfxBase=OpenLibrary("graphics.library",LIBRARY_MIN)))        return(FALSE);
 if(!(IFFParseBase=OpenLibrary("iffparse.library",LIBRARY_MIN)))   return(FALSE);
 if(!(VilIntuiBase=OpenLibrary("vilintuisup.library",0)))          return(FALSE);
 LocaleBase=OpenLibrary("locale.library",38L);
 return(TRUE);
}


/* Schließen der Libraries  */


void CloseLibs(void)
{
 if(IntuitionBase) CloseLibrary(IntuitionBase);
 if(IconBase) CloseLibrary(IconBase);
 if(AslBase) CloseLibrary(AslBase);
 if(GfxBase) CloseLibrary(GfxBase);
 if(IFFParseBase) CloseLibrary(IFFParseBase);
 if(VilIntuiBase) CloseLibrary(VilIntuiBase);
 if(LocaleBase) CloseLibrary(LocaleBase);
}


/* Speicherreservierung */


BOOL GetWorkSpace(VOID)
{
 ULONG workspace = 768L + cbufsize + (ULONG)sizeof(BitMapHeader);

 if(color = AllocVec(workspace,MEMF_PUBLIC|MEMF_CLEAR))
 {
  cbuf = color + 768L;
  bmhd = (BitMapHeader *)(cbuf + cbufsize);
  return(TRUE);
 }
 return(TRUE);
}


/* Freigabe des Speichers */


VOID FreeWorkSpace(VOID)
{
 if(color) FreeVec(color);
}
