home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / GFX / viewer / SVLIBS81.LHA / superview-lib / Programmers / Example_SVObjects / SVO / SV_InfoSubs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-13  |  3.9 KB  |  141 lines

  1.  
  2.  /* SV_InfoSubs.c
  3.     - Functions for SVO-Support -
  4.     (c) 1990-94 by Andreas R. Kleinert
  5.     Last changes : 07.05.1994
  6.  */
  7.  
  8. #include "svobject.h"
  9.  
  10.  
  11. ULONG __saveds __asm SVO_FileInfoRequest( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 struct Window *window, register __a3 ULONG future);
  12. ULONG __saveds __asm SVO_CheckFileType(register __a1 BPTR handle_a1, register __a2 UBYTE *filename, register __a3 APTR future);
  13.  
  14.  
  15. void __saveds __stdargs SVLI_SPrintf(APTR buffer, char *formatstring, ...);
  16.  
  17.  
  18. /* *************************************************** */
  19. /* *                                                 * */
  20. /* * SVO_FileInfoRequest : Display File Information  * */
  21. /* *                                                 * */
  22. /* *************************************************** */
  23.  
  24. ULONG __saveds __asm SVO_FileInfoRequest( register __a1 struct SVObjectHandle *SVObjectHandle_a1, register __a2 struct Window *window, register __a3 ULONG future)
  25. {
  26.  struct SVObjectHandle *SVObjectHandle = SVObjectHandle_a1;
  27.  
  28.  ULONG retval = SVERR_NO_ERROR;
  29.  char hbuf[80], buffer [1024];
  30.  ULONG idcmp = N, noinfo = TRUE;
  31.  struct EasyStruct *estr;
  32.  struct Window     *disp_win = window;
  33.  
  34.  if(!SVObjectHandle) return(SVERR_NO_HANDLE);
  35.  
  36.  buffer[0] = (char) 0;
  37.  
  38.  if(SVObjectHandle->ah_SVOHeader)
  39.   {
  40.    noinfo = FALSE;
  41.  
  42.    strcat(buffer,   "\n File Information"
  43.                   "\n\n SVO V1.0");
  44.  
  45.    strcat(buffer, "\n");
  46.  
  47.    sprintf(hbuf, "\n GfxWidth       : %ld", (long) SVObjectHandle->ah_SVOHeader->svo_Width);
  48.    strcat(buffer, hbuf);
  49.  
  50.    sprintf(hbuf, "\n GfxHeight      : %ld", (long) SVObjectHandle->ah_SVOHeader->svo_Height);
  51.    strcat(buffer, hbuf);
  52.  
  53.    sprintf(hbuf, "\n Colordepth     : %ld", (long) SVObjectHandle->ah_SVOHeader->svo_Depth);
  54.    strcat(buffer, hbuf);
  55.  
  56.    sprintf(hbuf, "\n => # of Colors : %ld", (long) (1<<SVObjectHandle->ah_SVOHeader->svo_Depth));
  57.    strcat(buffer, hbuf);
  58.  
  59.    if(SVObjectHandle->ah_SVOHeader->svo_Version)
  60.     {
  61.      sprintf(hbuf, "\n\n Version %ld Header. AGA ModeID found.", (ULONG) SVObjectHandle->ah_SVOHeader->svo_Version);
  62.      strcat(buffer, hbuf);
  63.     }else strcat(buffer, "\n\n Note : Header Version is obsolete.");
  64.  
  65.    strcat(buffer, "\n");
  66.   }else retval = SVERR_NO_HANDLE;
  67.  
  68.  if(!retval)
  69.   {
  70.    if(noinfo)
  71.     {
  72.      strcat(buffer,   "\n File Information"
  73.                     "\n\n No information available\n");
  74.     }
  75.  
  76.    estr = AllocVec(sizeof(struct EasyStruct), MEMF_CLEAR);
  77.    if(estr)
  78.     {
  79.      estr->es_StructSize   = sizeof(struct EasyStruct);
  80.      estr->es_Flags        = N;
  81.      estr->es_Title        = "SuperView InfoRequester";
  82.      estr->es_TextFormat   = buffer;
  83.      estr->es_GadgetFormat = "Confirm";
  84.  
  85.      if(!disp_win) disp_win = SVObjectHandle->ah_Window;
  86.  
  87.      EasyRequestArgs(disp_win, estr, &idcmp, N);
  88.      FreeVec(estr);
  89.     }
  90.   }
  91.  
  92.  return(retval);
  93. }
  94.  
  95. /* *************************************************** */
  96. /* *                             * */
  97. /* * SVLI_CheckFileType : ...                    * */
  98. /* *                             * */
  99. /* *************************************************** */
  100.  
  101. ULONG __saveds __asm SVO_CheckFileType(register __a1 BPTR handle_a1, register __a2 UBYTE *filename, register __a3 APTR future)
  102. {
  103.  BPTR handle = handle_a1, handle2;
  104.  ULONG retval = FALSE;
  105.  UBYTE SVO_id[256];
  106.  char svo_name [256];
  107.  
  108.  if(!handle) return(FALSE);
  109.  
  110.  Seek(handle, N, OFFSET_BEGINNING);
  111.  Read(handle, &SVO_id[0], 256);
  112.  Seek(handle, N, OFFSET_BEGINNING);
  113.  
  114.  if(!strncmp(SVO_id, SVO_ID, strlen(SVO_ID))) retval = TRUE;
  115.  
  116.  if(!retval && filename)
  117.   {
  118.    strcpy(svo_name, filename);
  119.    strcat(svo_name, ".svo");
  120.  
  121.    handle2 = Open(svo_name, MODE_OLDFILE);
  122.    if(handle2)
  123.     {
  124.      Read(handle2, &SVO_id[0], 256);
  125.  
  126.      if(!strncmp(SVO_id, SVO_ID, strlen(SVO_ID))) retval = TRUE;
  127.  
  128.      Close(handle2);
  129.     }
  130.   }
  131.  
  132.  return(retval);
  133. }
  134.  
  135. extern void Fmt(void); /* Assembler-Routine for RawDoFmt */
  136.  
  137. void __saveds __stdargs SVLI_SPrintf(APTR buffer, char *formatstring, ...)
  138. {
  139.  RawDoFmt((APTR) formatstring, (APTR) (((ULONG *)&formatstring)+1), (APTR) &Fmt, (APTR) buffer);
  140. }
  141.