[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [sflphone-kde/contact_refactor] src: [ #44118 ] Fix preview
From: Emmanuel Lepage Vallee <emmanuel.lepage () savoirfairelinux ! com>
Date: 2014-03-31 21:20:01
Message-ID: E1WUjcf-0000Fd-T9 () scm ! kde ! org
[Download RAW message or body]
Git commit f51772db4f1d811e7feaf0a67c58bc2239c29708 by Emmanuel Lepage Vallee.
Committed on 31/03/2014 at 21:11.
Pushed by lepagevalleeemmanuel into branch 'contact_refactor'.
[ #44118 ] Fix preview
M +1 -0 src/actioncollection.cpp
M +1 -1 src/widgets/videodock.cpp
M +22 -3 src/widgets/videoglframe.cpp
M +3 -0 src/widgets/videoglframe.h
M +61 -55 src/widgets/videoscene.cpp
M +4 -3 src/widgets/videoscene.h
M +23 -5 src/widgets/videowidget3.cpp
M +5 -1 src/widgets/videowidget3.h
http://commits.kde.org/sflphone-kde/f51772db4f1d811e7feaf0a67c58bc2239c29708
diff --git a/src/actioncollection.cpp b/src/actioncollection.cpp
index 11772df..8870d4b 100644
--- a/src/actioncollection.cpp
+++ b/src/actioncollection.cpp
@@ -117,6 +117,7 @@ ActionCollection::ActionCollection(QObject* parent) : \
QObject(parent),m_pWizard( action_video_flip_vertical \
->setIcon(KIcon("object-flip-vertical" )); action_video_mute \
->setIcon(KIcon("camera-web" )); action_video_preview \
->setIcon(KIcon("view-preview" )); + action_video_preview \
->setCheckable(true); #endif
}
diff --git a/src/widgets/videodock.cpp b/src/widgets/videodock.cpp
index 64765e2..862f2dd 100644
--- a/src/widgets/videodock.cpp
+++ b/src/widgets/videodock.cpp
@@ -65,7 +65,7 @@ VideoDock::VideoDock(QWidget* parent) : QDockWidget(parent)
connect(ActionCollection::instance()->videoRotateLeftAction() \
,SIGNAL(triggered(bool)),m_pVideoWidet,SLOT(slotRotateLeft())); \
connect(ActionCollection::instance()->videoRotateRightAction(),SIGNAL(triggered(bool)),m_pVideoWidet,SLOT(slotRotateRight()));
- connect(ActionCollection::instance()->videoPreviewAction() \
,SIGNAL(triggered(bool)),m_pVideoWidet,SLOT(slotShowPreview())); + \
connect(ActionCollection::instance()->videoPreviewAction() \
,SIGNAL(triggered(bool)),m_pVideoWidet,SLOT(slotShowPreview(bool))); }
///Set current renderer
diff --git a/src/widgets/videoglframe.cpp b/src/widgets/videoglframe.cpp
index 6585f7d..b67059d 100644
--- a/src/widgets/videoglframe.cpp
+++ b/src/widgets/videoglframe.cpp
@@ -50,6 +50,7 @@ public:
QPointF anchor;
float scale;
float rot_x, rot_y, rot_z;
+ float tra_x, tra_y, tra_z;
GLuint tile_list;
bool isRendering;
@@ -79,7 +80,7 @@ Q_SIGNALS:
ThreadedPainter2::ThreadedPainter2(VideoGLFrame* frm,QGLWidget* wdg) : QObject(), \
m_pRenderer(nullptr), m_pW(wdg), \
rot_x(0.0f),rot_y(0.0f),rot_z(0.0f),scale(0.8f),isRendering(false),m_pFrm(frm),
- m_Data(nullptr),tile_list(0)
+ m_Data(nullptr),tile_list(0),tra_x(0.0f), tra_y(0.0f), tra_z(0.0f)
{
}
@@ -138,7 +139,7 @@ void ThreadedPainter2::draw(QPainter* p)
gluBuild2DMipmaps(GL_TEXTURE_2D, 4, m_ActiveSize.width(), \
m_ActiveSize.height(), GL_BGRA, GL_UNSIGNED_BYTE, m_Data);
// draw into the GL widget
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+// glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-1, 1, -1, 1, 10, 100);
@@ -160,9 +161,12 @@ void ThreadedPainter2::draw(QPainter* p)
glRotatef(rot_y, 0.0f, 1.0f, 0.0f);
glRotatef(rot_z, 0.0f, 0.0f, 1.0f);
+
+
// draw background
glPushMatrix();
glScalef(1.7f, 1.7f, 1.7f);
+ glTranslatef(tra_x, tra_y, tra_z);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glCallList(tile_list);
glPopMatrix();
@@ -277,7 +281,6 @@ void VideoGLFrame::setRotZ(float rot)
void VideoGLFrame::setRotY(float rot)
{
- qDebug() << "HERE" << this << rot << m_pPainter;
m_pPainter->rot_y = rot;
}
@@ -286,6 +289,22 @@ void VideoGLFrame::setRotX(float rot)
m_pPainter->rot_x = rot;
}
+void VideoGLFrame::setTranslationZ(float tra)
+{
+ m_pPainter->tra_z = tra;
+}
+
+void VideoGLFrame::setTranslationY(float tra)
+{
+ m_pPainter->tra_y = tra;
+}
+
+void VideoGLFrame::setTranslationX(float tra)
+{
+ m_pPainter->tra_x = tra;
+}
+
+
void VideoGLFrame::setScale(float scale)
{
QMutexLocker locker(&m_pPainter->mutex);
diff --git a/src/widgets/videoglframe.h b/src/widgets/videoglframe.h
index 272c1cb..b7be80e 100644
--- a/src/widgets/videoglframe.h
+++ b/src/widgets/videoglframe.h
@@ -48,6 +48,9 @@ public:
void setRotZ(float rot);
void setRotY(float rot);
void setRotX(float rot);
+ void setTranslationZ(float tra);
+ void setTranslationY(float tra);
+ void setTranslationX(float tra);
void setScale(float scale);
void setAnchor(const QPointF& point);
diff --git a/src/widgets/videoscene.cpp b/src/widgets/videoscene.cpp
index 5d06bd9..47d13c9 100644
--- a/src/widgets/videoscene.cpp
+++ b/src/widgets/videoscene.cpp
@@ -24,6 +24,7 @@
#include "videoglframe.h"
#include "videotoolbar.h"
#include <lib/videorenderer.h>
+#include <lib/videomodel.h>
#ifndef GL_MULTISAMPLE
#define GL_MULTISAMPLE 0x809D
@@ -62,7 +63,7 @@ void VideoScene::drawBackground(QPainter *painter, const QRectF& \
rect) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
foreach(VideoGLFrame* frm, m_lFrames) {
- frm->paintEvent(painter);
+ frm->paintEvent(painter);
}
}
@@ -75,69 +76,68 @@ void VideoScene::setBackgroundColor()
// }
}
-void VideoScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
- QGraphicsScene::mouseMoveEvent(event);
- if (event->isAccepted())
- return;
- if (event->buttons() & Qt::LeftButton) {
- event->accept();
- update();
- }
- foreach(VideoGLFrame* frm, m_lFrames) {
-// const QPointF diff = event->pos() - frm->anchor();
- if (event->buttons() & Qt::LeftButton) {
-
- frm->setRotZ(frm->rotZ()+1);
-// frm->setRotY(frm->rotY()+1/5.0f);
-// } else if (event->buttons() & Qt::RightButton) {
-// frm->setRotZ(frm->rotZ()+diff.x()/5.0f);
- }
+// void VideoScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
+// {
+// QGraphicsScene::mouseMoveEvent(event);
+// if (event->isAccepted())
+// return;
+// if (event->buttons() & Qt::LeftButton) {
+// event->accept();
+// update();
+// }
+// foreach(VideoGLFrame* frm, m_lFrames) {
+// // const QPointF diff = event->pos() - frm->anchor();
+// if (event->buttons() & Qt::LeftButton) {
+//
+// frm->setRotZ(frm->rotZ()+1);
+// // frm->setRotY(frm->rotY()+1/5.0f);
+// // } else if (event->buttons() & Qt::RightButton) {
+// // frm->setRotZ(frm->rotZ()+diff.x()/5.0f);
+// }
+//
+// frm->setAnchor(event->pos());
+// }
+// }
- frm->setAnchor(event->pos());
- }
-}
+// void VideoScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
+// {
+// QGraphicsScene::mousePressEvent(event);
+// if (event->isAccepted())
+// return;
+//
+// event->accept();
+//
+// foreach(VideoGLFrame* frm, m_lFrames) {
+// frm->setAnchor(event->pos());
+// }
+// }
-void VideoScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
+// void VideoScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+// {
+// QGraphicsScene::mouseReleaseEvent(event);
+// if (event->isAccepted())
+// return;
+//
+// event->accept();
+// update();
+// }
+
+void VideoScene::wheelEvent(QGraphicsSceneWheelEvent *event)
{
- QGraphicsScene::mousePressEvent(event);
+ QGraphicsScene::wheelEvent(event);
if (event->isAccepted())
return;
event->accept();
-
foreach(VideoGLFrame* frm, m_lFrames) {
- frm->setAnchor(event->pos());
+ if (frm) {
+ if (VideoModel::instance()->previewRenderer() != frm->renderer())
+ frm->setScale(frm->scale() +(event->delta() > 0 \
?1:-1)*frm->scale()*0.1f); + }
}
-}
-
-void VideoScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
- QGraphicsScene::mouseReleaseEvent(event);
- if (event->isAccepted())
- return;
-
- event->accept();
update();
}
-void VideoScene::wheelEvent(QGraphicsSceneWheelEvent *event)
-{
- QGraphicsScene::wheelEvent(event);
- if (event->isAccepted())
- return;
-
-// event->accept();
-// foreach(VideoGLFrame* frm, m_lFrames) {
-// if (frm) {
-// frm->renderer()->mutex()->lock();
-// frm->setScale(frm->scale() +(event->delta() > 0 \
?1:-1)*frm->scale()*0.1f);
-// frm->renderer()->mutex()->unlock();
-// }
-// }
-// update();
-}
-
void VideoScene::frameChanged()
{
update();
@@ -155,23 +155,29 @@ void VideoScene::addFrame(VideoGLFrame* frame)
// m_pToolbar->resizeToolbar();
}
+void VideoScene::removeFrame( VideoGLFrame* frame )
+{
+ m_lFrames.removeAll(frame);
+}
void VideoScene::slotRotateLeft()
{
foreach(VideoGLFrame* frm, m_lFrames) {
- frm->setRotZ(frm->rotZ()-90);
+ if (VideoModel::instance()->previewRenderer() != frm->renderer())
+ frm->setRotZ(frm->rotZ()-90);
}
}
void VideoScene::slotRotateRight()
{
foreach(VideoGLFrame* frm, m_lFrames) {
- frm->setRotZ(frm->rotZ()+90);
+ if (VideoModel::instance()->previewRenderer() != frm->renderer())
+ frm->setRotZ(frm->rotZ()+90);
}
}
void VideoScene::slotShowPreview()
{
-
+
}
diff --git a/src/widgets/videoscene.h b/src/widgets/videoscene.h
index dfb771f..12b2dcb 100644
--- a/src/widgets/videoscene.h
+++ b/src/widgets/videoscene.h
@@ -36,12 +36,13 @@ public:
//Setters
// void setToolbar( VideoToolbar* tb );
void addFrame ( VideoGLFrame* frame );
+ void removeFrame( VideoGLFrame* frame );
protected:
//Events
- virtual void mousePressEvent ( QGraphicsSceneMouseEvent* event );
- virtual void mouseReleaseEvent( QGraphicsSceneMouseEvent* event );
- virtual void mouseMoveEvent ( QGraphicsSceneMouseEvent* event );
+// virtual void mousePressEvent ( QGraphicsSceneMouseEvent* event );
+// virtual void mouseReleaseEvent( QGraphicsSceneMouseEvent* event );
+// virtual void mouseMoveEvent ( QGraphicsSceneMouseEvent* event );
virtual void wheelEvent ( QGraphicsSceneWheelEvent* wheelEvent );
private:
diff --git a/src/widgets/videowidget3.cpp b/src/widgets/videowidget3.cpp
index 1aa8421..ac17011 100644
--- a/src/widgets/videowidget3.cpp
+++ b/src/widgets/videowidget3.cpp
@@ -28,10 +28,8 @@
#include <GL/glu.h>
//SFLPhone
-#include <lib/videorenderer.h>
#include <lib/videomodel.h>
#include "videoscene.h"
-#include "videoglframe.h"
#include "videotoolbar.h"
@@ -71,18 +69,24 @@ VideoWidget3::~VideoWidget3()
void VideoWidget3::addRenderer(VideoRenderer* renderer)
{
m_pWdg->makeCurrent();
+ if (m_hFrames[renderer]) {
+ m_pScene->addFrame(m_hFrames[renderer]);
+ return;
+ }
if (renderer) {
+ qDebug() << "NEW";
VideoGLFrame* frm = new VideoGLFrame(m_pWdg);
frm->setRenderer(renderer);
connect(frm,SIGNAL(changed()),m_pScene,SLOT(frameChanged()));
m_pScene->addFrame(frm);
+ m_hFrames[renderer] = frm;
}
}
void VideoWidget3::removeRenderer(VideoRenderer* renderer)
{
Q_UNUSED(renderer)
- //TODO
+ m_pScene->removeFrame(m_hFrames[renderer]);
}
void VideoWidget3::resizeEvent(QResizeEvent* event)
@@ -102,8 +106,22 @@ void VideoWidget3::slotRotateRight()
m_pScene->slotRotateRight();
}
-void VideoWidget3::slotShowPreview()
+void VideoWidget3::slotShowPreview(bool show)
{
- m_pScene->slotShowPreview();
+ if (VideoModel::instance()->isPreviewing() && show) {
+ qDebug() << "show";
+ addRenderer(VideoModel::instance()->previewRenderer());
+ VideoGLFrame* frm = m_hFrames[VideoModel::instance()->previewRenderer()];
+ if (frm) {
+ frm->setScale(0.3);
+ frm->setTranslationX(1.8);
+ frm->setTranslationY(1.8);
+// frm->setRotY(60);
+ }
+ }
+ else {
+ qDebug() << "hide";
+ removeRenderer(VideoModel::instance()->previewRenderer());
+ }
}
diff --git a/src/widgets/videowidget3.h b/src/widgets/videowidget3.h
index b0f559b..70d7a65 100644
--- a/src/widgets/videowidget3.h
+++ b/src/widgets/videowidget3.h
@@ -19,6 +19,8 @@
#define VIDEOWIDGET3_H
#include <QtGui/QGraphicsView>
+#include "videoglframe.h"
+#include <lib/videorenderer.h>
//Qt
class QGLWidget;
@@ -26,6 +28,7 @@ class QGLWidget;
//SFLPhone
class VideoRenderer;
class VideoScene;
+class VideoGLFrame;
class VideoWidget3 : public QGraphicsView
{
@@ -43,13 +46,14 @@ protected:
private:
VideoScene* m_pScene ;
QGLWidget* m_pWdg ;
+ QHash<VideoRenderer*,VideoGLFrame*> m_hFrames;
public Q_SLOTS:
void addRenderer(VideoRenderer* renderer);
void removeRenderer(VideoRenderer* renderer);
void slotRotateLeft();
void slotRotateRight();
- void slotShowPreview();
+ void slotShowPreview(bool show);
Q_SIGNALS:
void changed();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic