summaryrefslogtreecommitdiff
path: root/src/ui/imageviewer/fqterm_canvas.h
blob: d76e5808fa6b90dfa258ab33e198f8534eb079be (plain)
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
// SPDX-License-Identifier: GPL-2.0-or-later

#ifndef FQTERM_CANVAS_H
#define FQTERM_CANVAS_H

#include <QScrollArea>
#include <QImage>
#include <QMovie>

class QAction;
class QLabel;
class QMenu;
class QCloseEvent;
class QMouseEvent;
class QKeyEvent;
class QResizeEvent;
class QToolBar;
class QImage;

namespace FQTerm {

class FQTermConfig;
class ExifExtractor;
class FQTermFileDialog;

class FQTermCanvas: public QScrollArea {
  Q_OBJECT;
 public:
  FQTermCanvas(FQTermConfig *, QWidget *parent_ = NULL, Qt::WindowFlags f = Qt::Window);
  ~FQTermCanvas();

  enum AdjustMode{Origin, Fit, Stretch, MaxFit};

  void updateImage(const QString& filename);
  void loadImage(const QString&, bool = true);
  QMenu* menu();
  QToolBar* ToolBar();
 public slots:
  void oriSize();
  void zoomIn();
  void zoomOut();
  void autoAdjust();
  void fullScreen();
  void saveImage();
  void copyImage();
  void silentCopy();
  void cwRotate();
  void ccwRotate();
  void deleteImage();
  void SetAdjustMode(AdjustMode am);
  void openDir();
  void playGIF();
 protected slots:
  void SetAdjustMode();
 protected:
  void resizeEvent (QResizeEvent * event);
  void moveImage(float, float);
  void resizeImage(float);
  void rotateImage(float);

  void closeEvent(QCloseEvent*);
  void mousePressEvent(QMouseEvent*);
  void keyPressEvent(QKeyEvent *ke);
  void viewportResizeEvent(QResizeEvent *re);
  void adjustSize(QSize);
  QPixmap scaleImage(const QSize &);
 protected:
  QLabel *label_;
  bool useAdjustMode_;
  QSize imageSize_;
  QString fileName_;
  QImage image_;
  QMovie gifPlayer_;
  QMenu *menu_;
  QToolBar *toolBar_;
  FQTermConfig * config_;
  QAction* gifPlayAction_;

  AdjustMode adjustMode_;
  Qt::AspectRatioMode aspectRatioMode_;
  // TODO: Very dirty trick, I hate it
  bool isEmbedded;
};

}  // namespace FQTerm

#endif  // FQTERM_CANVAS_H