⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libmng_display.c

📁 奇趣公司比较新的qt/emd版本
💻 C
📖 第 1 页 / 共 5 页
字号:
    {      case mng_st_fast :        {          iWaitfor = (mng_uint32)(( 500 * iDelay) / iTicks);          break;        }      case mng_st_slow :        {          iWaitfor = (mng_uint32)((3000 * iDelay) / iTicks);          break;        }      case mng_st_slowest :        {          iWaitfor = (mng_uint32)((8000 * iDelay) / iTicks);          break;        }      default :        {          iWaitfor = (mng_uint32)((1000 * iDelay) / iTicks);        }    }  }  return iWaitfor;}/* ************************************************************************** *//* *                                                                        * *//* * Progressive display refresh - does the call to the refresh callback    * *//* * and sets the timer to allow the app to perform the actual refresh to   * *//* * the screen (eg. process its main message-loop)                         * *//* *                                                                        * *//* ************************************************************************** */mng_retcode mng_display_progressive_refresh (mng_datap  pData,                                             mng_uint32 iInterval){  {                                    /* let the app refresh first ? */    if ((pData->bRunning) && (!pData->bSkipping) &&        (pData->iUpdatetop < pData->iUpdatebottom) && (pData->iUpdateleft < pData->iUpdateright))    {      if (!pData->fRefresh (((mng_handle)pData),                            pData->iUpdateleft, pData->iUpdatetop,                            pData->iUpdateright  - pData->iUpdateleft,                            pData->iUpdatebottom - pData->iUpdatetop))        MNG_ERROR (pData, MNG_APPMISCERROR);      pData->iUpdateleft   = 0;        /* reset update-region */      pData->iUpdateright  = 0;      pData->iUpdatetop    = 0;      pData->iUpdatebottom = 0;        /* reset refreshneeded indicator */      pData->bNeedrefresh  = MNG_FALSE;                                       /* interval requested ? */      if ((!pData->bFreezing) && (iInterval))      {                                /* setup the timer */        mng_retcode iRetcode = set_delay (pData, iInterval);        if (iRetcode)                  /* on error bail out */          return iRetcode;      }    }  }  return MNG_NOERROR;}/* ************************************************************************** *//* *                                                                        * *//* * Generic display routines                                               * *//* *                                                                        * *//* ************************************************************************** */MNG_LOCAL mng_retcode interframe_delay (mng_datap pData){  mng_uint32  iWaitfor = 0;  mng_uint32  iInterval;  mng_uint32  iRuninterval;  mng_retcode iRetcode;#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INTERFRAME_DELAY, MNG_LC_START);#endif  {#ifndef MNG_SKIPCHUNK_FRAM    if (pData->iFramedelay > 0 || pData->bForcedelay)        /* real delay ? */    {                                  /* let the app refresh first ? */      pData->bForcedelay = MNG_FALSE;      if ((pData->bRunning) && (!pData->bSkipping) &&          (pData->iUpdatetop < pData->iUpdatebottom) && (pData->iUpdateleft < pData->iUpdateright))        if (!pData->fRefresh (((mng_handle)pData),                              pData->iUpdateleft,  pData->iUpdatetop,                              pData->iUpdateright - pData->iUpdateleft,                              pData->iUpdatebottom - pData->iUpdatetop))          MNG_ERROR (pData, MNG_APPMISCERROR);      pData->iUpdateleft   = 0;        /* reset update-region */      pData->iUpdateright  = 0;      pData->iUpdatetop    = 0;      pData->iUpdatebottom = 0;        /* reset refreshneeded indicator */      pData->bNeedrefresh  = MNG_FALSE;#ifndef MNG_SKIPCHUNK_TERM      if (pData->bOnlyfirstframe)      /* only processing first frame after TERM ? */      {        pData->iFramesafterTERM++;                                       /* did we do a frame yet ? */        if (pData->iFramesafterTERM > 1)        {                              /* then that's it; just stop right here ! */          pData->pCurraniobj = MNG_NULL;          pData->bRunning    = MNG_FALSE;          return MNG_NOERROR;        }      }#endif      if (pData->fGettickcount)      {                                /* get current tickcount */        pData->iRuntime = pData->fGettickcount ((mng_handle)pData);                                       /* calculate interval since last sync-point */        if (pData->iRuntime < pData->iSynctime)          iRuninterval    = pData->iRuntime + ~pData->iSynctime + 1;        else          iRuninterval    = pData->iRuntime - pData->iSynctime;                                       /* calculate actual run-time */        if (pData->iRuntime < pData->iStarttime)          pData->iRuntime = pData->iRuntime + ~pData->iStarttime + 1;        else          pData->iRuntime = pData->iRuntime - pData->iStarttime;      }      else      {        iRuninterval = 0;      }      iWaitfor = calculate_delay (pData, pData->iFramedelay);      if (iWaitfor > iRuninterval)     /* delay necessary ? */        iInterval = iWaitfor - iRuninterval;      else        iInterval = 1;                 /* force app to process messageloop */                                       /* set the timer ? */      if (((pData->bRunning) || (pData->bSearching) || (pData->bReading)) &&          (!pData->bSkipping))      {        iRetcode = set_delay (pData, iInterval);        if (iRetcode)                  /* on error bail out */          return iRetcode;      }    }    if (!pData->bSkipping)             /* increase frametime in advance */      pData->iFrametime = pData->iFrametime + iWaitfor;                                       /* setup for next delay */    pData->iFramedelay = pData->iNextdelay;    pData->iAccumdelay += pData->iFramedelay;#endif  }#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_INTERFRAME_DELAY, MNG_LC_END);#endif  return MNG_NOERROR;}/* ************************************************************************** */MNG_LOCAL void set_display_routine (mng_datap pData){                                        /* actively running ? */  if (((pData->bRunning) || (pData->bSearching)) && (!pData->bSkipping))  {    switch (pData->iCanvasstyle)         /* determine display routine */    {#ifndef MNG_SKIPCANVAS_RGB8      case MNG_CANVAS_RGB8    : { pData->fDisplayrow = (mng_fptr)mng_display_rgb8;     break; }#endif#ifndef MNG_SKIPCANVAS_RGBA8      case MNG_CANVAS_RGBA8   : { pData->fDisplayrow = (mng_fptr)mng_display_rgba8;    break; }#endif#ifndef MNG_SKIPCANVAS_RGBA8_PM      case MNG_CANVAS_RGBA8_PM: { pData->fDisplayrow = (mng_fptr)mng_display_rgba8_pm; break; }#endif#ifndef MNG_SKIPCANVAS_ARGB8      case MNG_CANVAS_ARGB8   : { pData->fDisplayrow = (mng_fptr)mng_display_argb8;    break; }#endif#ifndef MNG_SKIPCANVAS_ARGB8_PM      case MNG_CANVAS_ARGB8_PM: { pData->fDisplayrow = (mng_fptr)mng_display_argb8_pm; break; }#endif#ifndef MNG_SKIPCANVAS_RGB8_A8      case MNG_CANVAS_RGB8_A8 : { pData->fDisplayrow = (mng_fptr)mng_display_rgb8_a8;  break; }#endif#ifndef MNG_SKIPCANVAS_BGR8      case MNG_CANVAS_BGR8    : { pData->fDisplayrow = (mng_fptr)mng_display_bgr8;     break; }#endif#ifndef MNG_SKIPCANVAS_BGRX8      case MNG_CANVAS_BGRX8   : { pData->fDisplayrow = (mng_fptr)mng_display_bgrx8;    break; }#endif#ifndef MNG_SKIPCANVAS_BGRA8      case MNG_CANVAS_BGRA8   : { pData->fDisplayrow = (mng_fptr)mng_display_bgra8;    break; }#endif#ifndef MNG_SKIPCANVAS_BGRA8_PM      case MNG_CANVAS_BGRA8_PM: { pData->fDisplayrow = (mng_fptr)mng_display_bgra8_pm; break; }#endif#ifndef MNG_SKIPCANVAS_ABGR8      case MNG_CANVAS_ABGR8   : { pData->fDisplayrow = (mng_fptr)mng_display_abgr8;    break; }#endif#ifndef MNG_SKIPCANVAS_ABGR8_PM      case MNG_CANVAS_ABGR8_PM: { pData->fDisplayrow = (mng_fptr)mng_display_abgr8_pm; break; }#endif#ifndef MNG_SKIPCANVAS_RGB565      case MNG_CANVAS_RGB565  : { pData->fDisplayrow = (mng_fptr)mng_display_rgb565;   break; }#endif#ifndef MNG_SKIPCANVAS_RGBA565      case MNG_CANVAS_RGBA565 : { pData->fDisplayrow = (mng_fptr)mng_display_rgba565;  break; }#endif#ifndef MNG_SKIPCANVAS_BGR565      case MNG_CANVAS_BGR565  : { pData->fDisplayrow = (mng_fptr)mng_display_bgr565;   break; }#endif#ifndef MNG_SKIPCANVAS_BGRA565      case MNG_CANVAS_BGRA565 : { pData->fDisplayrow = (mng_fptr)mng_display_bgra565;  break; }#endif#ifndef MNG_SKIPCANVAS_BGR565_A8      case MNG_CANVAS_BGR565_A8 : { pData->fDisplayrow = (mng_fptr)mng_display_bgr565_a8;  break; }#endif#ifndef MNG_NO_16BIT_SUPPORT/*      case MNG_CANVAS_RGB16   : { pData->fDisplayrow = (mng_fptr)mng_display_rgb16;    break; } *//*      case MNG_CANVAS_RGBA16  : { pData->fDisplayrow = (mng_fptr)mng_display_rgba16;   break; } *//*      case MNG_CANVAS_ARGB16  : { pData->fDisplayrow = (mng_fptr)mng_display_argb16;   break; } *//*      case MNG_CANVAS_BGR16   : { pData->fDisplayrow = (mng_fptr)mng_display_bgr16;    break; } *//*      case MNG_CANVAS_BGRA16  : { pData->fDisplayrow = (mng_fptr)mng_display_bgra16;   break; } *//*      case MNG_CANVAS_ABGR16  : { pData->fDisplayrow = (mng_fptr)mng_display_abgr16;   break; } */#endif/*      case MNG_CANVAS_INDEX8  : { pData->fDisplayrow = (mng_fptr)mng_display_index8;   break; } *//*      case MNG_CANVAS_INDEXA8 : { pData->fDisplayrow = (mng_fptr)mng_display_indexa8;  break; } *//*      case MNG_CANVAS_AINDEX8 : { pData->fDisplayrow = (mng_fptr)mng_display_aindex8;  break; } *//*      case MNG_CANVAS_GRAY8   : { pData->fDisplayrow = (mng_fptr)mng_display_gray8;    break; } *//*      case MNG_CANVAS_AGRAY8  : { pData->fDisplayrow = (mng_fptr)mng_display_agray8;   break; } *//*      case MNG_CANVAS_GRAYA8  : { pData->fDisplayrow = (mng_fptr)mng_display_graya8;   break; } */#ifndef MNG_NO_16BIT_SUPPORT/*      case MNG_CANVAS_GRAY16  : { pData->fDisplayrow = (mng_fptr)mng_display_gray16;   break; } *//*      case MNG_CANVAS_GRAYA16 : { pData->fDisplayrow = (mng_fptr)mng_display_graya16;  break; } *//*      case MNG_CANVAS_AGRAY16 : { pData->fDisplayrow = (mng_fptr)mng_display_agray16;  break; } */#endif/*      case MNG_CANVAS_DX15    : { pData->fDisplayrow = (mng_fptr)mng_display_dx15;     break; } *//*      case MNG_CANVAS_DX16    : { pData->fDisplayrow = (mng_fptr)mng_display_dx16;     break; } */    }  }  return;}/* ************************************************************************** */MNG_LOCAL mng_retcode load_bkgdlayer (mng_datap pData){#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_LOAD_BKGDLAYER, MNG_LC_START);#endif                                       /* actively running ? */  if (((pData->bRunning) || (pData->bSearching)) && (!pData->bSkipping))  {    mng_int32   iY;    mng_retcode iRetcode;    mng_bool    bColorcorr   = MNG_FALSE;                                       /* save values */    mng_int32   iDestl       = pData->iDestl;    mng_int32   iDestr       = pData->iDestr;    mng_int32   iDestt       = pData->iDestt;    mng_int32   iDestb       = pData->iDestb;    mng_int32   iSourcel     = pData->iSourcel;    mng_int32   iSourcer     = pData->iSourcer;    mng_int32   iSourcet     = pData->iSourcet;    mng_int32   iSourceb     = pData->iSourceb;    mng_int8    iPass        = pData->iPass;    mng_int32   iRow         = pData->iRow;    mng_int32   iRowinc      = pData->iRowinc;    mng_int32   iCol         = pData->iCol;    mng_int32   iColinc      = pData->iColinc;    mng_int32   iRowsamples  = pData->iRowsamples;    mng_int32   iRowsize     = pData->iRowsize;    mng_uint8p  pPrevrow     = pData->pPrevrow;    mng_uint8p  pRGBArow     = pData->pRGBArow;    mng_bool    bIsRGBA16    = pData->bIsRGBA16;    mng_bool    bIsOpaque    = pData->bIsOpaque;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -