--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteapp/src/mvsvideocontrol.cpp Tue Feb 02 01:56:55 2010 +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 <eikenv.h>
+#include <mvs/videoplayagent.h>
+
+#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();
+ }