imagehandlingutilities/thumbnailmanager/thumbnailserver/inc/thumbnaildecodetask.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 31 Mar 2010 22:04:49 +0300
branchRCL_3
changeset 11 dea39715fc05
parent 0 2014ca87e772
permissions -rw-r--r--
Revision: 201011 Kit: 201013

/*
* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  Task for decoding  a thumbnail
 *
*/


#ifndef THUMBNAILDECODETASK_H
#define THUMBNAILDECODETASK_H

#include <apmstd.h>

#include "thumbnailtask.h"
#include "thumbnailprovider.h"


class CThumbnailServer;

/**
 *  Task for decoding a thumbnail.
 *
 *  @since S60 v5.0
 */
class CThumbnailDecodeTask: public CThumbnailTask,
    public MThumbnailProviderObserver
    {
public:

    /**
     * C++ default constructor
     *
     * @since S60 v5.0
     * @param aProcessor Processor object for running tasks.
     * @param aServer Thumbnail server in use.
     * @param aBuffer Image in JPEG mode.
     * @param aPriority Priority of the request.
     * @return New CThumbnailDecodeTask object.
     */
    CThumbnailDecodeTask( CThumbnailTaskProcessor& aProcessor, CThumbnailServer& aServer, TDesC8* aBuffer,
            TInt aPriority, TDisplayMode aDisplayMode);

    /**
     * Destructor.
     *
     * @since S60 v5.0
     */
    virtual ~CThumbnailDecodeTask();

    /**
     * StartL
     *
     * @since S60 v5.0
     */
    void StartL();

    /**
     * Handles an active object's request completion event.
     *
     * @since S60 v5.0
     */
    void RunL();

    /**
     * Implements cancellation of an outstanding request.
     *
     * @since S60 v5.0
     */
    void DoCancel();

private:

   /**
     * For notifying when task has been finished.
     *
     * @since S60 v5.0
     * @param aError Error code.
     * @param aBitmap Thumbnail image.
     * @param aOriginalSize Original image size.
     */
    void ThumbnailProviderReady( const TInt aError, CFbsBitmap* aBitmap, const
        TSize& aOriginalSize, const TBool aEXIF, const TBool aPortait );


private:
    // Data

    /**
     * Server.
     */
    CThumbnailServer& iServer;
  
    /**
     * Image buffer
     */    
    TDesC8* iBuffer;

    /**
     * Size of the original image.
     */
    TSize iOriginalSize;

    /**
     * Thumbnail provider implementation.
     * Not own.
     */
    CThumbnailProvider* iProvider;
   
   /**
    * Temporary buffer for client/server parameters
    */
    TThumbnailRequestParamsPckgBuf iParamsBuf;
    
    /*
     * Displaymode of requested TN
     */
    TDisplayMode iDisplayMode;
    
};

#endif // THUMBNAILGENERATETASK_H