-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathwebview.cpp
129 lines (86 loc) · 2.41 KB
/
webview.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include "webview.h"
#include "ui_webview.h"
#include "QDebug"
WebView::WebView(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::WebView)
{
ui->setupUi(this);
this->setAttribute(Qt::WA_DeleteOnClose, true);
// view = new QWebView(ui->label);
// view = new QWebView(parent);
view = ui->frame;
connect(ui->loadButton,SIGNAL(released()),this,SLOT(loadFile()));
connect(ui->urlButton,SIGNAL(released()),this,SLOT(loadUrl()));
}
void WebView::Init(Buffer *buf){
buffer=buf;
}
WebView::~WebView()
{
delete ui;
}
void WebView::loadFile(){
QString fileName = QFileDialog::getOpenFileName(this,
tr("Load image"), "",
tr("All Files (*)"));
loadPage("file://"+fileName);
}
void WebView::loadUrl(){
loadPage(ui->urlBar->text());
}
void WebView::loadPage(QString url){
qDebug()<< "loading "<<url;
//view->setRenderHints(0);
//view->load(QUrl(url));
//page = new QWebPage;
page.mainFrame()->load(url);
// view->setFixedSize(110,110);
// view->set
//view->show();
outNumber = ui->outNumber->value();
output = buffer->Open(outNumber);
painter = new QPainter();
page.setViewportSize(QSize(buffer->width,buffer->height));
rgb = new QImage(buffer->width,buffer->height, QImage::Format_ARGB32);
//view->setFixedSize(buffer->width,buffer->height);
//page->setViewportSize(QSize(buffer->width,buffer->height));
painter->begin(rgb);
page.mainFrame()->render(painter);
//connect(buffer->clock,SIGNAL(timeout()),this,SLOT(newFrame()));
connect(&page,SIGNAL(repaintRequested(const QRect)),this,SLOT(newFrame(const QRect)));
connect(&page,SIGNAL(loadFinished(bool)),this,SLOT(pageRender(bool)));
}
void WebView::pageRender(bool status){
newFrame(QRect(0,0,buffer->width,buffer->height));
}
void WebView::newFrame(QRect area){
static int last=0;
if (buffer->frames>last){
last=buffer->frames;
page.mainFrame()->render(painter,area);
memcpy(output,rgb->bits(),rgb->byteCount());
buffer->newFrame(outNumber);
}
}
/*
class GrabFrame : public QRunnable
{
WebView* parent;
int dorun = 1;
public: void Init(WebView
* par){
parent=par;
}
public: void stop(){
dorun = 0;
}
void run()
{
while(dorun){
parent->newFrame(true);
usleep(500*1000);
}
}
};
*/