mirror of
https://github.com/encounter/phantomjs.git
synced 2026-03-30 11:35:11 -07:00
added scrollPosition support in c++ version
This commit is contained in:
+25
-4
@@ -223,6 +223,22 @@ QVariantMap WebPage::clipRect() const
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
void WebPage::setScrollPosition(const QVariantMap &size)
|
||||
{
|
||||
int top = size.value("top").toInt();
|
||||
int left = size.value("left").toInt();
|
||||
m_scrollPosition = QPoint(left,top);
|
||||
}
|
||||
|
||||
QVariantMap WebPage::scrollPosition() const
|
||||
{
|
||||
QVariantMap result;
|
||||
result["top"] = m_scrollPosition.y();
|
||||
result["left"] = m_scrollPosition.x();
|
||||
return result;
|
||||
}
|
||||
|
||||
void WebPage::setPaperSize(const QVariantMap &size)
|
||||
{
|
||||
m_paperSize = size;
|
||||
@@ -316,13 +332,18 @@ bool WebPage::render(const QString &fileName)
|
||||
}
|
||||
|
||||
QImage WebPage::renderImage()
|
||||
|
||||
{
|
||||
QRect frameRect = QRect(QPoint(0, 0), m_mainFrame->contentsSize());
|
||||
QSize viewportSize = m_webPage->viewportSize();
|
||||
QRect frameRect = QRect(QPoint(0, 0), viewportSize);
|
||||
if (!m_clipRect.isNull())
|
||||
frameRect = m_clipRect;
|
||||
|
||||
QSize viewportSize = m_webPage->viewportSize();
|
||||
m_webPage->setViewportSize(m_mainFrame->contentsSize());
|
||||
if(!m_scrollPosition.isNull())
|
||||
{
|
||||
m_mainFrame->setScrollPosition(m_scrollPosition);
|
||||
}
|
||||
// m_webPage->setViewportSize(m_mainFrame->contentsSize());
|
||||
|
||||
QImage buffer(frameRect.size(), QImage::Format_ARGB32);
|
||||
buffer.fill(qRgba(255, 255, 255, 0));
|
||||
@@ -331,7 +352,7 @@ QImage WebPage::renderImage()
|
||||
|
||||
// We use tiling approach to work-around Qt software rasterizer bug
|
||||
// when dealing with very large paint device.
|
||||
// See http://code.google.com/p/phantomjs/issues/detail?id=54.
|
||||
// See http://code.google.com/p/phantomjs/issues/detail?id=54.*
|
||||
const int tileSize = 4096;
|
||||
int htiles = (buffer.width() + tileSize - 1) / tileSize;
|
||||
int vtiles = (buffer.height() + tileSize - 1) / tileSize;
|
||||
|
||||
@@ -46,6 +46,7 @@ class WebPage: public QObject
|
||||
Q_PROPERTY(QVariantMap viewportSize READ viewportSize WRITE setViewportSize)
|
||||
Q_PROPERTY(QVariantMap paperSize READ paperSize WRITE setPaperSize)
|
||||
Q_PROPERTY(QVariantMap clipRect READ clipRect WRITE setClipRect)
|
||||
Q_PROPERTY(QVariantMap scrollPosition READ scrollPosition WRITE setScrollPosition)
|
||||
|
||||
public:
|
||||
WebPage(QObject *parent = 0);
|
||||
@@ -65,6 +66,10 @@ public:
|
||||
void setClipRect(const QVariantMap &size);
|
||||
QVariantMap clipRect() const;
|
||||
|
||||
void setScrollPosition(const QVariantMap &size);
|
||||
QVariantMap scrollPosition() const;
|
||||
|
||||
|
||||
void setPaperSize(const QVariantMap &size);
|
||||
QVariantMap paperSize() const;
|
||||
|
||||
@@ -91,6 +96,7 @@ private:
|
||||
CustomPage *m_webPage;
|
||||
QWebFrame *m_mainFrame;
|
||||
QRect m_clipRect;
|
||||
QPoint m_scrollPosition;
|
||||
QVariantMap m_paperSize; // For PDF output via render()
|
||||
QString m_libraryPath;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user