svgtopt/gfx2d/src/GfxGeom/GfxRectangleIteratorP.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) 2002 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:  Graphics Extension Library source file
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include "GfxRectangleIteratorP.h"
hgs
parents:
diff changeset
    20
#include "GfxRectangle2D.h"
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    24
// Constructor
hgs
parents:
diff changeset
    25
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    26
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    27
// CGfxRectangleIteratorP::CGfxRectangleIteratorP( TGfxRectangularShape* aRect,
hgs
parents:
diff changeset
    28
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    29
CGfxRectangleIteratorP::CGfxRectangleIteratorP( TGfxRectangularShape* aRect,
hgs
parents:
diff changeset
    30
                                                TGfxAffineTransform* aTransform )
hgs
parents:
diff changeset
    31
    {
hgs
parents:
diff changeset
    32
    TFloatFixPt KZero;
hgs
parents:
diff changeset
    33
    if ( aRect->iWidth < KZero )
hgs
parents:
diff changeset
    34
        aRect->iWidth = KZero;
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
    if ( aRect->iHeight < KZero )
hgs
parents:
diff changeset
    37
        aRect->iHeight = KZero;
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
    iRect = aRect;
hgs
parents:
diff changeset
    40
    iTransform = aTransform;
hgs
parents:
diff changeset
    41
    }
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    44
// destructor
hgs
parents:
diff changeset
    45
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    46
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    47
// CGfxRectangleIteratorP::~CGfxRectangleIteratorP( )
hgs
parents:
diff changeset
    48
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    49
CGfxRectangleIteratorP::~CGfxRectangleIteratorP( )
hgs
parents:
diff changeset
    50
    {
hgs
parents:
diff changeset
    51
    }
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    54
// TGfxSegType CGfxRectangleIteratorP::CurrentSegment( TFloatFixPt* aCoords )
hgs
parents:
diff changeset
    55
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    56
TGfxSegType CGfxRectangleIteratorP::CurrentSegment( TFloatFixPt* aCoords )
hgs
parents:
diff changeset
    57
    {
hgs
parents:
diff changeset
    58
    TGfxSegType segtype;
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
    switch ( iIdx )
hgs
parents:
diff changeset
    61
        {
hgs
parents:
diff changeset
    62
        case 0:
hgs
parents:
diff changeset
    63
            aCoords[0] = iRect->iX;
hgs
parents:
diff changeset
    64
            aCoords[1] = iRect->iY;
hgs
parents:
diff changeset
    65
            segtype = EGfxSegMoveTo;
hgs
parents:
diff changeset
    66
            break;
hgs
parents:
diff changeset
    67
        case 1:
hgs
parents:
diff changeset
    68
            aCoords[0] = iRect->iX + iRect->iWidth;
hgs
parents:
diff changeset
    69
            aCoords[1] = iRect->iY ;
hgs
parents:
diff changeset
    70
            segtype = EGfxSegLineTo;
hgs
parents:
diff changeset
    71
            break;
hgs
parents:
diff changeset
    72
        case 2:
hgs
parents:
diff changeset
    73
            aCoords[0] = iRect->iX + iRect->iWidth;
hgs
parents:
diff changeset
    74
            aCoords[1] = iRect->iY + iRect->iHeight;
hgs
parents:
diff changeset
    75
            segtype = EGfxSegLineTo;
hgs
parents:
diff changeset
    76
            break;
hgs
parents:
diff changeset
    77
        case 3:
hgs
parents:
diff changeset
    78
            aCoords[0] = iRect->iX;
hgs
parents:
diff changeset
    79
            aCoords[1] = iRect->iY + iRect->iHeight;
hgs
parents:
diff changeset
    80
            segtype = EGfxSegLineTo;
hgs
parents:
diff changeset
    81
            break;
hgs
parents:
diff changeset
    82
        default:
hgs
parents:
diff changeset
    83
            segtype = EGfxSegClose;
hgs
parents:
diff changeset
    84
        }
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
    if ( !iTransform->IsIdentity() )
hgs
parents:
diff changeset
    87
        {
hgs
parents:
diff changeset
    88
        iTransform->Transform( aCoords, aCoords, 1 );
hgs
parents:
diff changeset
    89
        }
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
    return segtype;
hgs
parents:
diff changeset
    92
    }
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    95
// TBool CGfxRectangleIteratorP::IsDone()
hgs
parents:
diff changeset
    96
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    97
TBool CGfxRectangleIteratorP::IsDone()
hgs
parents:
diff changeset
    98
    {
hgs
parents:
diff changeset
    99
    return ( iIdx > 4 );
hgs
parents:
diff changeset
   100
    }
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
   103
// void CGfxRectangleIteratorP::Next()
hgs
parents:
diff changeset
   104
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   105
void CGfxRectangleIteratorP::NextL()
hgs
parents:
diff changeset
   106
    {
hgs
parents:
diff changeset
   107
    iIdx++;
hgs
parents:
diff changeset
   108
    }
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110