uiacceltk/hitchcock/Client/src/alfborderbrush.cpp
changeset 0 15bf7259bb7c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/Client/src/alfborderbrush.cpp	Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,412 @@
+/*
+* Copyright (c) 2006 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:   Border brush
+*
+*/
+
+
+
+#include "alf/alfborderbrush.h"
+#include "alf/alfenv.h"
+#include "alf/alfgencomponent.h"
+#include "alf/alfimage.h"
+#include "alf/alftexture.h"
+#include "alflogger.h"
+#include "alfskinnableimage.h"
+#include "alf/alfconstants.h"
+
+#include <uiacceltk/HuiUtil.h>
+
+struct CAlfBorderBrush::TBorderBrushPrivateData
+    {
+    TAlfTimedPoint iThickness;
+    TAlfTimedPoint iEdgeOffset;
+    TAlfTimedPoint iImageOffset;
+    CAlfSkinnableImage* iImage;
+    };
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CAlfBorderBrush::CAlfBorderBrush()
+    : CAlfBrush()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// ConstructL
+// ---------------------------------------------------------------------------
+//
+void CAlfBorderBrush::ConstructL(
+    CAlfEnv& aEnv,
+    const TAlfXYMetric& aThickness,
+    const TAlfXYMetric& aEdgeOffset)
+    {
+    
+    TAlfCreateBorderBrushMetricParams params;
+    params.iThickness = aThickness; 
+    params.iEdgeOffset = aEdgeOffset;
+    TPckgC<TAlfCreateBorderBrushMetricParams> paramsPckg(params);
+    
+    
+    CAlfBrush::ConstructL(
+        aEnv,
+        EAlfBorderBrushCreateMetric,
+        0,
+        paramsPckg
+        );
+                
+    iBorderBrushData = new (ELeave) TBorderBrushPrivateData;
+    iBorderBrushData->iImage = NULL;
+    iBorderBrushData->iImage = new (ELeave) CAlfSkinnableImage(&aEnv);       
+    }
+
+
+// ---------------------------------------------------------------------------
+// ConstructL
+// ---------------------------------------------------------------------------
+//
+void CAlfBorderBrush::ConstructL(
+    CAlfEnv& aEnv,
+    TInt aThicknessWidth, 
+    TInt aThicknessHeight,
+    TInt aEdgeOffsetX, 
+    TInt aEdgeOffsetY )
+    {
+    
+    TAlfCreateBorderBrushParams params;
+    params.iThicknessWidth = aThicknessWidth; 
+    params.iThicknessHeight = aThicknessHeight;
+    params.iEdgeOffsetX = aEdgeOffsetX;
+    params.iEdgeOffsetY = aEdgeOffsetY;
+    TPckgC<TAlfCreateBorderBrushParams> paramsPckg(params);
+    
+    
+    CAlfBrush::ConstructL(
+        aEnv,
+        EAlfBorderBrushCreate,
+        0,
+        paramsPckg
+        );
+                
+    iBorderBrushData = new (ELeave) TBorderBrushPrivateData;
+    iBorderBrushData->iImage = NULL;
+    iBorderBrushData->iImage = new (ELeave) CAlfSkinnableImage(&aEnv);       
+    }
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAlfBorderBrush* CAlfBorderBrush::NewL(
+    CAlfEnv& aEnv,
+    const TAlfXYMetric& aThickness,
+    const TAlfXYMetric& aEdgeOffset)
+    {
+    CAlfBorderBrush* self = CAlfBorderBrush::NewLC(
+        aEnv,
+        aThickness,
+        aEdgeOffset);
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAlfBorderBrush* CAlfBorderBrush::NewLC(
+    CAlfEnv& aEnv,
+    const TAlfXYMetric& aThickness,
+    const TAlfXYMetric& aEdgeOffset)
+    {
+    CAlfBorderBrush* self = new( ELeave ) CAlfBorderBrush;
+    CleanupStack::PushL( self );
+    self->ConstructL(
+        aEnv,
+        aThickness,
+        aEdgeOffset);
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAlfBorderBrush* CAlfBorderBrush::NewL(
+    CAlfEnv& aEnv,
+    TInt aThicknessWidth, 
+    TInt aThicknessHeight,
+    TInt aEdgeOffsetX, 
+    TInt aEdgeOffsetY )
+    {
+    CAlfBorderBrush* self = CAlfBorderBrush::NewLC(
+        aEnv,
+        aThicknessWidth,
+        aThicknessHeight,
+        aEdgeOffsetX,
+        aEdgeOffsetY );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CAlfBorderBrush* CAlfBorderBrush::NewLC(
+    CAlfEnv& aEnv,
+    TInt aThicknessWidth, 
+    TInt aThicknessHeight,
+    TInt aEdgeOffsetX, 
+    TInt aEdgeOffsetY)
+    {
+    CAlfBorderBrush* self = new( ELeave ) CAlfBorderBrush;
+    CleanupStack::PushL( self );
+    self->ConstructL(
+        aEnv,
+        aThicknessWidth,
+        aThicknessHeight,
+        aEdgeOffsetX,
+        aEdgeOffsetY );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CAlfBorderBrush::~CAlfBorderBrush()
+    {
+    if (iBorderBrushData)
+        {
+        delete iBorderBrushData->iImage;
+        iBorderBrushData->iImage = NULL;    	
+        }
+
+    delete iBorderBrushData;
+    }
+
+// ---------------------------------------------------------------------------
+// Set image
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfBorderBrush::SetImage(const TAlfImage& aImage)
+    {    
+    iBorderBrushData->iImage->SetImage(aImage); // This texturizes skin graphics if needed
+    
+    TAlfImageParams params(iBorderBrushData->iImage->Image());
+    
+    TPckgC<TAlfImageParams> buf(params);
+    TInt err = Comms()->DoCmdNoReply(EAlfBorderBrushSetImage, buf );
+    
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfBorderBrush::SetImage ignore error %d", err )
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Get image
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C const TAlfImage& CAlfBorderBrush::Image() const
+    {
+    return iBorderBrushData->iImage->Image();   
+    }
+
+// ---------------------------------------------------------------------------
+// Set color
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfBorderBrush::SetColor(const TRgb& aColor)
+    {
+    // Just send to server
+    TPckgC<TRgb> inBuf(aColor);
+    TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetColor, inBuf );
+    if ( err )
+        {
+        __ALFLOGSTRING1( "CAlfBorderBrush::SetColor ignore error %d", err )
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Thickness
+// ---------------------------------------------------------------------------
+//
+EXPORT_C const TAlfTimedPoint& CAlfBorderBrush::Thickness() const
+    {
+    TPckg<TAlfTimedPoint> buf(iBorderBrushData->iThickness);
+    TInt err = Comms()->DoSynchronousCmd( EAlfBorderBrushGetThickness, buf, buf);
+
+    if ( err != KErrNone )
+        {
+        __ALFLOGSTRING1( "CAlfBorderBrush::Thickness panic error %d", err )
+        USER_INVARIANT();
+        }
+    
+    return iBorderBrushData->iThickness;
+    }
+  
+// ---------------------------------------------------------------------------
+// Sets thickness
+// ---------------------------------------------------------------------------
+//  
+EXPORT_C void CAlfBorderBrush::SetThickness(const TAlfTimedPoint& aThickness)
+    {
+    TPckgC<TAlfTimedPoint> buf(aThickness);
+    TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetThickness, buf);
+
+    if ( err == KErrNone )
+        {
+        iBorderBrushData->iThickness = aThickness;
+        }
+    else
+        {
+        __ALFLOGSTRING1( "CAlfBorderBrush::SetThickness panic error %d", err )
+        USER_INVARIANT();
+        }
+    }
+   
+// ---------------------------------------------------------------------------
+// Edge offset
+// ---------------------------------------------------------------------------
+// 
+EXPORT_C const TAlfTimedPoint& CAlfBorderBrush::EdgeOffset() const
+    {
+    TPckg<TAlfTimedPoint> buf(iBorderBrushData->iEdgeOffset);
+    TInt err = Comms()->DoSynchronousCmd( EAlfBorderBrushGetEdgeOffset, buf, buf);
+
+    if ( err != KErrNone )
+        {
+        __ALFLOGSTRING1( "CAlfBorderBrush::EdgeOffset panic error %d", err )
+        USER_INVARIANT();
+        }
+    
+    return iBorderBrushData->iEdgeOffset;
+    }
+    
+// ---------------------------------------------------------------------------
+// Set edge offset
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CAlfBorderBrush::SetEdgeOffset(const TAlfTimedPoint& aEdgeOffset)
+    {
+    TPckgC<TAlfTimedPoint> buf(aEdgeOffset);
+    TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetEdgeOffset, buf );
+
+    if ( err == KErrNone )
+        {
+        iBorderBrushData->iEdgeOffset = aEdgeOffset;
+        }
+    else
+        {
+        __ALFLOGSTRING1( "CAlfBorderBrush::SetEdgeOffset panic error %d", err )
+        USER_INVARIANT();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Image offset
+// ---------------------------------------------------------------------------
+//      
+EXPORT_C const TAlfTimedPoint& CAlfBorderBrush::ImageOffset() const
+    {
+    TPckg<TAlfTimedPoint> buf(iBorderBrushData->iImageOffset);
+    TInt err = Comms()->DoSynchronousCmd( EAlfBorderBrushGetImageOffset, buf, buf);
+
+    if ( err != KErrNone )
+        {
+        __ALFLOGSTRING1( "CAlfBorderBrush::ImageOffset panic error %d", err )
+        USER_INVARIANT();
+        }
+    
+    return iBorderBrushData->iImageOffset;
+    }
+
+// ---------------------------------------------------------------------------
+// Sets image offset
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C void CAlfBorderBrush::SetImageOffset(const TAlfTimedPoint& aImageOffset)
+    {
+    TPckgC<TAlfTimedPoint> buf(aImageOffset);
+
+    TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetImageOffset, buf );
+
+    if ( err == KErrNone )
+        {
+        iBorderBrushData->iImageOffset = aImageOffset;
+        }
+    else
+        {
+        __ALFLOGSTRING1( "CAlfBorderBrush::SetImageOffset panic error %d", err )
+        USER_INVARIANT();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Sets image offset
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C void CAlfBorderBrush::SetImageOffset(const TAlfXYMetric& aImageOffset)
+    {
+    TPckgC<TAlfXYMetric> buf(aImageOffset);
+
+    TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetImageOffsetMetric, buf );
+
+    if ( err != KErrNone )
+        {
+        __ALFLOGSTRING1( "CAlfBorderBrush::SetImageOffset panic error %d", err )
+        USER_INVARIANT();
+        }        
+    }
+// ---------------------------------------------------------------------------
+// Sets edge offset
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C void CAlfBorderBrush::SetEdgeOffset(const TAlfXYMetric& aEdgeOffset)
+    {
+    TPckgC<TAlfXYMetric> buf(aEdgeOffset);
+    TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetEdgeOffsetMetric, buf);
+
+    if ( err != KErrNone )
+        {
+        __ALFLOGSTRING1( "CAlfBorderBrush::SetEdgeOffset panic error %d", err )
+        USER_INVARIANT();
+        }        
+    }
+
+// ---------------------------------------------------------------------------
+// Sets thickness
+// ---------------------------------------------------------------------------
+//    
+EXPORT_C void CAlfBorderBrush::SetThickness(const TAlfXYMetric& aThickness)
+    {
+    TPckgC<TAlfXYMetric> buf(aThickness);
+    TInt err = Comms()->DoCmdNoReply( EAlfBorderBrushSetThicknessMetric, buf);
+
+    if ( err != KErrNone )
+        {
+        __ALFLOGSTRING1( "CAlfBorderBrush::SetThickness panic error %d", err )
+        USER_INVARIANT();
+        }        
+    }