--- a/camerauis/cameraapp/generic/src/camlinevfgriddrawer.cpp Thu Aug 19 09:36:57 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,377 +0,0 @@
-/*
-* Copyright (c) 2007 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: Implemantation for CCamLineVfGridDrawer class.
-*
-* Copyright © 2007 Nokia. All rights reserved.
-* This material, including documentation and any related computer
-* programs, is protected by copyright controlled by Nokia. All
-* rights are reserved. Copying, including reproducing, storing,
-* adapting or translating, any or all of this material requires the
-* prior written consent of Nokia. This material also contains
-* confidential information which may not be disclosed to others
-* without the prior written consent of Nokia.
-
-*
-*
-*/
-
-
-#include <gdi.h>
-#include "camlinevfgriddrawer.h"
-#include "camlogging.h"
-
-// ======== LOCAL CONSTANTS ========
-
-namespace
- {
- const TInt KArrayGranularity = 8;
- const TInt KMaxLineCount = 64;
-
- const TInt KPenColorRed = 255;
- const TInt KPenColorGreen = 0;//255;
- const TInt KPenColorBlue = 0;//255;
- const TInt KPenColorAlpha = 255;//128;
- const TInt KPenWidth = 2;
- const TInt KPenHeight = 2;
- const CGraphicsContext::TPenStyle KPenStyle = CGraphicsContext::ESolidPen;
- }
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-// ===========================================================================
-// Public part
-
-// ---------------------------------------------------------------------------
-// static NewL
-//
-// 2-phased constructor
-// ---------------------------------------------------------------------------
-//
-CCamLineVfGridDrawer*
-CCamLineVfGridDrawer::NewL()
- {
- CCamLineVfGridDrawer* self = new (ELeave) CCamLineVfGridDrawer;
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CCamLineVfGridDrawer::~CCamLineVfGridDrawer()
- {
- PRINT( _L("Camera => ~CCamLineVfGridDrawer") );
- iLineArray.Reset();
- iLineArray.Close();
- PRINT( _L("Camera <= ~CCamLineVfGridDrawer") );
- }
-
-
-
-// ---------------------------------------------------------------------------
-// virtual InitL
-// * from MCamVfGridDrawer
-//
-// Initialize the drawer.
-// ---------------------------------------------------------------------------
-//
-void
-CCamLineVfGridDrawer::InitL( TAny* /*aParam*/ )
- {
- }
-
-// ---------------------------------------------------------------------------
-// virtual Draw( CBitmapContext& )
-// * from MCamVfGridDrawer
-//
-// Draw the grid. If not set visible nothing is drawn.
-// ---------------------------------------------------------------------------
-//
-void
-CCamLineVfGridDrawer::Draw( CBitmapContext& aGc ) const
- {
- if( iVisible &&
- iLineArray.Count() > 0 )
- {
- // Set drawing properties.
- aGc.SetPenStyle( iPenStyle );
- aGc.SetPenSize ( iPenSize );
- aGc.SetPenColor( iPenColor );
-
- // Draw the lines
- for( TInt i = 0; i < iLineArray.Count(); i++ )
- {
- // Top-left and bottom-right corners of the rect
- // represent the line ends.
- aGc.DrawLine( iLineArray[i].iTl, iLineArray[i].iBr );
- }
-
- // Clear any settings made to gc
- aGc.Reset();
- }
- else
- {
- // Not visible => draw nothing.
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// virtual Draw( const TRect&, CBitmapContext& )
-// * from MCamVfGridDrawer
-//
-// Draw part of the grid. If not set visible nothing is drawn.
-// Note:
-// Only pure vertical and pure horizontal lines
-// get drawn to right place if lines expand outside
-// the aRect rectangle given here as parameter.
-// ---------------------------------------------------------------------------
-//
-void
-CCamLineVfGridDrawer::Draw( const TRect& aRect,
- CBitmapContext& aGc ) const
- {
- if( iVisible &&
- iLineArray.Count() > 0 )
- {
- // Limit the drawing to given rectangle.
- // Drawing outside this rectangle has no visible effect.
- aGc.SetClippingRect( aRect );
- // Make the same drawing operations as in full screen draw.
- // The drawing is so simple that any optimization is
- // probably more time consuming than the drawing itself.
- // Draw resets the gc in the end, so clipping rect is cleared.
- Draw( aGc );
- }
- else
- {
- // Not visible => draw nothing.
- }
- }
-
-// ---------------------------------------------------------------------------
-// virtual SetVisible
-// * from MCamVfGridDrawer
-//
-// Set visibility of the grid.
-//
-// ---------------------------------------------------------------------------
-//
-void
-CCamLineVfGridDrawer::SetVisible( TBool aVisible )
- {
- iVisible = aVisible;
- }
-
-
-
-// ---------------------------------------------------------------------------
-// virtual IsVisible
-// * from MCamVfGridDrawer
-//
-// Get visibility of the grid.
-//
-// ---------------------------------------------------------------------------
-//
-TBool
-CCamLineVfGridDrawer::IsVisible() const
- {
- return iVisible;
- }
-
-
-// ---------------------------------------------------------------------------
-// SetLinesL
-// * from MCamVfGridDrawer
-//
-// Set the line end pair array.
-// ---------------------------------------------------------------------------
-//
-void
-CCamLineVfGridDrawer::SetLinesL( const RLineArray& aLineArray )
- {
- TInt newLineCount = aLineArray.Count();
- if( newLineCount > KMaxLineCount )
- {
- User::Leave( KErrArgument );
- }
-
- iLineArray.Reset();
- for( TInt i = 0; i < newLineCount; i++ )
- {
- iLineArray.Append( aLineArray[i] );
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// SetLinesL
-//
-// Set the line end pair array by defining the count and bordered property
-// of lines per horizontal and vertical axis.
-// ---------------------------------------------------------------------------
-//
-void
-CCamLineVfGridDrawer::SetLinesL( const TRect& aDrawingRect,
- TInt aHorizontalLines,
- TInt aVerticalLines,
- TBool aBorderedGrid /* = EFalse */)
- {
- // -------------------------------------------------------
- // Check the max limit for lines does not exceed.
- if( aHorizontalLines < 0
- || aVerticalLines < 0
- || aHorizontalLines + aVerticalLines > KMaxLineCount
- )
- {
- User::Leave( KErrArgument );
- }
-
- // -------------------------------------------------------
- // Fill the line end array
- //
- // The lines are evenly spaced over the draw area axis in question.
- // The aBorderedGrid parameter determines whether the grid
- // draws lines to the borders of draw area:
- // E.g. 3 vertical lines: '[' and ']' are the draw area borders.
- // aBorderedGrid: [| | |]
- // !aBorderedGrid: [ | | | ]
- //
- // The formula for the location of i:th line when N lines
- // are used along dimension D:
- // - aBorderedGrid: ( i * D) / (N - 1)
- // - !aBorderedGrid: ((i+1) * D) / (N + 1)
- // * Divide by (N-1) needs special handling with N=1.
- // * Half of pen width is subtracted from the above formula result
- // to center the line to the calculated location.
- // * odd area or pen width/height may cause error of 1 pixel.
- TInt indexOffset = (aBorderedGrid ? 0 : 1);
- TInt countOffset = (aBorderedGrid ? -1 : 1);
-
- // -----------------------------------
- // First horizontal lines
- TInt height = aDrawingRect.Height();
- TInt leftX = aDrawingRect.iTl.iX;
- TInt rightX = aDrawingRect.iBr.iX;
-
- TInt i = 0;
- while( i < aHorizontalLines )
- {
- // Max used to make sure no div-by-zero
- TInt currentY = ((i+indexOffset)*height) / Max(1,aHorizontalLines+countOffset) - KPenHeight/2;
- iLineArray.Append( TRect( leftX, currentY, rightX, currentY ) );
- i++;
- }
-
- // -----------------------------------
- // Then vertical lines
- TInt width = aDrawingRect.Width();
- TInt topY = aDrawingRect.iTl.iY;
- TInt bottomY = aDrawingRect.iBr.iY;
-
- TInt j = 0;
- while( j < aVerticalLines )
- {
- // Max used to make sure no div-by-zero
- TInt currentX = leftX + ((j+indexOffset)*width) / Max(1,aVerticalLines+countOffset) - KPenWidth/2;
- iLineArray.Append( TRect( currentX, topY, currentX, bottomY ) );
- j++;
- }
- // -------------------------------------------------------
- }
-
-
-// ---------------------------------------------------------------------------
-// SetPenStyle
-//
-// Set the style of drawing pen.
-// See CGraphicsContext.
-// ---------------------------------------------------------------------------
-//
-void
-CCamLineVfGridDrawer::SetPenStyle( const CGraphicsContext::TPenStyle& aPenStyle )
- {
- iPenStyle = aPenStyle;
- }
-
-
-// ---------------------------------------------------------------------------
-// SetPenSize
-//
-// Set the size of drawing pen.
-// See CGraphicsContext.
-// ---------------------------------------------------------------------------
-//
-void
-CCamLineVfGridDrawer::SetPenSize( const TSize& aPenSize )
- {
- iPenSize = aPenSize;
- }
-
-// ---------------------------------------------------------------------------
-// SetPenColor
-//
-// Set the color of drawing pen.
-// See CGraphicsContext.
-// ---------------------------------------------------------------------------
-//
-void
-CCamLineVfGridDrawer::SetPenColor( const TRgb aPenColor )
- {
- iPenColor = aPenColor;
- }
-
-
-// ===========================================================================
-// Protected part
-
-// ---------------------------------------------------------------------------
-// ConstructL
-//
-// 2nd phase constructor.
-// ---------------------------------------------------------------------------
-//
-void
-CCamLineVfGridDrawer::ConstructL()
- {
- // empty
- }
-
-
-
-// ===========================================================================
-// Private part
-
-// ---------------------------------------------------------------------------
-// C++ constructor.
-// Called in 1st phase of construction.
-// ---------------------------------------------------------------------------
-//
-CCamLineVfGridDrawer::CCamLineVfGridDrawer()
- : iLineArray( KArrayGranularity ),
- iVisible( EFalse ),
- iPenStyle( KPenStyle ),
- iPenSize( KPenWidth, KPenHeight ),
- iPenColor( KPenColorRed, KPenColorGreen, KPenColorBlue, KPenColorAlpha )
- {
- // empty
- }
-
-
-// ============================== end of file ================================