diff --git a/src/lib/meson.build b/src/lib/meson.build index 372fe2dc..5a7b70c0 100644 --- a/src/lib/meson.build +++ b/src/lib/meson.build @@ -15,10 +15,10 @@ source_file = [ 'tvgBinaryDesc.h', 'tvgFill.h', 'tvgLoader.h', - 'tvgLoaderMgr.h', + 'tvgLoadModule.h', 'tvgPictureImpl.h', 'tvgRender.h', - 'tvgSaver.h', + 'tvgSaveModule.h', 'tvgSceneImpl.h', 'tvgShapeImpl.h', 'tvgTaskScheduler.h', @@ -28,7 +28,7 @@ source_file = [ 'tvgGlCanvas.cpp', 'tvgInitializer.cpp', 'tvgLinearGradient.cpp', - 'tvgLoaderMgr.cpp', + 'tvgLoader.cpp', 'tvgPaint.cpp', 'tvgPicture.cpp', 'tvgRadialGradient.cpp', diff --git a/src/lib/tvgInitializer.cpp b/src/lib/tvgInitializer.cpp index c36b02f3..e5d7750b 100644 --- a/src/lib/tvgInitializer.cpp +++ b/src/lib/tvgInitializer.cpp @@ -21,7 +21,7 @@ */ #include "tvgCommon.h" #include "tvgTaskScheduler.h" -#include "tvgLoaderMgr.h" +#include "tvgLoader.h" #ifdef THORVG_SW_RASTER_SUPPORT #include "tvgSwRenderer.h" diff --git a/src/lib/tvgLoaderMgr.h b/src/lib/tvgLoadModule.h similarity index 56% rename from src/lib/tvgLoaderMgr.h rename to src/lib/tvgLoadModule.h index fb5893d4..04b8a9d2 100644 --- a/src/lib/tvgLoaderMgr.h +++ b/src/lib/tvgLoadModule.h @@ -19,18 +19,36 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef _TVG_LOADER_MGR_H_ -#define _TVG_LOADER_MGR_H_ +#ifndef _TVG_LOAD_MODULE_H_ +#define _TVG_LOAD_MODULE_H_ -#include "tvgLoader.h" +#include "tvgCommon.h" -struct LoaderMgr +namespace tvg { - static bool init(); - static bool term(); - static shared_ptr loader(const string& path, bool* invalid); - static shared_ptr loader(const char* data, uint32_t size, bool copy); - static shared_ptr loader(const uint32_t* data, uint32_t w, uint32_t h, bool copy); + +class LoadModule +{ +public: + //default view box, if any. + float vx = 0; + float vy = 0; + float vw = 0; + float vh = 0; + float w = 0, h = 0; //default image size + bool preserveAspect = true; //keep aspect ratio by default. + + virtual ~LoadModule() {} + + virtual bool open(const string& path) { /* Not supported */ return false; }; + virtual bool open(const char* data, uint32_t size, bool copy) { /* Not supported */ return false; }; + virtual bool open(const uint32_t* data, uint32_t w, uint32_t h, bool copy) { /* Not supported */ return false; }; + virtual bool read() = 0; + virtual bool close() = 0; + virtual const uint32_t* pixels() { return nullptr; }; + virtual unique_ptr scene() { return nullptr; }; }; -#endif //_TVG_LOADER_MGR_H_ +} + +#endif //_TVG_LOAD_MODULE_H_ diff --git a/src/lib/tvgLoaderMgr.cpp b/src/lib/tvgLoader.cpp similarity index 90% rename from src/lib/tvgLoaderMgr.cpp rename to src/lib/tvgLoader.cpp index 425f85d5..baea00ef 100644 --- a/src/lib/tvgLoaderMgr.cpp +++ b/src/lib/tvgLoader.cpp @@ -19,7 +19,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#include "tvgLoaderMgr.h" +#include "tvgLoader.h" #ifdef THORVG_SVG_LOADER_SUPPORT #include "tvgSvgLoader.h" @@ -43,7 +43,7 @@ /* Internal Class Implementation */ /************************************************************************/ -static Loader* _find(FileType type) +static LoadModule* _find(FileType type) { switch(type) { case FileType::Svg: { @@ -114,7 +114,7 @@ static Loader* _find(FileType type) } -static Loader* _find(const string& path) +static LoadModule* _find(const string& path) { auto ext = path.substr(path.find_last_of(".") + 1); if (!ext.compare("svg")) return _find(FileType::Svg); @@ -146,12 +146,12 @@ bool LoaderMgr::term() } -shared_ptr LoaderMgr::loader(const string& path, bool* invalid) +shared_ptr LoaderMgr::loader(const string& path, bool* invalid) { *invalid = false; if (auto loader = _find(path)) { - if (loader->open(path)) return shared_ptr(loader); + if (loader->open(path)) return shared_ptr(loader); else delete(loader); *invalid = true; } @@ -159,12 +159,12 @@ shared_ptr LoaderMgr::loader(const string& path, bool* invalid) } -shared_ptr LoaderMgr::loader(const char* data, uint32_t size, bool copy) +shared_ptr LoaderMgr::loader(const char* data, uint32_t size, bool copy) { for (int i = 0; i < static_cast(FileType::Unknown); i++) { auto loader = _find(static_cast(i)); if (loader) { - if (loader->open(data, size, copy)) return shared_ptr(loader); + if (loader->open(data, size, copy)) return shared_ptr(loader); else delete(loader); } } @@ -172,12 +172,12 @@ shared_ptr LoaderMgr::loader(const char* data, uint32_t size, bool copy) } -shared_ptr LoaderMgr::loader(const uint32_t *data, uint32_t w, uint32_t h, bool copy) +shared_ptr LoaderMgr::loader(const uint32_t *data, uint32_t w, uint32_t h, bool copy) { for (int i = 0; i < static_cast(FileType::Unknown); i++) { auto loader = _find(static_cast(i)); if (loader) { - if (loader->open(data, w, h, copy)) return shared_ptr(loader); + if (loader->open(data, w, h, copy)) return shared_ptr(loader); else delete(loader); } } diff --git a/src/lib/tvgLoader.h b/src/lib/tvgLoader.h index 8887e89d..9072769a 100644 --- a/src/lib/tvgLoader.h +++ b/src/lib/tvgLoader.h @@ -22,33 +22,15 @@ #ifndef _TVG_LOADER_H_ #define _TVG_LOADER_H_ -#include "tvgCommon.h" +#include "tvgLoadModule.h" -namespace tvg +struct LoaderMgr { - -class Loader -{ -public: - //default view box, if any. - float vx = 0; - float vy = 0; - float vw = 0; - float vh = 0; - float w = 0, h = 0; //default image size - bool preserveAspect = true; //keep aspect ratio by default. - - virtual ~Loader() {} - - virtual bool open(const string& path) { /* Not supported */ return false; }; - virtual bool open(const char* data, uint32_t size, bool copy) { /* Not supported */ return false; }; - virtual bool open(const uint32_t* data, uint32_t w, uint32_t h, bool copy) { /* Not supported */ return false; }; - virtual bool read() = 0; - virtual bool close() = 0; - virtual const uint32_t* pixels() { return nullptr; }; - virtual unique_ptr scene() { return nullptr; }; + static bool init(); + static bool term(); + static shared_ptr loader(const string& path, bool* invalid); + static shared_ptr loader(const char* data, uint32_t size, bool copy); + static shared_ptr loader(const uint32_t* data, uint32_t w, uint32_t h, bool copy); }; -} - #endif //_TVG_LOADER_H_ diff --git a/src/lib/tvgPictureImpl.h b/src/lib/tvgPictureImpl.h index 9a195dc3..c47f3710 100644 --- a/src/lib/tvgPictureImpl.h +++ b/src/lib/tvgPictureImpl.h @@ -24,7 +24,7 @@ #include #include "tvgPaint.h" -#include "tvgLoaderMgr.h" +#include "tvgLoader.h" /************************************************************************/ /* Internal Class Implementation */ @@ -47,7 +47,7 @@ struct PictureIterator : Iterator struct Picture::Impl { - shared_ptr loader = nullptr; + shared_ptr loader = nullptr; Paint* paint = nullptr; uint32_t *pixels = nullptr; Picture *picture = nullptr; diff --git a/src/lib/tvgSaver.h b/src/lib/tvgSaveModule.h similarity index 94% rename from src/lib/tvgSaver.h rename to src/lib/tvgSaveModule.h index 3586442e..4521b38b 100644 --- a/src/lib/tvgSaver.h +++ b/src/lib/tvgSaveModule.h @@ -19,8 +19,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef _TVG_SAVER_H_ -#define _TVG_SAVER_H_ +#ifndef _TVG_SAVE_MODULE_H_ +#define _TVG_SAVE_MODULE_H_ #include "tvgPaint.h" @@ -44,4 +44,4 @@ public: } -#endif //_TVG_SAVER_H_ \ No newline at end of file +#endif //_TVG_SAVE_MODULE_H_ \ No newline at end of file diff --git a/src/lib/tvgSaver.cpp b/src/lib/tvgSaver.cpp index 212d9960..696ef19d 100644 --- a/src/lib/tvgSaver.cpp +++ b/src/lib/tvgSaver.cpp @@ -20,7 +20,7 @@ * SOFTWARE. */ #include "tvgCommon.h" -#include "tvgSaver.h" +#include "tvgSaveModule.h" #ifdef THORVG_TVG_SAVER_SUPPORT #include "tvgTvgSaver.h" diff --git a/src/loaders/jpg/tvgJpgLoader.cpp b/src/loaders/jpg/tvgJpgLoader.cpp index 4a2ce3fe..03efad2b 100644 --- a/src/loaders/jpg/tvgJpgLoader.cpp +++ b/src/loaders/jpg/tvgJpgLoader.cpp @@ -22,7 +22,7 @@ #include #include -#include "tvgLoaderMgr.h" +#include "tvgLoader.h" #include "tvgJpgLoader.h" /************************************************************************/ diff --git a/src/loaders/jpg/tvgJpgLoader.h b/src/loaders/jpg/tvgJpgLoader.h index 0063da2f..1aeaa04c 100644 --- a/src/loaders/jpg/tvgJpgLoader.h +++ b/src/loaders/jpg/tvgJpgLoader.h @@ -25,13 +25,13 @@ using tjhandle = void*; //TODO: Use Task? -class JpgLoader : public Loader +class JpgLoader : public LoadModule { public: JpgLoader(); ~JpgLoader(); - using Loader::open; + using LoadModule::open; bool open(const string& path) override; bool open(const char* data, uint32_t size, bool copy) override; bool read() override; diff --git a/src/loaders/png/tvgPngLoader.cpp b/src/loaders/png/tvgPngLoader.cpp index 43c2cb1b..d7c71e55 100755 --- a/src/loaders/png/tvgPngLoader.cpp +++ b/src/loaders/png/tvgPngLoader.cpp @@ -20,7 +20,7 @@ * SOFTWARE. */ -#include "tvgLoaderMgr.h" +#include "tvgLoader.h" #include "tvgPngLoader.h" PngLoader::PngLoader() diff --git a/src/loaders/png/tvgPngLoader.h b/src/loaders/png/tvgPngLoader.h index c7f3d4e4..ab2c8169 100755 --- a/src/loaders/png/tvgPngLoader.h +++ b/src/loaders/png/tvgPngLoader.h @@ -24,14 +24,13 @@ #include -//OPTIMIZE ME: Use Task? -class PngLoader : public Loader +class PngLoader : public LoadModule { public: PngLoader(); ~PngLoader(); - using Loader::open; + using LoadModule::open; bool open(const string& path) override; bool open(const char* data, uint32_t size, bool copy) override; bool read() override; diff --git a/src/loaders/raw/tvgRawLoader.cpp b/src/loaders/raw/tvgRawLoader.cpp index 2acfc3b5..b358fe88 100644 --- a/src/loaders/raw/tvgRawLoader.cpp +++ b/src/loaders/raw/tvgRawLoader.cpp @@ -21,7 +21,7 @@ */ #include #include -#include "tvgLoaderMgr.h" +#include "tvgLoader.h" #include "tvgRawLoader.h" /************************************************************************/ diff --git a/src/loaders/raw/tvgRawLoader.h b/src/loaders/raw/tvgRawLoader.h index 153ce247..f6eed20e 100644 --- a/src/loaders/raw/tvgRawLoader.h +++ b/src/loaders/raw/tvgRawLoader.h @@ -22,7 +22,7 @@ #ifndef _TVG_RAW_LOADER_H_ #define _TVG_RAW_LOADER_H_ -class RawLoader : public Loader +class RawLoader : public LoadModule { public: const uint32_t* content = nullptr; @@ -30,7 +30,7 @@ public: ~RawLoader(); - using Loader::open; + using LoadModule::open; bool open(const uint32_t* data, uint32_t w, uint32_t h, bool copy) override; bool read() override; bool close() override; diff --git a/src/loaders/svg/tvgSvgLoader.cpp b/src/loaders/svg/tvgSvgLoader.cpp index 6a044474..456c833e 100644 --- a/src/loaders/svg/tvgSvgLoader.cpp +++ b/src/loaders/svg/tvgSvgLoader.cpp @@ -25,7 +25,7 @@ #include #include #include -#include "tvgLoaderMgr.h" +#include "tvgLoader.h" #include "tvgXmlParser.h" #include "tvgSvgLoader.h" #include "tvgSvgSceneBuilder.h" diff --git a/src/loaders/svg/tvgSvgLoader.h b/src/loaders/svg/tvgSvgLoader.h index c213d66a..886af40d 100644 --- a/src/loaders/svg/tvgSvgLoader.h +++ b/src/loaders/svg/tvgSvgLoader.h @@ -25,7 +25,7 @@ #include "tvgTaskScheduler.h" #include "tvgSvgLoaderCommon.h" -class SvgLoader : public Loader, public Task +class SvgLoader : public LoadModule, public Task { public: string filePath; @@ -40,7 +40,7 @@ public: SvgLoader(); ~SvgLoader(); - using Loader::open; + using LoadModule::open; bool open(const string& path) override; bool open(const char* data, uint32_t size, bool copy) override; diff --git a/src/loaders/tvg/tvgTvgLoader.cpp b/src/loaders/tvg/tvgTvgLoader.cpp index 5e793ecc..706372b5 100644 --- a/src/loaders/tvg/tvgTvgLoader.cpp +++ b/src/loaders/tvg/tvgTvgLoader.cpp @@ -22,7 +22,7 @@ #include #include -#include "tvgLoaderMgr.h" +#include "tvgLoader.h" #include "tvgTvgLoader.h" #include "tvgTvgLoadParser.h" diff --git a/src/loaders/tvg/tvgTvgLoader.h b/src/loaders/tvg/tvgTvgLoader.h index 155365df..cc2c1833 100644 --- a/src/loaders/tvg/tvgTvgLoader.h +++ b/src/loaders/tvg/tvgTvgLoader.h @@ -25,7 +25,7 @@ #include "tvgTaskScheduler.h" -class TvgLoader : public Loader, public Task +class TvgLoader : public LoadModule, public Task { public: const char* data = nullptr; @@ -38,7 +38,7 @@ public: ~TvgLoader(); - using Loader::open; + using LoadModule::open; bool open(const string &path) override; bool open(const char *data, uint32_t size, bool copy) override; bool read() override; diff --git a/src/savers/tvg/tvgTvgSaver.cpp b/src/savers/tvg/tvgTvgSaver.cpp index ba9abbe4..91364cfc 100644 --- a/src/savers/tvg/tvgTvgSaver.cpp +++ b/src/savers/tvg/tvgTvgSaver.cpp @@ -22,7 +22,7 @@ #include #include #include -#include "tvgSaver.h" +#include "tvgSaveModule.h" #include "tvgTvgSaver.h" #define SIZE(A) sizeof(A)