diff -r 000000000000 -r bde4ae8d615e os/mm/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteapp/src/mvsvideocontrol.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/mm/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteapp/src/mvsvideocontrol.cpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,207 @@ +// Copyright (c) 2008-2009 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: +// + +#include +#include + +#include "mvsvideocontrol.h" + +CMVSVideoControl* CMVSVideoControl::NewLC(CMVSVideoPlayAgent& aVideoPlayAgent, TInt aDisplay, RWindowTreeNode& aParent) + { + CMVSVideoControl* self = new (ELeave) CMVSVideoControl(aVideoPlayAgent, aDisplay); + CleanupStack::PushL(self); + self->ConstructL(aParent); + return self; + } + +CMVSVideoControl* CMVSVideoControl::NewL(CMVSVideoPlayAgent& aVideoPlayAgent, TInt aDisplay, RWindowTreeNode& aParent) + { + CMVSVideoControl* self = CMVSVideoControl::NewLC(aVideoPlayAgent, aDisplay, aParent); + CleanupStack::Pop(self); + return self; + } + +CMVSVideoControl::CMVSVideoControl(CMVSVideoPlayAgent& aVideoPlayAgent, TInt aDisplay) : + iVideoPlayAgent(aVideoPlayAgent), + iDisplay(aDisplay) + { + } + +void CMVSVideoControl::ConstructL(RWindowTreeNode& aParent) + { + CreateWindowL(aParent); + iPip = CMVSPipControl::NewL(Window()); + + Window().SetBackgroundColor(KRgbDarkGray); + } + +CMVSVideoControl::~CMVSVideoControl() + { + iOverlayText.Close(); + delete iPip; + } + +RWindow& CMVSVideoControl::ControlWindow() const + { + return Window(); + } + +TInt CMVSVideoControl::ScreenNumber() const + { + return iDisplay; + } + +CMVSPipControl& CMVSVideoControl::Pip() const + { + return *iPip; + } + +void CMVSVideoControl::EnablePip(CMVSPipControl::TRenderType aRenderType) + { + iPip->ControlWindow().SetVisible(ETrue); + iPip->SetRenderType(aRenderType); + } + +void CMVSVideoControl::DisablePip() + { + iPip->ControlWindow().SetVisible(EFalse); + } + +void CMVSVideoControl::SetOverlayTextL(const TDesC& aOverlayText) + { + iOverlayText.Close(); + iOverlayText.CreateL(aOverlayText); + } + +void CMVSVideoControl::ClearOverlayText() + { + iOverlayText.Close(); + } + +#ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT +void CMVSVideoControl::Draw(const TRect& aRect) const +#else +void CMVSVideoControl::Draw(const TRect& /*aRect*/) const +#endif + { +#ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT + iVideoPlayAgent.RenderSubtitle(aRect); +#endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT + + if (0 < iOverlayText.Length()) + { + //Establish a Graphics Context + CWindowGc& gc = SystemGc(); + + //Establish a drawing rectangle + TRect rect=Rect(); + + // Draw the overlay text if needed + gc.SetBrushStyle(CGraphicsContext::ENullBrush); + gc.SetBrushColor(KRgbRed); + + gc.SetPenStyle(CGraphicsContext::ESolidPen); + gc.SetPenColor(KRgbBlue); + + // Get a font + const CFont* appFont = CEikonEnv::Static()->AnnotationFont(); + gc.UseFont(appFont); + + // Rect will always be at lest 3 in size + rect.Shrink(3, 3); + TInt baseline = (rect.Height() + appFont->AscentInPixels()) >> 1; + + gc.DrawText(iOverlayText, rect, baseline, CGraphicsContext::ECenter); + + //Done with our font + gc.DiscardFont(); + } + } + +TInt CMVSVideoControl::CountComponentControls() const + { + return 1; + } + +CCoeControl* CMVSVideoControl::ComponentControl(TInt aIndex) const + { + if (aIndex == 0) + { + return iPip; + } + else + { + return NULL; + } + } + +CMVSPipControl* CMVSPipControl::NewL(RWindowTreeNode& aParent) + { + CMVSPipControl* self = new (ELeave) CMVSPipControl(); + CleanupStack::PushL(self); + self->ConstructL(aParent); + CleanupStack::Pop(self); + return self; + } + +CMVSPipControl::CMVSPipControl() + { + } + +void CMVSPipControl::ConstructL(RWindowTreeNode& aParent) + { + CreateWindowL(aParent); + Window().SetBackgroundColor(TRgb(0, 0)); + } + +CMVSPipControl::~CMVSPipControl() + { + } + +void CMVSPipControl::Draw(const TRect& /*aRect*/) const + { + } + +void CMVSPipControl::MmsehSurfaceCreated(TInt aDisplayId, const TSurfaceId& /*aId*/, const TRect& aCropRect, TVideoAspectRatio /*aAspectRatio*/) + { + __ASSERT_ALWAYS(iRenderType == EUseCrp, User::Invariant()); + iDisplayId = aDisplayId; + iCropRect = aCropRect; + } + +void CMVSPipControl::MmsehSurfaceParametersChanged(const TSurfaceId& /*aId*/, const TRect& /*aCropRect*/, TVideoAspectRatio /*aAspectRatio*/) + { + __ASSERT_ALWAYS(iRenderType == EUseCrp, User::Invariant()); + } + +void CMVSPipControl::MmsehRemoveSurface(const TSurfaceId& /*aId*/) + { + __ASSERT_ALWAYS(iRenderType == EUseCrp, User::Invariant()); + } + +void CMVSPipControl::SetRenderType(TRenderType aRenderType) + { + iRenderType = aRenderType; + } + +void CMVSPipControl::Clear() + { + DrawNow(); + } + +RWindow& CMVSPipControl::ControlWindow() const + { + return Window(); + }