OpenShot Library | libopenshot  0.3.0
QtImageReader.h
Go to the documentation of this file.
1 
9 // Copyright (c) 2008-2019 OpenShot Studios, LLC
10 //
11 // SPDX-License-Identifier: LGPL-3.0-or-later
12 
13 #ifndef OPENSHOT_QIMAGE_READER_H
14 #define OPENSHOT_QIMAGE_READER_H
15 
16 #include <memory>
17 #include <string>
18 
19 #include <QString>
20 #include <QSize>
21 
22 #include "ReaderBase.h"
23 #include "Json.h"
24 
25 #if USE_RESVG == 1
26  // If defined and found in CMake, utilize the libresvg for parsing
27  // SVG files and rasterizing them to QImages.
28  #include "ResvgQt.h"
29 
30  #define RESVG_VERSION_MIN(a, b) (\
31  RESVG_MAJOR_VERSION > a \
32  || (RESVG_MAJOR_VERSION == a && RESVG_MINOR_VERSION >= b) \
33  )
34 #else
35  #define RESVG_VERSION_MIN(a, b) 0
36 #endif
37 
38 class QImage;
39 
40 #include <QImage>
41 #include <QSize>
42 #include <QString>
43 
44 #include <QSize>
45 #include <QString>
46 
47 class QImage;
48 
49 namespace openshot
50 {
51  // Forward decl
52  class CacheBase;
53  class Frame;
54 
74  class QtImageReader : public ReaderBase
75  {
76  private:
77  QString path;
78  std::shared_ptr<QImage> image;
79  std::shared_ptr<QImage> cached_image;
80  bool is_open;
81  QSize max_size;
82 
83 #if RESVG_VERSION_MIN(0, 11)
84  ResvgOptions resvg_options;
85 #endif
86 
91  QSize load_svg_path(QString path);
92 
94  QSize calculate_max_size();
95 
96  public:
105  QtImageReader(std::string path, bool inspect_reader=true);
106 
107  virtual ~QtImageReader();
108 
110  void Close() override;
111 
113  CacheBase* GetCache() override { return NULL; };
114 
120  std::shared_ptr<Frame> GetFrame(int64_t requested_frame) override;
121 
123  bool IsOpen() override { return is_open; };
124 
126  std::string Name() override { return "QtImageReader"; };
127 
128  // Get and Set JSON methods
129  std::string Json() const override;
130  void SetJson(const std::string value) override;
131  Json::Value JsonValue() const override;
132  void SetJsonValue(const Json::Value root) override;
133 
135  void Open() override;
136  };
137 
138 }
139 
140 #endif
std::string Name() override
Return the type name of the class.
Header file for ReaderBase class.
std::string Json() const override
Generate JSON string of this object.
void Close() override
Close File.
void Open() override
Open File - which is called by the constructor automatically.
This abstract class is the base class, used by all readers in libopenshot.
Definition: ReaderBase.h:75
CacheBase * GetCache() override
Get the cache object used by this reader (always returns NULL for this object)
void SetJson(const std::string value) override
Load JSON string into this object.
Header file for JSON class.
All cache managers in libopenshot are based on this CacheBase class.
Definition: CacheBase.h:34
QtImageReader(std::string path, bool inspect_reader=true)
Constructor for QtImageReader.
This namespace is the default namespace for all code in the openshot library.
Definition: Compressor.h:28
bool IsOpen() override
Determine if reader is open or closed.
This class uses the Qt library, to open image files, and return openshot::Frame objects containing th...
Definition: QtImageReader.h:74
void SetJsonValue(const Json::Value root) override
Load Json::Value into this object.
Json::Value JsonValue() const override
Generate Json::Value for this object.
std::shared_ptr< Frame > GetFrame(int64_t requested_frame) override