svgtopt/nvgdecoder/inc/NVGIconData.inl
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 00:46:06 +0200
changeset 2 0c844a8549ae
parent 0 d46562c3d99d
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* Copyright (c) 2003 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:  NVG Decoder header file
*
*/

#ifndef NVGICONDATA_INL_
#define NVGICONDATA_INL_

inline void CNVGIconData::CheckOutOfBoundL(TInt aLength)
    {
    if (iTotalRead + aLength > iDataLength ||
        iTotalRead + aLength < 0)
        {
        User::Leave(KErrEof);
        }
    }

inline TInt CNVGIconData::ReadPos()
    {
    return iTotalRead;
    }

inline TInt CNVGIconData::DataLength()
    {
    return iDataLength;
    }


inline const HBufC8 * CNVGIconData::GetNVGData()
    {
    return iNVGData;
    }

inline TBool CNVGIconData::EOF()
    {
    return (iTotalRead >= iDataLength);
    }

inline TInt CNVGIconData::EncodeInt8(TUint8 aVal)
    {
    return EncodeData(&aVal, sizeof(aVal));
    }

inline TInt CNVGIconData::EncodeInt16(TUint16 aVal)
    {
    return EncodeData(&aVal, sizeof(aVal));
    }

inline TInt CNVGIconData::EncodeInt32(TUint32 aVal)
    {
    return EncodeData(&aVal, sizeof(aVal));
    }

inline TInt CNVGIconData::EncodeReal32(TReal32 aVal)
    {
    return EncodeData(&aVal, sizeof(aVal));
    }

inline TInt CNVGIconData::EncodeReal64(TReal64 aVal)
    {
    return EncodeData(&aVal, sizeof(aVal));
    }

inline void CNVGIconData::EncodeInt8L(TUint8 aVal)
    {
    return EncodeDataL(&aVal, sizeof(aVal));
    }

inline void CNVGIconData::EncodeInt16L(TUint16 aVal)
    {
    return EncodeDataL(&aVal, sizeof(aVal));
    }

inline void CNVGIconData::EncodeInt32L(TUint32 aVal)
    {
    return EncodeDataL(&aVal, sizeof(aVal));
    }

inline void CNVGIconData::EncodeReal32L(TReal32 aVal)
    {
    return EncodeDataL(&aVal, sizeof(aVal));
    }

inline void CNVGIconData::EncodeReal64L(TReal64 aVal)
    {
    return EncodeDataL(&aVal, sizeof(aVal));
    }

inline const HBufC8 * CNVGIconData::GetNVGData() const
    {
    return iNVGData;
    }

inline void CNVGIconData::Set(const TDesC8& aBuf)
    {
    iNVGDataPtr.Set((TUint8 *)aBuf.Ptr(), aBuf.Length(), aBuf.Length());
    }

inline void CNVGIconData::Set(TUint8 * aBuf, TInt aLength)
    {
    iNVGDataPtr.Set(aBuf, aLength, aLength);
    }

inline TDereferencer::TDereferencer(TUint8 * aBuf, TInt aLength)
    : iTotalRead(0),
      iDataLength(aLength),
      iReadStream(aBuf)
    {
    
    }

inline TDereferencer::TDereferencer(const TDesC8& aBuf)
    : iTotalRead(0),
      iDataLength(aBuf.Length()),
      iReadStream((unsigned char *)aBuf.Ptr())
    {        
    }

inline void TDereferencer::CheckOutOfBoundL(TInt aLength)
    {
    if (iTotalRead + aLength > iDataLength ||
        iTotalRead + aLength < 0)
        {
        User::Leave(KErrEof);
        }
    }

inline void TDereferencer::SkipL(TInt aLength)
    {
    CheckOutOfBoundL(aLength);
    iTotalRead += aLength;
    }

#define DEREF_PTR(TOTYPE, Offset, Size) do {\
                                CheckOutOfBoundL(Offset + Size); \
                                return * (TOTYPE *)&iReadStream[iTotalRead + Offset];\
                           } while (0)

inline TReal64 TDereferencer::DerefReal64L(TInt aAt)
    {
    DEREF_PTR(TReal64, aAt, sizeof(TReal64));
    }

inline TReal32 TDereferencer::DerefReal32L(TInt aAt)
    {
    DEREF_PTR(TReal32, aAt, sizeof(TReal32));
    }

inline TUint8 * TDereferencer::DerefInt8ArrayL(TInt aLength, TInt aAt)
    {
    CheckOutOfBoundL(aAt + aLength);
    return (TUint8 *)&iReadStream[iTotalRead + aAt];
    }

inline void TDereferencer::IsSafeL(TInt aLength, TInt aAt)
    {
    CheckOutOfBoundL(aAt + aLength);
    }

inline TInt8 TDereferencer::DerefInt8L(TInt aAt)
    {
    DEREF_PTR(TInt8, aAt, sizeof(TInt8));
    }

inline TInt32 TDereferencer::DerefInt32L(TInt aAt)
    {
    DEREF_PTR(TInt32, aAt, sizeof(TInt32));
    }

inline TInt16 TDereferencer::DerefInt16L(TInt aAt)
    {
    DEREF_PTR(TInt16, aAt, sizeof(TInt16));
    }

inline TDereferencer::operator TReal64()
    {
    return DerefReal64L();
    }

inline TDereferencer::operator TReal32()
    {
    return DerefReal32L();    
    }

inline TDereferencer::operator TInt8()
    {
    return DerefInt8L();    
    }

inline TDereferencer::operator TInt32()
    {
    return DerefInt32L();    
    }

inline TDereferencer::operator TInt16()
    {
    return DerefInt16L();    
    }

inline TPtr8 TDereferencer::GetPtr()
    {
    return TPtr8(iReadStream, iDataLength, iDataLength);
    }

inline TInt TDereferencer::GetLength()
    {
    return iDataLength;
    }

inline TInt TDereferencer::GetReadingPos()
    {
    return iTotalRead;
    }

#endif