# This file is part of Desktop App Toolkit,
# a set of libraries for developing nice desktop applications.
#
# For license and copyright information please follow this link:
# https://github.com/desktop-app/legal/blob/master/LEGAL

add_library(lib_lottie OBJECT)
add_library(desktop-app::lib_lottie ALIAS lib_lottie)
init_target(lib_lottie)

get_filename_component(src_loc . REALPATH)

nice_target_sources(lib_lottie ${src_loc}
PRIVATE
    lottie/details/lottie_frame_provider.h
    lottie/details/lottie_frame_provider_direct.cpp
    lottie/details/lottie_frame_provider_direct.h
    lottie/details/lottie_frame_provider_shared.cpp
    lottie/details/lottie_frame_provider_shared.h
    lottie/details/lottie_frame_renderer.cpp
    lottie/details/lottie_frame_renderer.h
    lottie/lottie_animation.cpp
    lottie/lottie_animation.h
    lottie/lottie_common.cpp
    lottie/lottie_common.h
    lottie/lottie_frame_generator.cpp
    lottie/lottie_frame_generator.h
    lottie/lottie_multi_player.cpp
    lottie/lottie_multi_player.h
    lottie/lottie_player.h
    lottie/lottie_single_player.cpp
    lottie/lottie_single_player.h
    lottie/lottie_icon.cpp
    lottie/lottie_icon.h
)

if (DESKTOP_APP_LOTTIE_USE_CACHE)
    nice_target_sources(lib_lottie ${src_loc}
    PRIVATE
        lottie/details/lottie_cache.cpp
        lottie/details/lottie_cache.h
        lottie/details/lottie_cache_frame_storage.cpp
        lottie/details/lottie_cache_frame_storage.h
        lottie/details/lottie_frame_provider_cached.cpp
        lottie/details/lottie_frame_provider_cached.h
        lottie/details/lottie_frame_provider_cached_multi.cpp
        lottie/details/lottie_frame_provider_cached_multi.h
    )
    target_compile_definitions(lib_lottie PRIVATE LOTTIE_USE_CACHE)
    target_link_libraries(lib_lottie
    PRIVATE
        desktop-app::lib_ffmpeg
        desktop-app::external_lz4
    )
endif()

if (DESKTOP_APP_LOTTIE_DISABLE_RECOLORING)
    target_compile_definitions(lib_lottie PRIVATE LOTTIE_DISABLE_RECOLORING)
endif()

target_include_directories(lib_lottie
PUBLIC
    ${src_loc}
)

target_link_libraries(lib_lottie
PUBLIC
    desktop-app::lib_ui
PRIVATE
    desktop-app::external_rlottie
)
