예제 #1
0
static mng_bool myiterchunk (mng_handle  hMNG,
                      mng_handle  hChunk,
                      mng_chunkid iChunktype,
                      mng_uint32  iChunkseq)
{
    static int databytes = 0;
    int length = 0;
  GtkMngView *mng_view = GTK_MNG_VIEW (mng_get_userdata (hMNG));

    printf("FRAME DELAY %d\n", mng_get_currframdelay(hMNG));
    switch(iChunktype)
    {
        case MNG_UINT_HUH :
            printf("Type is MNG_UINT_HUH \n");
            break;
        case MNG_UINT_BACK:
            printf("Type is MNG_UINT_BACK\n");
            break;
        case MNG_UINT_BASI:
            printf("Type is MNG_UINT_BASI\n");
            break;
        case MNG_UINT_CLIP:
            printf("Type is MNG_UINT_CLIP\n");
            break;
        case MNG_UINT_CLON:
            printf("Type is MNG_UINT_CLON\n");
            break;
        case MNG_UINT_DBYK:
            printf("Type is MNG_UINT_DBYK\n");
            break;
        case MNG_UINT_DEFI:
            printf("Type is MNG_UINT_DEFI\n");
            break;
        case MNG_UINT_DHDR:
            printf("Type is MNG_UINT_DHDR\n");
            break;
        case MNG_UINT_DISC:
            printf("Type is MNG_UINT_DISC\n");
            break;
        case MNG_UINT_DROP:
            printf("Type is MNG_UINT_DROP\n");
            break;
        case MNG_UINT_ENDL:
            printf("Type is MNG_UINT_ENDL\n");
            break;
        case MNG_UINT_FRAM:
            printf("Type is MNG_UINT_FRAM\n");
            break;
        case MNG_UINT_IDAT:
            mng_getchunk_idat(hMNG, hChunk, &length, mng_view->MNG_drawing_buffer + databytes);
            databytes += length;
            if (databytes >= 3*g_width*g_height) {
                printf("DATABYTES %d WIDTH %d HEIGHT %d 3 TIMES %d\n", databytes, g_width, g_height, 3*g_width*g_height);
                databytes = 0;
            }
            int i = 0;
            for ( i = 0; i < length; i++)
                printf("%x ", mng_view->MNG_drawing_buffer[i]);
            printf("Type is MNG_UINT_IDAT\n");
            printf("LENGTH is %d\n", length);
            break;
        case MNG_UINT_IEND:
            printf("Type is MNG_UINT_IEND\n");
            break;
        case MNG_UINT_IHDR:
            printf("Type is MNG_UINT_IHDR\n");
            break;
        case MNG_UINT_IJNG:
            printf("Type is MNG_UINT_IJNG\n");
            break;
        case MNG_UINT_IPNG:
            printf("Type is MNG_UINT_IPNG\n");
            break;
        case MNG_UINT_JDAA:
            printf("Type is MNG_UINT_JDAA\n");
            break;
        case MNG_UINT_JDAT:
            printf("Type is MNG_UINT_JDAT\n");
            break;
        case MNG_UINT_JHDR:
            printf("Type is MNG_UINT_JHDR\n");
            break;
        case MNG_UINT_JSEP:
            printf("Type is MNG_UINT_JSEP\n");
            break;
        case MNG_UINT_JdAA:
            printf("Type is MNG_UINT_JdAA\n");
            break;
        case MNG_UINT_LOOP:
            printf("Type is MNG_UINT_LOOP\n");
            break;
        case MNG_UINT_MAGN:
            printf("Type is MNG_UINT_MAGN\n");
            break;
        case MNG_UINT_MEND:
            printf("Type is MNG_UINT_MEND\n");
            break;
        case MNG_UINT_MHDR:
            printf("Type is MNG_UINT_MHDR\n");
            break;
        case MNG_UINT_MOVE:
            printf("Type is MNG_UINT_MOVE\n");
            break;
        case MNG_UINT_ORDR:
            printf("Type is MNG_UINT_ORDR\n");
            break;
        case MNG_UINT_PAST:
            printf("Type is MNG_UINT_PAST\n");
            break;
        case MNG_UINT_PLTE:
            printf("Type is MNG_UINT_PLTE\n");
            break;
        case MNG_UINT_PPLT:
            printf("Type is MNG_UINT_PPLT\n");
            break;
        case MNG_UINT_PROM:
            printf("Type is MNG_UINT_PROM\n");
            break;
        case MNG_UINT_SAVE:
            printf("Type is MNG_UINT_SAVE\n");
            break;
        case MNG_UINT_SEEK:
            printf("Type is MNG_UINT_SEEK\n");
            break;
        case MNG_UINT_SHOW:
            printf("Type is MNG_UINT_SHOW\n");
            break;
        case MNG_UINT_TERM:
            printf("Type is MNG_UINT_TERM\n");
            break;
        case MNG_UINT_adAT:
            printf("Type is MNG_UINT_adAT\n");
            break;
        case MNG_UINT_ahDR:
            printf("Type is MNG_UINT_ahDR\n");
            break;
        case MNG_UINT_bKGD:
            printf("Type is MNG_UINT_bKGD\n");
            break;
        case MNG_UINT_cHRM:
            printf("Type is MNG_UINT_cHRM\n");
            break;
        case MNG_UINT_eXPI:
            printf("Type is MNG_UINT_eXPI\n");
            break;
        case MNG_UINT_evNT:
            printf("Type is MNG_UINT_evNT\n");
            break;
        case MNG_UINT_fPRI:
            printf("Type is MNG_UINT_fPRI\n");
            break;
        case MNG_UINT_gAMA:
            printf("Type is MNG_UINT_gAMA\n");
            break;
        case MNG_UINT_hIST:
            printf("Type is MNG_UINT_hIST\n");
            break;
        case MNG_UINT_iCCP:
            printf("Type is MNG_UINT_iCCP\n");
            break;
        case MNG_UINT_iTXt:
            printf("Type is MNG_UINT_iTXt\n");
            break;
        case MNG_UINT_mpNG:
            printf("Type is MNG_UINT_mpNG\n");
            break;
        case MNG_UINT_nEED:
            printf("Type is MNG_UINT_nEED\n");
            break;
        case MNG_UINT_oFFs:
            printf("Type is MNG_UINT_oFFs\n");
            break;
        case MNG_UINT_pCAL:
            printf("Type is MNG_UINT_pCAL\n");
            break;
        case MNG_UINT_pHYg:
            printf("Type is MNG_UINT_pHYg\n");
            break;
        case MNG_UINT_pHYs:
            printf("Type is MNG_UINT_pHYs\n");
            break;
        case MNG_UINT_sBIT:
            printf("Type is MNG_UINT_sBIT\n");
            break;
        case MNG_UINT_sCAL:
            printf("Type is MNG_UINT_sCAL\n");
            break;
        case MNG_UINT_sPLT:
            printf("Type is MNG_UINT_sPLT\n");
            break;
        case MNG_UINT_sRGB:
            printf("Type is MNG_UINT_sRGB\n");
            break;
        case MNG_UINT_tEXt:
            printf("Type is MNG_UINT_tEXt\n");
            break;
        case MNG_UINT_tIME:
            printf("Type is MNG_UINT_tIME\n");
            break;
        case MNG_UINT_tRNS:
            printf("Type is MNG_UINT_tRNS\n");
            break;
        case MNG_UINT_zTXt:
            printf("Type is MNG_UINT_zTXt\n");
            break;
    }
    int iWidth, iHeight, iTicks, iLayercount, iFramecount, iPlaytime, iSimplicity;
                                                      mng_bool         bEmpty;
                                                      mng_uint8        iMode;
                                                      mng_uint32       iNamesize;
                                                      mng_pchar        zName;
                                                      mng_uint8        iChangedelay;
                                                      mng_uint8        iChangetimeout;
                                                      mng_uint8        iChangeclipping;
                                                      mng_uint8        iChangesyncid;
                                                      mng_uint32       iDelay;
                                                      mng_uint32       iTimeout;
                                                      mng_uint8        iBoundarytype;
                                                      mng_int32        iBoundaryl;
                                                      mng_int32        iBoundaryr;
                                                      mng_int32        iBoundaryt;
                                                      mng_int32        iBoundaryb;
                                                      mng_uint32       iCount;
                                                      mng_uint32p      pSyncids;
    if(iChunktype == MNG_UINT_MHDR) {
        mng_getchunk_mhdr (hMNG,
                           hChunk,
                           &iWidth,
                           &iHeight,
                           &iTicks,
                           &iLayercount,
                           &iFramecount,
                           &iPlaytime,
                           &iSimplicity);
//printf("iWidth,     %d\n", iWidth);
//printf("iHeight,    %d\n", iHeight);
//printf("iTicks,     %d\n", iTicks);
//printf("iLayercount %d\n", iLayercount);
//printf("iFramecount %d\n", iFramecount);
//printf("iPlaytime,  %d\n", iPlaytime);
//printf("iSimplicity %d\n", iSimplicity);
    }
    if(iChunktype == MNG_UINT_FRAM) {
mng_getchunk_fram       (hMNG,
                                                      hChunk,
                                                      &bEmpty,
                                                      &iMode,
                                                      &iNamesize,
                                                      &zName,
                                                      &iChangedelay,
                                                      &iChangetimeout,
                                                      &iChangeclipping,
                                                      &iChangesyncid,
                                                      &iDelay,
                                                      &iTimeout,
                                                      &iBoundarytype,
                                                      &iBoundaryl,
                                                      &iBoundaryr,
                                                      &iBoundaryt,
                                                      &iBoundaryb,
                                                      &iCount,
                                                      &pSyncids);

    printf("Framing iMode %d\n", iMode);
    switch(iMode)
    {
        case MNG_FRAMINGMODE_NOCHANGE:
            printf("Mode No change\n");
            break;
        case MNG_FRAMINGMODE_1       :
            printf("Mode 1\n");
            break;
        case MNG_FRAMINGMODE_2       :
            printf("Mode 2\n");
            break;
        case MNG_FRAMINGMODE_3       :
            printf("Mode 3\n");
            break;
        case MNG_FRAMINGMODE_4       :
            printf("Mode 4\n");
            break;
    }
    }
    //printf("iChunktype %d\n", iChunktype);
}
예제 #2
0
파일: mngrepair.cpp 프로젝트: d3x0r/SACK
mng_bool MY_DECL myiterchunk (mng_handle  hMNG,
                              mng_handle  hChunk,
                              mng_chunkid iChunktype,
                              mng_uint32  iChunkseq)
{
  mng_uint32  iWidth;                  /* temps for IHDR processing */
  mng_uint32  iHeight;
  mng_uint8   iBitdepth;
  mng_uint8   iColortype;
  mng_uint8   iCompression;
  mng_uint8   iFilter;
  mng_uint8   iInterlace;
  
  mng_bool    bEmpty;                  /* temps for FRAM processing */
  mng_uint8   iMode;
  mng_uint32  iNamesize;
  mng_pchar   zName;
  mng_uint8   iChangedelay;
  mng_uint8   iChangetimeout;
  mng_uint8   iChangeclipping;
  mng_uint8   iChangesyncid;
  mng_uint32  iDelay;
  mng_uint32  iTimeout;
  mng_uint8   iBoundarytype;
  mng_int32   iBoundaryl;
  mng_int32   iBoundaryr;
  mng_int32   iBoundaryt;
  mng_int32   iBoundaryb;
  mng_uint32  iCount;
  mng_uint32p pSyncids;
                                       /* get to my userdata */
  userdatap  pMydata = (userdatap)mng_get_userdata (hMNG);

  if (pMydata->hFileO)                 /* are we writing this time ? */
  {                                    /* do we need to 'forget' the TERM ? */
    if ((iChunktype == MNG_UINT_TERM) && (pMydata->bHasTERM))
      ;
    else
    {                                  /* fix JASC AS frame_type ? */
      if ((iChunktype == MNG_UINT_FRAM) && (pMydata->bIsJASC))
      {
        if ((pMydata->iError = mng_getchunk_fram (hMNG, hChunk,
                                                  &bEmpty, &iMode, &iNamesize, &zName,
                                                  &iChangedelay, &iChangetimeout,
                                                  &iChangeclipping, &iChangesyncid,
                                                  &iDelay, &iTimeout, &iBoundarytype,
                                                  &iBoundaryl, &iBoundaryr,
                                                  &iBoundaryt, &iBoundaryb,
                                                  &iCount, &pSyncids)) != 0)
        {
          fprintf (stderr, "Cannot get FRAM fields.\n");
          return MNG_FALSE;            /* stop the process ! */
        }

        if (iMode == 1)                /* really ? */
          iMode = 3;

        if ((pMydata->iError = mng_putchunk_fram (pMydata->hHandleO,
                                                  bEmpty, iMode, iNamesize, zName,
                                                  iChangedelay, iChangetimeout,
                                                  iChangeclipping, iChangesyncid,
                                                  iDelay, iTimeout, iBoundarytype,
                                                  iBoundaryl, iBoundaryr,
                                                  iBoundaryt, iBoundaryb,
                                                  iCount, pSyncids)) != 0)
        {
          fprintf (stderr, "Cannot write FRAM chunk.\n");
          return MNG_FALSE;            /* stop the process ! */
        }
      }
      else
      {
        if ((pMydata->iError = mng_copy_chunk (hMNG, hChunk, pMydata->hHandleO)) != 0)
        {
          fprintf (stderr, "Cannot copy the chunk.\n");
          return MNG_FALSE;            /* stop the process ! */
        }
      }
    }
                                       /* need to insert TERM in the proper place ? */
    if ((iChunktype == MNG_UINT_MHDR) && (pMydata->bHasTERM))
    {
      if ((pMydata->iError = mng_putchunk_term (pMydata->hHandleO,
                                                pMydata->iTermaction,
                                                pMydata->iIteraction,
                                                pMydata->iDelay,
                                                pMydata->iItermax)) != 0)
      {
        fprintf (stderr, "Cannot write TERM chunk.\n");
        return MNG_FALSE;              /* stop the process ! */
      }
    }
  }
  else                                 /* first iteration; just checking stuff */
  {
    if (iChunktype == MNG_UINT_SAVE)  /* SAVE ? */
    {
      pMydata->bHasSAVE = MNG_TRUE;    /* we got a SAVE ! */
      pMydata->bIsJASC  = MNG_FALSE;   /* so it's definitely not an invalid AS file */
    }
    else
    {                                 /* TERM ? */
      if (iChunktype == MNG_UINT_TERM)
      {                               /* is it in the wrong place ? */
        if ((pMydata->iLastchunk != MNG_UINT_MHDR) ||
            (pMydata->iLastchunk != MNG_UINT_SAVE)    )
        {
          pMydata->bHasTERM = MNG_TRUE;

          if ((pMydata->iError = mng_getchunk_term (hMNG, hChunk,
                                                    &pMydata->iTermaction,
                                                    &pMydata->iIteraction,
                                                    &pMydata->iDelay,
                                                    &pMydata->iItermax)) != 0)
          {
            fprintf (stderr, "Cannot get TERM fields.\n");
            return MNG_FALSE;          /* stop the process ! */
          }
        }
      }
      else
      {                                /* IHDR ? */
        if (iChunktype == MNG_UINT_IHDR)
        {
          if ((pMydata->iError = mng_getchunk_ihdr (hMNG, hChunk,
                                                    &iWidth, &iHeight, &iBitdepth,
                                                    &iColortype, &iCompression,
                                                    &iFilter, &iInterlace)) != 0)
          {
            fprintf (stderr, "Cannot get IHDR fields.\n");
            return MNG_FALSE;          /* stop the process ! */
          }
                                       /* is it not a typical JASC AS file */
          if ((iBitdepth != 8) || (iColortype != 6))
            pMydata->bIsJASC = MNG_FALSE;
        }
      }
    }

    pMydata->iLastchunk = iChunktype;
  }

  return MNG_TRUE;                     /* keep'm coming... */
}