L_ProcessPlayback

#include "l_bitmap.h"

L_LTDIS_API L_INT L_ProcessPlayback(hPlayback, puState)

HPLAYBACK hPlayback;

playback handle

L_UINT* puState;

address of the variable to be updated

Processes the next state during an animation playback.

Parameter

Description

hPlayback

Handle that references the animation playback.

puState

Address of the variable to be updated with a constant that describes the new state of the animation playback engine. For possible values, refer to Animation Playback States.

Returns

SUCCESS

The function was successful.

< 1

An error occurred. Refer to Return Codes.

Comments

This function does not support signed data images. It returns the error code ERROR_SIGNED_DATA_NOT_SUPPORTED if a signed data image is passed to this function.

This function is called in a loop to continually process the playback.

Required DLLs and Libraries

LTDIS

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, Linux.

See Also

Functions:

L_CreatePlayback, L_DestroyPlayback, L_GetPlaybackDelay, L_CancelPlaybackWait, L_ClearPlaybackUpdateRect, L_GetPlaybackIndex, L_GetPlaybackState, L_GetPlaybackUpdateRect, L_SetPlaybackIndex, L_AppendPlayback, L_ValidatePlaybackLines

Topics:

Raster Image Functions: Creating and Maintaining Lists of Images

 

Implementing Animation

Example

For an example, refer to L_AppendPlayback. This example loads a bitmap list from an animated GIF or AVI file. It then plays the animation, using the current bitmap as the target.

L_INT ProcessPlaybackExample(L_HWND           hWnd, 
                                             pBITMAPHANDLE  pBitmap, 
                                             L_TCHAR*       pszFilename, 
                                             HPALETTE       hpalPaint) 
{ 
   L_INT nRet; 
   HBITMAPLIST    hList;            /* Bitmap list */ 
   BITMAPHANDLE   TmpBitmap;        /* Temporary bitmap for building the list */ 
   HPLAYBACK      hPlayback;        /* Animation playback */ 
   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 */ 
   HPALETTE       hPalette = NULL;  /* Temporary copy of the current system palette */ 
 
   /* Create the bitmap list from the input file (GIF or AVI) */ 
   nRet = L_LoadBitmapList(pszFilename, &hList, 0, 0, NULL, NULL); 
   if(nRet != SUCCESS) 
      return nRet; 
   /* Get a copy of the first image's bitmap handle */ 
   nRet = L_GetBitmapListItem(hList, 0, &TmpBitmap, sizeof(BITMAPHANDLE)); 
   if(nRet != SUCCESS) 
      return nRet; 
   /* Create the palette that is used for playback */ 
   hdc = GetDC (hWnd); 
   hpalPaint = L_CreatePaintPalette(hdc, &TmpBitmap); 
   ReleaseDC (hWnd, hdc); 
   /* Use the client area as the display rectangle,  
   assuming that the window is properly sized */ 
   GetClientRect(hWnd,&rcDisplay); 
   /* Create the target bitmap that is used for playback */ 
   if(pBitmap->Flags.Allocated) 
      L_FreeBitmap(pBitmap); 
   nRet = L_CreateBitmap(pBitmap, sizeof(BITMAPHANDLE), TYPE_CONV, 
               TmpBitmap.Width, 
               TmpBitmap.Height, 
               TmpBitmap.BitsPerPixel, 
               TmpBitmap.Order, 
               NULL, 
               TmpBitmap.ViewPerspective, NULL, 0); 
   if(nRet != SUCCESS) 
      return nRet; 
   /* Update the palette of the target bitmap */ 
   nRet = L_CopyBitmapPalette(pBitmap, &TmpBitmap); 
   if(nRet != SUCCESS) 
      return nRet; 
   /* Create and run the playback */ 
   nRet = L_CreatePlayback(&hPlayback, pBitmap, hList); 
   if(nRet != SUCCESS) 
      return nRet; 
   do 
   { 
      nRet = L_ProcessPlayback(hPlayback, &uState); 
      if(nRet != SUCCESS) 
         return nRet; 
      switch(uState) 
      { 
      case PLAYSTATE_WAITINPUT: 
            nRet = L_CancelPlaybackWait(hPlayback); 
            if(nRet != SUCCESS) 
               return nRet; 
            break; 
      case PLAYSTATE_POSTCLEAR: 
      case PLAYSTATE_POSTRENDER: 
         nRet = L_GetPlaybackUpdateRect(hPlayback, &rcUpdate, TRUE); 
         if(nRet != SUCCESS) 
            return nRet; 
         hdc = GetDC(hWnd); 
         if (hpalPaint) 
         { 
            hPalette = SelectPalette (hdc, hpalPaint, TRUE); 
            RealizePalette(hdc); 
         } 
         nRet = L_PaintDC(hdc, pBitmap, NULL, &rcUpdate, &rcDisplay, &rcDisplay, SRCCOPY); 
         if(nRet != SUCCESS) 
            return nRet; 
         if (hpalPaint) 
            SelectPalette (hdc, hPalette, TRUE); 
         ReleaseDC(hWnd, hdc); 
         break; 
      } 
   } while(uState != PLAYSTATE_END); 
   /* Clean up */ 
   L_DestroyPlayback(hPlayback, NULL); 
   L_DestroyBitmapList(hList); 
   return SUCCESS; 
} 

Help Version 20.0.2018.1.19
Products | Support | Contact Us | Copyright Notices
© 1991-2018 LEAD Technologies, Inc. All Rights Reserved.
LEADTOOLS Raster Imaging C API Help