LPlayBack::GetIndex

#include "ltwrappr.h"

virtual L_INT LPlayBack::GetIndex()

Gets the list index of the current bitmap during animation playback.

Returns

The index of the current bitmap.

Required DLLs and Libraries

LTDIS
LTFIL

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application.

Platforms

Win32, x64.

See Also

Functions:

Class Members

Topics:

Raster Image Functions: Creating and Maintaining Lists of Images

 

Implementing Animation

Example

This example uses LPlayBack::GetIndex and LPlayBack::SetIndex to skip

bitmaps during a playback.

#define MAKE_IMAGE_PATH(pFileName) TEXT("C:\\Users\\Public\\Documents\\LEADTOOLS Images\\")pFileName
L_INT LPlayBack__GetIndexExample(HWND hWnd, L_TCHAR *pszFileName)
{
   L_INT nRet;
   L_UINT uState; /* Next state in the playback */
   RECT rcUpdate; /* Source clipping rectangle used in playback */
   RECT rcDisplay; /* Display rectangle used in playback */
   HDC hdc; /* Device context of the current window */
   L_UINT uIndex = 0; /* Current index to the bitmap list */
   L_UINT uCount = 0; /* Number of bitmaps in the list */
   LBitmapBase TargetBitmap;
   LBitmapList BitmapList;
   LPlayBack   PlayBack ;     /* Animation playback */
   /* Create the bitmap list from the input file (GIF) */
   nRet = BitmapList.Load (pszFileName);
   if(nRet != SUCCESS)
      return nRet;
   /* Set the background bitmap*/
   nRet = TargetBitmap.Load(MAKE_IMAGE_PATH(TEXT("image1.cmp")));
   if(nRet != SUCCESS)
      return nRet;
   /* Use the client area as the display rectangle */
   GetClientRect(hWnd,&rcDisplay);
   /* Get the number of bitmaps in the list */
   uCount = BitmapList.GetItemsCount(); 
   /* Create and run the playback */
   nRet = PlayBack.Create(&TargetBitmap, &BitmapList);
   if(nRet != SUCCESS)
      return nRet;
   do
   {
      uState = PlayBack.Process();
      switch(uState)
      {
      case PLAYSTATE_PRERENDER:
         uIndex = PlayBack.GetIndex();
         nRet = PlayBack.SetIndex( ++uIndex);
         if(nRet != SUCCESS)
            return nRet;
         break;
      case PLAYSTATE_POSTRENDER:
         nRet = PlayBack.GetUpdateRect(&rcUpdate, TRUE);
         if(nRet != SUCCESS)
            return nRet;
         hdc = GetDC(hWnd);
         nRet = PlayBack.GetBitmap()->SetClipSrcRect(&rcUpdate);
         if(nRet != SUCCESS)
            return nRet;
         nRet = PlayBack.GetBitmap()->SetDstRect(&rcDisplay);
         if(nRet != SUCCESS)
            return nRet;
         nRet = PlayBack.GetBitmap()->SetClipDstRect(&rcDisplay);
         if(nRet != SUCCESS)
            return nRet;
         PlayBack.GetBitmap()->Paint()->SetDC(hdc);
         PlayBack.GetBitmap()->CreatePaintPalette (hdc);
         nRet = PlayBack.GetBitmap()->Paint()->PaintDC();
         if(nRet != SUCCESS)
            return nRet;
         ReleaseDC(hWnd, hdc);
         break;
      }
   } while(uIndex < uCount);
   return SUCCESS;
}