atrooney-online-2/include/aocharmovie.h
Crystalwarrior 938f1aeea1 Optimize the heck out of animated images. There is no lag after the image is loaded now.
HOWEVER, there's lag when the image is first loaded due to the aspect ratio and sizing (at least with .apng's).
2019-09-14 22:35:02 +03:00

67 lines
1.3 KiB
C++

#ifndef AOCHARMOVIE_H
#define AOCHARMOVIE_H
#include <QImageReader>
#include <QLabel>
#include <QTimer>
#include <QDebug>
#include <QImageReader>
#include <QElapsedTimer>
class AOApplication;
class AOCharMovie : public QLabel
{
Q_OBJECT
public:
AOCharMovie(QWidget *p_parent, AOApplication *p_ao_app);
void play(QString p_char, QString p_emote, QString emote_prefix);
void play_pre(QString p_char, QString p_emote, int duration);
void play_talking(QString p_char, QString p_emote);
void play_idle(QString p_char, QString p_emote);
QPixmap get_pixmap(QImage image);
void set_frame(QPixmap f_pixmap);
void stop();
void set_flipped(bool p_flipped) {m_flipped = p_flipped;}
void move(int ax, int ay);
void combo_resize(int w, int h);
private:
AOApplication *ao_app;
QVector<QPixmap> movie_frames;
QVector<int> movie_delays;
QTimer *preanim_timer;
QTimer *ticker;
QString last_path;
QElapsedTimer actual_time;
const int time_mod = 60;
// These are the X and Y values before they are fixed based on the sprite's width.
int x = 0;
int y = 0;
int frame = 0;
bool m_flipped = false;
bool play_once = true;
signals:
void done();
private slots:
void preanim_done();
void movie_ticker();
};
#endif // AOCHARMOVIE_H