javamanager/javainstaller/installer/src.s60/iconconverter/mifconverter.h
author hgs
Fri, 15 Oct 2010 12:29:39 +0300
changeset 80 d6dafc5d983f
parent 21 2a9601315dfc
permissions -rw-r--r--
v2.2.19_1

/*
* Copyright (c) 2008 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:  Mifconverter is part of Java Installer component Icon Converter
*                Converts icons from SVG to MIF
*
*/


#ifndef MIFCONVERTER_H
#define MIFCONVERTER_H

#include <e32base.h>
#include <f32file.h>
#include <s32file.h>

/**
 *  The structure for MIF file header
 *  @since S60 v3.2
 */
NONSHARABLE_CLASS(TMifFileHeader)
{
public:
    /**
     * The UID of the MIF file format. It is used for validating the MIF file format.
     */
    TInt32  iUid;
    /**
     * Determines the valid fields in the MIF file header.
     * Must be greater than or equal to 2.
     */
    TInt32  iVersion;
    /**
     * The pointer to the beginning of the array of icon offset elements.
     */
    TInt32  iOffset;
    /**
     * The array length in the items of icon offset elements.
     */
    TInt32  iLength;
};

/**
 *  The structure for MIF icon offset
 *  @since S60 v3.2
 */
NONSHARABLE_CLASS(TMifIconOffset)
{
public:
    /**
     * The offset to the icon from the beginning of the MIF file.
     * Icon = icon header + icon data.
     */
    TInt32  iIconOffset;
    /**
     * The combined length of the icon header and the icon data.
     */
    TInt32  iIconLength;
};

/**
 *  The structure for MIF icon header
 *  @since S60 v3.2
 */
NONSHARABLE_CLASS(TMifIconHeader)
{
public:
    /**
     * The UID of the MIF icon header format.
     * It is used for validating the MIF file format.
     */
    TInt32  iUid;
    /**
     * The version of the MIF icon header format.
     * Determines the valid fields in the MIF icon header.
     */
    TInt32  iVersion;
    /**
     * The offset to icon data (from the beginning of the icon).
     */
    TInt32  iOffset;
    /**
     * The length of icon data in bytes.
     */
    TInt32  iLength;
    /**
     * The type of the MIF icon.
     */
    TInt32  iType;
    /**
     * The depth of the bitmap the content will be rendered to.
     * Corresponds to the Symbian OS enumeration TDisplayMode.
     */
    TInt32  iDepth;
    /**
     * Whether the icon is animated.
     */
    TInt32  iAnimated;
    /**
     * The depth of the mask.
     * Corresponds to the Symbian OS enumeration TDisplayMode.
     */
    TInt32  iMaskDepth;
};

/**
 *  Class to handle the conversion of icons from SVG to MIF file
 *  @since S60 v3.2
 */
NONSHARABLE_CLASS(CMifConverter) : public CBase
{
public:
    /**
     * CMifConverter::NewL constructor
     * Construct a CMifConverter object, using two phase construction
     * and return a pointer to the created object.
     *
     * @since S60 v3.2
     * @param aFs file session
     * @param aMifFile the name of the MIF file to be created
     * @return a pointer to the created instance of CMifConverter
     */
    static CMifConverter* NewL(RFs& aFs, const TDesC& aMifFile);

    /**
     * CMifConverter::~CMifConverter destructor
     * Destroy the object and release all memory objects
     *
     * @since S60 v3.2
     */
    virtual ~CMifConverter();

public:
    /**
     * CMifConverter::WriteMifFileHeaderL method
     * Writes file header to the MIF file
     *
     * @since S60 v3.2
     * @param aMifFileHeader TMifFileHeader structure
     */
    void WriteMifFileHeaderL(const TMifFileHeader& aMifFileHeader);

    /**
     * CMifConverter::WriteMifIconOffsetL method
     * Writes icon offset to the MIF file
     *
     * @since S60 v3.2
     * @param aMifIconOffset TMifIconOffset structure
     */
    void WriteMifIconOffsetL(const TMifIconOffset& aMifIconOffset);

    /**
     * CMifConverter::WriteMifIconHeaderL method
     * Writes icon header to the MIF file
     *
     * @since S60 v3.2
     * @param aMifIconHeader TMifIconHeader structure
     */
    void WriteMifIconHeaderL(const TMifIconHeader& aMifIconHeader);

    /**
     * CMifConverter::WriteMifBodyL method
     * Writes file body to the MIF file
     *
     * @since S60 v3.2
     * @param apIconBuf buffer containing the contents of the svg file
     */
    void WriteMifBodyL(HBufC8* apIconBuf);

private:
    /**
     * CMifConverter::CMifConverter constructor
     * Perform the first phase of two phase construction
     *
     * @since S60 v3.2
     * @param aFs file session
     */
    CMifConverter(RFs& aFs);

    /**
     * CMifConverter::ConstructL constructor
     * Perform the second phase of two phase construction
     *
     * @since S60 v3.2
     * @param aMifFile the name of the MIF file to be created
     */
    void ConstructL(const TDesC& aMifFile);


private:
    /**
     * File session reference.
     */
    RFs& iFs;

    /**
     * Stream for the MIF file
     * Own.
     */
    RFileWriteStream iMifWriteStream;
};

#endif // MIFCONVERTER_H