--- a/qtmobility/plugins/multimedia/wmp/qwmpvideooverlay.cpp Fri Apr 16 15:51:22 2010 +0300
+++ b/qtmobility/plugins/multimedia/wmp/qwmpvideooverlay.cpp Mon May 03 13:18:40 2010 +0300
@@ -48,7 +48,7 @@
, m_player(player)
, m_object(object)
, m_inPlaceObject(0)
- , m_aspectRatioMode(QVideoWidget::KeepAspectRatio)
+ , m_aspectRatioMode(Qt::KeepAspectRatio)
, m_enabled(false)
{
HRESULT hr;
@@ -120,8 +120,27 @@
m_object->SetExtent(DVASPECT_CONTENT, &hmSize);
- RECT rcPos = { rect.left(), rect.top(), rect.right(), rect.bottom() };
- m_inPlaceObject->SetObjectRects(&rcPos, &rcPos);
+ RECT rcClip = { rect.left(), rect.top(), rect.right(), rect.bottom() };
+
+ if (m_aspectRatioMode == Qt::KeepAspectRatioByExpanding) {
+ QSize size = m_sizeHint;
+ size.scale(rect.width(), rect.height(), Qt::KeepAspectRatioByExpanding);
+
+ QRect positionRect(QPoint(0, 0), size);
+ positionRect.moveCenter(rect.center());
+
+ RECT rcPos =
+ {
+ positionRect.left(),
+ positionRect.top(),
+ positionRect.right(),
+ positionRect.bottom()
+ };
+
+ m_inPlaceObject->SetObjectRects(&rcPos, &rcClip);
+ } else {
+ m_inPlaceObject->SetObjectRects(&rcClip, &rcClip);
+ }
}
m_displayRect = rect;
@@ -153,27 +172,18 @@
}
}
-QVideoWidget::AspectRatioMode QWmpVideoOverlay::aspectRatioMode() const
+Qt::AspectRatioMode QWmpVideoOverlay::aspectRatioMode() const
{
return m_aspectRatioMode;
}
-void QWmpVideoOverlay::setAspectRatioMode(QVideoWidget::AspectRatioMode mode)
+void QWmpVideoOverlay::setAspectRatioMode(Qt::AspectRatioMode mode)
{
- switch (mode) {
- case QVideoWidget::KeepAspectRatio:
- m_player->put_stretchToFit(FALSE);
+ m_aspectRatioMode = mode;
- m_aspectRatioMode = mode;
- break;
- case QVideoWidget::IgnoreAspectRatio:
- m_player->put_stretchToFit(TRUE);
+ m_player->put_stretchToFit(mode != Qt::KeepAspectRatio);
- m_aspectRatioMode = mode;
- break;
- default:
- break;
- }
+ setDisplayRect(m_displayRect);
}
void QWmpVideoOverlay::repaint()
@@ -283,10 +293,30 @@
QueryInterface(IID_IOleInPlaceUIWindow, reinterpret_cast<void **>(ppDoc));
if (m_enabled) {
- QRect rect = displayRect();
+ SetRect(lprcClipRect,
+ m_displayRect.left(),
+ m_displayRect.top(),
+ m_displayRect.right(),
+ m_displayRect.bottom());
- SetRect(lprcPosRect, rect.left(), rect.top(), rect.right(), rect.bottom());
- SetRect(lprcClipRect, rect.left(), rect.top(), rect.right(), rect.bottom());
+ if (m_aspectRatioMode == Qt::KeepAspectRatioByExpanding) {
+ QSize size = m_sizeHint;
+ size.scale(
+ m_displayRect.width(),
+ m_displayRect.height(),
+ Qt::KeepAspectRatioByExpanding);
+
+ QRect positionRect(QPoint(0, 0), size);
+ positionRect.moveCenter(m_displayRect.center());
+
+ SetRect(lprcPosRect,
+ positionRect.left(),
+ positionRect.top(),
+ positionRect.right(),
+ positionRect.bottom());
+ } else {
+ *lprcPosRect = *lprcClipRect;
+ }
} else {
SetRectEmpty(lprcPosRect);
SetRectEmpty(lprcClipRect);