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

📄 imagesaverengine.cpp

📁 基于Symbian OS的手机开发与应用实践第14章代码。主要讲多媒体的各种应用。
💻 CPP
字号:
/*
* ============================================================================
*  Name     : CImageSaverEngine from ImageSaverEngine.cpp
*  Part of  : ImageSaver
*  Created  : 30.01.2006 by ToBeReplacedByAuthor
*  Implementation notes:
*     
*  Version  :
*  Copyright: ToBeReplacedByCopyright
* ============================================================================
*/

// INCLUDE FILES
#include <coemain.h>

#include "ImageSaverEngine.h"


// ================= MEMBER FUNCTIONS =======================

// Two-phased constructor.
CImageSaverEngine* CImageSaverEngine::NewL(MObserver& aObserver)
    {
    CImageSaverEngine* self = new(ELeave) CImageSaverEngine(aObserver);
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop();
    return self; 
    }

// destructor
CImageSaverEngine::~CImageSaverEngine()
    {
    DoCancel();
    }

// constructor
CImageSaverEngine::CImageSaverEngine(MObserver& aObserver ) : 
    CActive(EPriorityStandard), iObserver(aObserver)
    {
    }

// EPOC default constructor can leave.
void CImageSaverEngine::ConstructL()
    {
    CActiveScheduler::Add( this );
    }

void CImageSaverEngine::RunL()
    {
    iObserver.OnCompleteL(iStatus.Int());
    DoCancel();
    }

void CImageSaverEngine::DoCancel()
    {
    if(iImageEncoder!=NULL)
        {
        iImageEncoder->Cancel();
        }
    delete iImageEncoder;
    iImageEncoder = NULL;

    delete iFrameImageData;
    iFrameImageData = NULL;
    }

void CImageSaverEngine::SaveL(CFbsBitmap& aBitmap, const TFileName& aFileName)
    {
    DoCancel();
    _LIT8(KJpgMime, "image/jpeg");
    iImageEncoder = CImageEncoder::FileNewL(CCoeEnv::Static()->FsSession(), aFileName, KJpgMime());

    // Setup the jpg saving information that is required.
    TJpegImageData* jpegImageData = new (ELeave) TJpegImageData;
    CleanupStack::PushL(jpegImageData);

    // Set specific format data
    jpegImageData->iQualityFactor = 95;
    jpegImageData->iSampleScheme = TJpegImageData::EColor444;

    iFrameImageData = CFrameImageData::NewL();

    // Ownership passed to iFrameImageData after AppendImageData
    User::LeaveIfError(iFrameImageData->AppendImageData(jpegImageData));
    CleanupStack::Pop(jpegImageData);

    // Convert
    iImageEncoder->Convert(&iStatus, aBitmap, iFrameImageData);
    SetActive();
    }

// End of File  

⌨️ 快捷键说明

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