svgtopt/nvgdecoder/src/FloatFixPt.cpp
author hgs
Wed, 03 Nov 2010 18:56:10 +0200
changeset 46 88edb906c587
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  NVG Decoder source file
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
#include "FloatFixPt.h"
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
//==============================floatfixpt functions============================
hgs
parents:
diff changeset
    20
// ==========================================================================
hgs
parents:
diff changeset
    21
// Constructor, default to zero
hgs
parents:
diff changeset
    22
// ==========================================================================
hgs
parents:
diff changeset
    23
TFloatFixPt::TFloatFixPt() : iValue(0)
hgs
parents:
diff changeset
    24
    {
hgs
parents:
diff changeset
    25
    }
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// ==========================================================================
hgs
parents:
diff changeset
    28
// Constructor
hgs
parents:
diff changeset
    29
// ==========================================================================
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
TFloatFixPt::TFloatFixPt(TInt aVal)
hgs
parents:
diff changeset
    32
    {
hgs
parents:
diff changeset
    33
    iValue = (aVal << KFixPtFrac);
hgs
parents:
diff changeset
    34
    }
hgs
parents:
diff changeset
    35
// ==========================================================================
hgs
parents:
diff changeset
    36
// Constructor
hgs
parents:
diff changeset
    37
// ==========================================================================
hgs
parents:
diff changeset
    38
 TFloatFixPt::TFloatFixPt(TInt32 aVal)
hgs
parents:
diff changeset
    39
    {
hgs
parents:
diff changeset
    40
    iValue = (aVal << KFixPtFrac);
hgs
parents:
diff changeset
    41
    }
hgs
parents:
diff changeset
    42
 TFloatFixPt::TFloatFixPt(TInt aVal, TBool /*a*/)
hgs
parents:
diff changeset
    43
    {
hgs
parents:
diff changeset
    44
    iValue = aVal;
hgs
parents:
diff changeset
    45
    }
hgs
parents:
diff changeset
    46
// ==========================================================================
hgs
parents:
diff changeset
    47
// Constructor
hgs
parents:
diff changeset
    48
// ==========================================================================
hgs
parents:
diff changeset
    49
 TFloatFixPt::TFloatFixPt(TReal32 aVal)
hgs
parents:
diff changeset
    50
{
hgs
parents:
diff changeset
    51
    iValue = svgScalarFromFloat(aVal);
hgs
parents:
diff changeset
    52
}
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
// ==========================================================================
hgs
parents:
diff changeset
    55
// Assignment operator
hgs
parents:
diff changeset
    56
// ==========================================================================
hgs
parents:
diff changeset
    57
 TFloatFixPt& TFloatFixPt::operator=(TReal32 aVal)
hgs
parents:
diff changeset
    58
{
hgs
parents:
diff changeset
    59
    iValue = svgScalarFromFloat(aVal);
hgs
parents:
diff changeset
    60
    return *this;
hgs
parents:
diff changeset
    61
}
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
 void TFloatFixPt::copyfloatfix(TInt aVal)
hgs
parents:
diff changeset
    64
{
hgs
parents:
diff changeset
    65
	iValue = aVal;
hgs
parents:
diff changeset
    66
}
hgs
parents:
diff changeset
    67
// ==========================================================================
hgs
parents:
diff changeset
    68
// Round to the nearest whole number
hgs
parents:
diff changeset
    69
// ==========================================================================
hgs
parents:
diff changeset
    70
 TInt32 TFloatFixPt::Round()
hgs
parents:
diff changeset
    71
    {
hgs
parents:
diff changeset
    72
    if (0 != (iValue & 0x8000))
hgs
parents:
diff changeset
    73
        return (iValue >> KFixPtFrac) + 1;
hgs
parents:
diff changeset
    74
    else
hgs
parents:
diff changeset
    75
        return (iValue >> KFixPtFrac);
hgs
parents:
diff changeset
    76
    }
hgs
parents:
diff changeset
    77
// ===================================================================
hgs
parents:
diff changeset
    78
// Addition operation
hgs
parents:
diff changeset
    79
// ==========================================================================
hgs
parents:
diff changeset
    80
 TFloatFixPt TFloatFixPt::operator+(const TFloatFixPt& aVal) const
hgs
parents:
diff changeset
    81
    {
hgs
parents:
diff changeset
    82
    return TFloatFixPt(iValue + aVal.iValue, ETrue);
hgs
parents:
diff changeset
    83
    }
hgs
parents:
diff changeset
    84
//==============================floatfixpt functions============================
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
 TFloatFixPt::operator TReal32() const
hgs
parents:
diff changeset
    87
{
hgs
parents:
diff changeset
    88
    return ((TReal32) iValue) / KFixPtFracVal;
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
}
hgs
parents:
diff changeset
    91
// ==========================================================================
hgs
parents:
diff changeset
    92
// Get 32-bit representation
hgs
parents:
diff changeset
    93
// ==========================================================================
hgs
parents:
diff changeset
    94
 TInt32 TFloatFixPt::RawData()
hgs
parents:
diff changeset
    95
    {
hgs
parents:
diff changeset
    96
    return iValue;
hgs
parents:
diff changeset
    97
    }    
hgs
parents:
diff changeset
    98
 //--------------------------------EndOfFile------------------------------------