Switching from ImageMagick++ to GraphicsMagick++ to ease compatibility with wt4. ref #42

This commit is contained in:
emeric
2020-03-28 20:09:57 +01:00
parent bd6a08facb
commit 2c9952b8b7
6 changed files with 11 additions and 22 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED True)
include(CTest) include(CTest)
find_package(PkgConfig) find_package(PkgConfig)
pkg_check_modules(IMAGEMAGICKXX REQUIRED ImageMagick++) pkg_check_modules(GRAPHICSMAGICKXX REQUIRED GraphicsMagick++)
add_subdirectory(src) add_subdirectory(src)
+3 -3
View File
@@ -10,17 +10,17 @@ target_include_directories(lmscover INTERFACE
target_include_directories(lmscover PRIVATE target_include_directories(lmscover PRIVATE
include include
${IMAGEMAGICKXX_INCLUDE_DIRS} ${GRAPHICSMAGICKXX_INCLUDE_DIRS}
) )
target_compile_options(lmscover PRIVATE target_compile_options(lmscover PRIVATE
${IMAGEMAGICKXX_CFLAGS_OTHER} ${GRAPHICSMAGICKXX_CFLAGS_OTHER}
) )
target_link_libraries(lmscover PRIVATE target_link_libraries(lmscover PRIVATE
lmsav lmsav
lmsdatabase lmsdatabase
${IMAGEMAGICKXX_LIBRARIES} ${GRAPHICSMAGICKXX_LIBRARIES}
) )
install(TARGETS lmscover DESTINATION lib) install(TARGETS lmscover DESTINATION lib)
+6 -8
View File
@@ -49,15 +49,13 @@ Grabber::Grabber(const std::filesystem::path& execPath)
init(execPath); init(execPath);
} }
Grabber::~Grabber()
{
deinit();
}
void void
Grabber::setDefaultCover(const std::filesystem::path& p) Grabber::setDefaultCover(const std::filesystem::path& p)
{ {
if (!_defaultCover.load(p)) std::unique_lock lock {_mutex};
_defaultCover = std::make_unique<Image>();
if (!_defaultCover->load(p))
throw LmsException("Cannot read default cover file '" + p.string() + "'"); throw LmsException("Cannot read default cover file '" + p.string() + "'");
} }
@@ -65,12 +63,12 @@ Image
Grabber::getDefaultCover(std::size_t size) Grabber::getDefaultCover(std::size_t size)
{ {
LMS_LOG(COVER, DEBUG) << "Getting a default cover using size = " << size; LMS_LOG(COVER, DEBUG) << "Getting a default cover using size = " << size;
std::unique_lock<std::mutex> lock(_mutex); std::unique_lock lock {_mutex};
auto it = _defaultCovers.find(size); auto it = _defaultCovers.find(size);
if (it == _defaultCovers.end()) if (it == _defaultCovers.end())
{ {
Image cover = _defaultCover; Image cover = *_defaultCover;
LMS_LOG(COVER, DEBUG) << "default cover size = " << cover.getSize().width << " x " << cover.getSize().height; LMS_LOG(COVER, DEBUG) << "default cover size = " << cover.getSize().width << " x " << cover.getSize().height;
+1 -3
View File
@@ -41,7 +41,6 @@ namespace CoverArt
{ {
public: public:
Grabber(const std::filesystem::path& execPath); Grabber(const std::filesystem::path& execPath);
~Grabber();
Grabber(const Grabber&) = delete; Grabber(const Grabber&) = delete;
Grabber& operator=(const Grabber&) = delete; Grabber& operator=(const Grabber&) = delete;
@@ -63,9 +62,8 @@ namespace CoverArt
std::optional<Image> getFromDirectory(const std::filesystem::path& path) const; std::optional<Image> getFromDirectory(const std::filesystem::path& path) const;
Image getDefaultCover(std::size_t size); Image getDefaultCover(std::size_t size);
Image _defaultCover;
std::mutex _mutex; std::mutex _mutex;
std::unique_ptr<Image> _defaultCover;
std::map<std::size_t /* size */, Image> _defaultCovers; std::map<std::size_t /* size */, Image> _defaultCovers;
static inline const std::vector<std::filesystem::path> _fileExtensions {".jpg", ".jpeg", ".png", ".bmp"}; // TODO parametrize static inline const std::vector<std::filesystem::path> _fileExtensions {".jpg", ".jpeg", ".png", ".bmp"}; // TODO parametrize
-6
View File
@@ -29,12 +29,6 @@ init(const std::filesystem::path& path)
Magick::InitializeMagick(path.string().c_str()); Magick::InitializeMagick(path.string().c_str());
} }
void
deinit()
{
MagickCore::MagickCoreTerminus();
}
static static
std::string std::string
formatToMagick(Format format) formatToMagick(Format format)
-1
View File
@@ -30,7 +30,6 @@ namespace CoverArt
{ {
void init(const std::filesystem::path& path); void init(const std::filesystem::path& path);
void deinit();
class Image class Image
{ {