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

📄 multimediafadapter.h

📁 series60 应用程序开发的源代码 series60 应用程序开发的源代码
💻 H
字号:
#ifndef MULTIMEDIAFADAPTER_H
#define MULTIMEDIAFADAPTER_H

// System Includes
#include <e32base.h>
#include <gdi.h>        // TDisplayMode
#include <f32file.h>    // RFs

// User includes
#include "ImageModel.h"    // MImageModel


//FORWARD DECLARATION
class CImageDecoder;
class CImageEncoder;
class CBitmapRotator;
class CBitmapScaler;
class CFbsBitmap;
class MMultimediaController;
class CFrameImageData;
class TJpegImageData;

/**
 *
 * @class    CMultiMediaFAdapter MultiMediaFAdapter.h
 * @brief    This is an Adapter class (see a design patterns book) which
 * acts as a wrapper around the functionality of the Media Multi Framework. The example
 * illustrates some of the core concepts required in understanding
 * image conversion/manipulation on Series 60 v2.x.
 *
 * Copyright (c) EMCC Software Ltd 2003
 * @version    1.0
 *
 */

class CMultiMediaFAdapter : public CActive, public MImageModel //this is from Media Server
{
public:    // Construction and Destruction
    static CMultiMediaFAdapter* NewL(MMultimediaController& aMultimediaController, TDisplayMode aDeviceDisplayMode);
    static CMultiMediaFAdapter* NewLC(MMultimediaController& aMultimediaController, TDisplayMode aDeviceDisplayMode);
    virtual ~CMultiMediaFAdapter();

public:    // Public Methods
    void HandleCommandL(TInt aCommand);

public:    //From MImageModel
    CFbsBitmap& Image() const;

protected:    // From CActive
    void RunL();
    void DoCancel();

private:    // Enumerations
    // enumeration to keep track of current manipulation
    enum TMultiMediaFState
    {
        EDecode = 0,
        EEncode,
        ERotating,
        EScaling,
        EDoNothing
    };

    // enumeration to decide whether to enlarge or shrink image
    enum TScaleState
    {
        EScaleDown = 0,
        EScaleUp
    };

private:    // Construction
    void ConstructL();
    CMultiMediaFAdapter(MMultimediaController& aMultimediaController, TDisplayMode aDeviceDisplayMode);

private:    // Methods
    // Image converstion functions
    void DecodeOpenAndConvertL();
    void EncodeOpenAndConvertL();

    // Image rotation Functions
    void Rotate90();
    void Rotate180();
    void Rotate270();
    void RotateMirrorV();
    void RotateMirrorH();

    // Image scaling function
    void ScaleImage();

    // Rest image
    void ResetImageL();

private: // member data
    // from Media Framework
    CImageDecoder* iDecoder;
    CImageEncoder* iEncoder;
    CBitmapRotator* iRotator;
    CBitmapScaler* iScaler;

    CFrameImageData* iJpgImageData; // used to save jpgs
    CFbsBitmap* iImage;

    MMultimediaController& iMultimediaController;

    RFs iFs;

    TMultiMediaFState iManipulationState;
    TScaleState iScaleState;
    TDisplayMode iDeviceDisplayMode; // used to store device display mode
};

#endif

⌨️ 快捷键说明

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