18#ifndef HTMLGENERATOR_H
19#define HTMLGENERATOR_H
21#include <QElapsedTimer>
23#include <QNetworkAccessManager>
27#include <QTemporaryDir>
31class HtmlGenerator :
public QObject
35 explicit HtmlGenerator(QObject *parent =
nullptr);
38 void setAnimationParameters(
double fps,
int duration);
39 void launchBrowser(
const QString &executablePath,
41 const QSize &viewport,
42 const QString &outputPath);
45 void progressUpdate(
float);
46 void imageReady(QString outputPath);
49 void connectToBrowser();
51 void onWebSocketConnected();
52 void onMessageReceived(
const QString &message);
53 void onWebSocketDisconnected();
54 void onChromeProcessFinished(
int exitCode, QProcess::ExitStatus exitStatus);
55 void onChromeProcessError(QProcess::ProcessError error);
56 void startAnimationCapture();
57 void captureAnimationFrame();
58 void handleAnimationFrame(
const QJsonObject &result);
59 void completeAnimationCapture();
60 void takeScreenshot();
61 void handleScreenshotResult(
const QJsonObject &result);
62 int sendCommand(
const QString &method,
const QJsonObject ¶ms = QJsonObject());
65 QWebSocket *m_webSocket;
66 QNetworkAccessManager *m_networkManager;
68 QProcess *m_chromeProcess;
72 bool m_pendingScreenshot =
false;
73 int m_screenshotMessageId = 0;
74 bool m_screenshotCompleted =
false;
75 QTemporaryDir m_tempDir;
78 bool m_animationMode =
false;
81 int m_currentFrame = 0;
82 int m_totalFrames = 0;
83 QTimer *m_animationTimer =
nullptr;
84 QElapsedTimer m_animationElapsed;