mirror of https://github.com/vitalif/phantomjs
Don't copy buffers, but translate the QPainter instead when clipping
parent
f96d113302
commit
affdd9b245
|
@ -389,30 +389,38 @@ bool Phantom::render(const QString &fileName)
|
||||||
|
|
||||||
QSize viewportSize = m_page.viewportSize();
|
QSize viewportSize = m_page.viewportSize();
|
||||||
|
|
||||||
QSize pageSize;
|
QSize pageSize = m_page.mainFrame()->contentsSize();
|
||||||
|
|
||||||
pageSize = m_page.mainFrame()->contentsSize();
|
QSize bufferSize;
|
||||||
|
if(!m_clipRect.isEmpty()){
|
||||||
|
bufferSize = m_clipRect.size();
|
||||||
|
} else {
|
||||||
|
bufferSize = m_page.mainFrame()->contentsSize();
|
||||||
|
}
|
||||||
|
|
||||||
if (pageSize.isEmpty())
|
if (pageSize.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
QImage buffer(pageSize, QImage::Format_ARGB32);
|
QImage buffer(bufferSize, QImage::Format_ARGB32);
|
||||||
buffer.fill(qRgba(255, 255, 255, 0));
|
buffer.fill(qRgba(255, 255, 255, 0));
|
||||||
QPainter p(&buffer);
|
QPainter p(&buffer);
|
||||||
|
|
||||||
p.setRenderHint(QPainter::Antialiasing, true);
|
p.setRenderHint(QPainter::Antialiasing, true);
|
||||||
p.setRenderHint(QPainter::TextAntialiasing, true);
|
p.setRenderHint(QPainter::TextAntialiasing, true);
|
||||||
p.setRenderHint(QPainter::SmoothPixmapTransform, true);
|
p.setRenderHint(QPainter::SmoothPixmapTransform, true);
|
||||||
|
|
||||||
m_page.setViewportSize(pageSize);
|
m_page.setViewportSize(pageSize);
|
||||||
m_page.mainFrame()->render(&p);
|
|
||||||
|
if(!m_clipRect.isEmpty()){
|
||||||
|
p.translate(-m_clipRect.left(), -m_clipRect.top());
|
||||||
|
m_page.mainFrame()->render(&p, QRegion(m_clipRect));
|
||||||
|
} else {
|
||||||
|
m_page.mainFrame()->render(&p);
|
||||||
|
}
|
||||||
|
|
||||||
p.end();
|
p.end();
|
||||||
m_page.setViewportSize(viewportSize);
|
m_page.setViewportSize(viewportSize);
|
||||||
|
|
||||||
if(!m_clipRect.isEmpty()){
|
|
||||||
buffer = buffer.copy(m_clipRect);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fileName.toLower().endsWith(".gif")) {
|
if (fileName.toLower().endsWith(".gif")) {
|
||||||
return exportGif(buffer, fileName);
|
return exportGif(buffer, fileName);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue