--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/ServerCore/Src/alftextstylehandlers.cpp Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,271 @@
+/*
+* 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: Text style handlers
+*
+*/
+
+
+
+#include "alftextstylehandlers.h"
+#include "alf/alfconstants.h"
+#include <uiacceltk/HuiEnv.h>
+#include <uiacceltk/huitextstylemanager.h>
+#include <gdi.h>
+
+//-----------------------------------------------------------------------------
+// Create a handler for platform, preconfigured, or cloned text style
+//-----------------------------------------------------------------------------
+TAlfTextStyleHandler::TAlfTextStyleHandler(
+ MAlfInterfaceProvider& aResolver,
+ TInt aId1,
+ TInt aId2,
+ TInt aConstructionType)
+ : iResolver(aResolver), iTextStyle( NULL )
+ {
+ // Retrieve the text style manager
+ CHuiTextStyleManager& manager = aResolver.SharedHuiEnv()->TextStyleManager();
+ TInt id = KErrNotFound;
+
+
+ switch(aConstructionType)
+ {
+ case EAlfPlatformTextStyleCreate:
+ TRAP_IGNORE(
+ {
+ // Get parent text style handler
+ TAlfTextStyleHandler* parentHandler =
+ static_cast<TAlfTextStyleHandler*>(
+ aResolver.GetInterfaceL(EAlfTextStyleHandler, aId2));
+
+ // Create a platform text style
+ id = manager.CreatePlatformTextStyleL(
+ aId1,
+ parentHandler->TextStyleId());
+ })
+
+ iTextStyle = manager.TextStyle(id);
+ break;
+
+ case EAlfPreconfiguredTextStyleCreate:
+ iTextStyle = manager.TextStyle(aId1);
+ break;
+
+ case EAlfPlatformTextStyleCopy:
+ TRAP_IGNORE(
+ {
+ // Get parent text style handler
+ TAlfTextStyleHandler* sourceHandler =
+ static_cast<TAlfTextStyleHandler*>(
+ aResolver.GetInterfaceL(EAlfTextStyleHandler, aId1));
+
+ // Create a platform text style
+ id = manager.CopyTextStyleL(sourceHandler->TextStyleId());
+ })
+
+ iTextStyle = manager.TextStyle(id);
+ break;
+
+ default:
+ break;
+ }
+ }
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void TAlfTextStyleHandler::Release()
+ {
+ if ( iTextStyle )
+ {
+ CHuiTextStyleManager& manager = iResolver.SharedHuiEnv()->TextStyleManager();
+ (void)manager.DeleteTextStyle( iTextStyle->Id() ); // ignore error
+ }
+ delete this;
+ }
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+TAny* TAlfTextStyleHandler::GetInterface(const THuiInterfaceSupport& aInterface)
+ {
+ if(aInterface == EAlfTextStyleHandler)
+ {
+ return this;
+ }
+ return NULL;
+ }
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+void TAlfTextStyleHandler::HandleCmdL(
+ TInt aCommandId,
+ const TDesC8& aInputBuffer,
+ TDes8& aResponse)
+ {
+ switch (aCommandId)
+ {
+ case EAlfTextStyleSetParent:
+ {
+ TInt* param = (TInt*) aInputBuffer.Ptr();
+ // Get parent text style handler
+ TAlfTextStyleHandler* parentHandler =
+ static_cast<TAlfTextStyleHandler*>(
+ iResolver.GetInterfaceL(EAlfTextStyleHandler, *param));
+ iTextStyle->SetParentId(parentHandler->TextStyleId());
+ break;
+ }
+
+ case EAlfTextStyleSetTextColor:
+ {
+ TRgb* param = (TRgb*) aInputBuffer.Ptr();
+ iTextStyle->SetTextColor(*param);
+ break;
+ }
+
+ case EAlfTextStyleSetTextSizeInTwips:
+ {
+ TInt2* params = (TInt2*) aInputBuffer.Ptr();
+ iTextStyle->SetTextSizeInTwips(params->iInt1, params->iInt2);
+ break;
+ }
+
+ case EAlfTextStyleSetTextSizeInPixels:
+ {
+ TInt2* params = (TInt2*) aInputBuffer.Ptr();
+ iTextStyle->SetTextSizeInPixels(params->iInt1, params->iInt2);
+ break;
+ }
+
+ case EAlfTextStyleSetBold:
+ {
+ TInt* param = (TInt*) aInputBuffer.Ptr();
+ iTextStyle->SetStrokeWeight(*param);
+ break;
+ }
+
+ case EAlfTextStyleSetItalic:
+ {
+ TInt* param = (TInt*) aInputBuffer.Ptr();
+ iTextStyle->SetPosture(*param);
+ break;
+ }
+
+ case EAlfTextStyleSetUnderline:
+ {
+ TInt* param = (TInt*) aInputBuffer.Ptr();
+ iTextStyle->SetUnderline(*param);
+ break;
+ }
+
+ case EAlfTextStyleSetStrikeThrough:
+ {
+ TInt* param = (TInt*) aInputBuffer.Ptr();
+ iTextStyle->SetStrikeThrough(*param);
+ break;
+ }
+
+ case EAlfTextStyleTextColor:
+ {
+ const TRgb textColor = iTextStyle->TextColor();
+ TPckg<TRgb> resultPckg(textColor);
+ aResponse = resultPckg;
+ break;
+ }
+
+ case EAlfTextStyleSizeInTwips:
+ {
+ TInt* param = (TInt*) aInputBuffer.Ptr();
+ const TInt textSizeInTwips = iTextStyle->TextSizeInTwips(*param);
+ TPckg<TInt> resultPckg(textSizeInTwips);
+ aResponse = resultPckg;
+ break;
+ }
+
+ case EAlfTextStyleSizeInPixels:
+ {
+ TInt* param = (TInt*) aInputBuffer.Ptr();
+ const TInt textSizeInPixels = iTextStyle->TextSizeInPixels(*param);
+ TPckg<TInt> resultPckg(textSizeInPixels);
+ aResponse = resultPckg;
+ break;
+ }
+
+ case EAlfTextStyleIsBold:
+ {
+ const TBool isBold = iTextStyle->StrokeWeight();
+ TPckg<TBool> resultPckg(isBold);
+ aResponse = resultPckg;
+ break;
+ }
+
+ case EAlfTextStyleIsItalic:
+ {
+ const TBool isItalic = iTextStyle->Posture();
+ TPckg<TBool> resultPckg(isItalic);
+ aResponse = resultPckg;
+ break;
+ }
+
+ case EAlfTextStyleIsUnderline:
+ {
+ const TBool isUnderline = iTextStyle->Underline();
+ TPckg<TBool> resultPckg(isUnderline);
+ aResponse = resultPckg;
+ break;
+ }
+
+ case EAlfTextStyleIsStrikeThrough:
+ {
+ const TBool isStrikeThrough = iTextStyle->StrikeThrough();
+ TPckg<TBool> resultPckg(isStrikeThrough);
+ aResponse = resultPckg;
+ break;
+ }
+
+ case EAlfTextStyleGetTypeface:
+ {
+ TTypeface typeface;
+ iTextStyle->GetTypeface( typeface );
+ TPckg<TTypeface> resultPckg(typeface);
+ aResponse = resultPckg;
+ break;
+ }
+
+ case EAlfTextStyleSetTextPaneHeightInPixels:
+ {
+ TInt2* params = (TInt2*) aInputBuffer.Ptr();
+ iTextStyle->SetTextPaneHeightInPixels(params->iInt1, params->iInt2);
+ break;
+ }
+ case EAlfTextStyleServerHandle:
+ {
+ TInt id = iTextStyle->Id();
+ TPckg<TInt> resultPckg(id);
+ aResponse = resultPckg;
+ break;
+ }
+
+ default:
+ User::Leave(KErrNotSupported);
+ }
+ }
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+TInt TAlfTextStyleHandler::TextStyleId() const
+ {
+ return iTextStyle->Id();
+ }