~x2go/x2go/x2goclient_master

« back to all changes in this revision

Viewing changes to SVGFrame.cpp

  • Committer: Mihai Moldovan
  • Date: 2015-03-04 20:15:47 UTC
  • Revision ID: git-v1:b7398771a7abd84ddcff407063edb95dd0a205d3
general: move *.cpp and *.h files to src/ and *.ts files to src/i18n/.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/**************************************************************************
2
 
*   Copyright (C) 2005-2015 by Oleksandr Shneyder                         *
3
 
*   o.shneyder@phoca-gmbh.de                                              *
4
 
*                                                                         *
5
 
*   This program is free software; you can redistribute it and/or modify  *
6
 
*   it under the terms of the GNU General Public License as published by  *
7
 
*   the Free Software Foundation; either version 2 of the License, or     *
8
 
*   (at your option) any later version.                                   *
9
 
*   This program is distributed in the hope that it will be useful,       *
10
 
*   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
11
 
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
12
 
*   GNU General Public License for more details.                          *
13
 
*                                                                         *
14
 
*   You should have received a copy of the GNU General Public License     *
15
 
*   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
16
 
***************************************************************************/
17
 
 
18
 
#include "SVGFrame.h"
19
 
#include "x2goclientconfig.h"
20
 
 
21
 
#include <QPainter>
22
 
#include <QTimer>
23
 
#include "x2gologdebug.h"
24
 
#include <QResizeEvent>
25
 
 
26
 
 
27
 
 
28
 
SVGFrame::SVGFrame ( QString fname,bool st,QWidget* parent,
29
 
                     Qt::WFlags f ) :QFrame ( parent,f )
30
 
{
31
 
        empty=false;
32
 
#ifdef Q_OS_WIN
33
 
        parentWidget=0;
34
 
#endif
35
 
        if ( fname==QString::null )
36
 
                empty=true;
37
 
        if ( !empty )
38
 
        {
39
 
                repaint=true;
40
 
                drawImg=st;
41
 
                renderer=new QSvgRenderer ( this );
42
 
                renderer->load ( fname );
43
 
 
44
 
                if ( drawImg )
45
 
                {
46
 
                        setAutoFillBackground ( true );
47
 
                        QPalette pal=palette();
48
 
                        QImage img ( renderer->defaultSize(),
49
 
                                     QImage::Format_ARGB32_Premultiplied );
50
 
                        QPainter p ( &img );
51
 
                        renderer->render ( &p );
52
 
                        pal.setBrush ( QPalette::Window,QBrush ( QPixmap::fromImage ( img ) ) );
53
 
                        setPalette ( pal );
54
 
                }
55
 
                else
56
 
                {
57
 
                        QTimer *timer = new QTimer ( this );
58
 
                        connect ( timer, SIGNAL ( timeout() ), this, SLOT ( update() ) );
59
 
                        if ( renderer->animated() )
60
 
                        {
61
 
                                timer->start ( 1000/renderer->framesPerSecond() );
62
 
                                x2goDebug<<"Animated, fps:"<<renderer->framesPerSecond() <<endl;
63
 
                        }
64
 
                }
65
 
        }
66
 
}
67
 
 
68
 
SVGFrame::SVGFrame ( QWidget* parent,
69
 
                     Qt::WFlags f ) :QFrame ( parent,f )
70
 
{
71
 
        repaint=false;
72
 
        empty=true;
73
 
}
74
 
 
75
 
void SVGFrame::paintEvent ( QPaintEvent* event )
76
 
{
77
 
        if ( repaint && !drawImg && !empty )
78
 
        {
79
 
                QPainter p ( this );
80
 
                p.setViewport ( 0, 0, width(), height() );
81
 
                p.eraseRect ( 0, 0, width(), height() );
82
 
                renderer->render ( &p );
83
 
        }
84
 
        QFrame::paintEvent ( event );
85
 
}
86
 
 
87
 
 
88
 
void SVGFrame::resizeEvent ( QResizeEvent* event )
89
 
{
90
 
        QFrame::resizeEvent ( event );
91
 
        emit resized ( event->size() );
92
 
        if ( drawImg && event->size().width() >0 && event->size().height() >0 &&!empty )
93
 
        {
94
 
                QPalette pal=palette();
95
 
                QImage img ( event->size(),QImage::Format_ARGB32_Premultiplied );
96
 
                QPainter p ( &img );
97
 
                if ( p.isActive() )
98
 
                        renderer->render ( &p );
99
 
                pal.setBrush ( QPalette::Window,QBrush ( QPixmap::fromImage ( img ) ) );
100
 
                setPalette ( pal );
101
 
        }
102
 
}
103
 
 
104
 
 
105
 
QSize SVGFrame::sizeHint() const
106
 
{
107
 
        if ( !empty )
108
 
                return renderer->defaultSize();
109
 
        return QFrame::sizeHint();
110
 
}
111
 
 
112
 
void SVGFrame::loadBg ( QString fl )
113
 
{
114
 
        renderer->load ( fl );
115
 
        update();
116
 
}
117
 
 
118
 
#ifdef Q_OS_WIN
119
 
#include "wapi.h"
120
 
void SVGFrame::mousePressEvent ( QMouseEvent * event )
121
 
{
122
 
/*      if ( isVisible() )
123
 
        {
124
 
                int vBorder;
125
 
                int hBorder;
126
 
                int barHeight;
127
 
                if ( parentWidget )
128
 
                        wapiGetBorders ( parentWidget->winId(), vBorder, hBorder, barHeight );
129
 
                x2goDebug<<"svg frame: "<<event->pos() <<
130
 
                ":"<<mapFromGlobal ( event->pos() ) <<":"<<barHeight<<":"<<vBorder<<":"
131
 
                <<hBorder<<":"<<pos() <<endl;
132
 
                QMouseEvent * nevent=new QMouseEvent(event->type(), QPoint(0,0),
133
 
                                event->button(), event-> buttons(), event->modifiers());
134
 
                QFrame::mousePressEvent ( nevent );
135
 
                return;
136
 
        }*/
137
 
        QFrame::mousePressEvent ( event );
138
 
}
139
 
#endif