Warning, /graphics/glaxnimate/data/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0002 # SPDX-License-Identifier: BSD-2-Clause
0003 
0004 set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM 1)
0005 
0006 if ( ANDROID )
0007 
0008     # The breeze-icons package approach is inspired by https://invent.kde.org/frameworks/kirigami/-/blob/kf5/KF5Kirigami2Macros.cmake
0009     include(CMakeParseArguments)
0010     include(ExternalProject)
0011 
0012 
0013     function(android_package_breeze_icons)
0014         set(_multiValueArgs ICONS)
0015         cmake_parse_arguments(ARG "" "" "${_multiValueArgs}" ${ARGN} )
0016 
0017         if(NOT ARG_ICONS)
0018             message(FATAL_ERROR "No ICONS argument given to android_package_breeze_icons")
0019         endif()
0020 
0021         function(_find_breeze_icon icon varName)
0022             #HACKY
0023             SET(path "")
0024             file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/48/${icon}.svg )
0025 
0026             #search in other sizes as well
0027             if (path STREQUAL "")
0028                 file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/32/${icon}.svg )
0029                 if (path STREQUAL "")
0030                     file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/22/${icon}.svg )
0031                     if (path STREQUAL "")
0032                         file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/16/${icon}.svg )
0033                     endif()
0034                 endif()
0035             endif()
0036             if (path STREQUAL "")
0037                 file(GLOB_RECURSE path ${_BREEZEICONS_DIR}/icons/*/symbolic/${icon}.svg )
0038             endif()
0039             if (path STREQUAL "")
0040                 return()
0041             endif()
0042 
0043             list(LENGTH path _count_paths)
0044             if (_count_paths GREATER 1)
0045                 message(WARNING "Found more than one version of '${icon}': ${path}")
0046             endif()
0047             list(GET path 0 path)
0048             get_filename_component(path "${path}" REALPATH)
0049 
0050             SET(${varName} ${path} PARENT_SCOPE)
0051         endfunction()
0052 
0053         if (BREEZEICONS_DIR AND NOT EXISTS ${BREEZEICONS_DIR})
0054             message(FATAL_ERROR "BREEZEICONS_DIR variable does not point to existing dir: \"${BREEZEICONS_DIR}\"")
0055         endif()
0056 
0057         set(_BREEZEICONS_DIR "${BREEZEICONS_DIR}")
0058 
0059         if(NOT _BREEZEICONS_DIR AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/icons/breeze-icons/icons")
0060             set(_BREEZEICONS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/icons/breeze-icons")
0061         endif()
0062 
0063         #FIXME: this is a terrible hack
0064         if(NOT _BREEZEICONS_DIR)
0065             set(_BREEZEICONS_DIR "${CMAKE_BINARY_DIR}/breeze-icons/src/breeze-icons")
0066 
0067             # replacement for ExternalProject_Add not yet working
0068             # first time config?
0069             if (NOT EXISTS ${_BREEZEICONS_DIR})
0070                 find_package(Git)
0071                 execute_process(COMMAND ${GIT_EXECUTABLE} clone --depth 1 --branch kf5 https://invent.kde.org/frameworks/breeze-icons.git ${_BREEZEICONS_DIR})
0072             endif()
0073 
0074             # external projects are only pulled at make time, not configure time
0075             # so this is too late to work with the _find_breeze_icon() method
0076             # _find_breeze_icon() would need to be turned into a target/command
0077             if (FALSE)
0078             ExternalProject_Add(
0079                 breeze-icons
0080                 PREFIX breeze-icons
0081                 GIT_REPOSITORY https://invent.kde.org/frameworks/breeze-icons.git
0082                 CONFIGURE_COMMAND ""
0083                 BUILD_COMMAND ""
0084                 INSTALL_COMMAND ""
0085                 LOG_DOWNLOAD ON
0086             )
0087             endif()
0088         endif()
0089 
0090         message (STATUS "Using ${_BREEZEICONS_DIR} as breeze dir")
0091         message (STATUS "Found external breeze icons:")
0092         foreach(_iconName ${ARG_ICONS})
0093             set(_iconPath "")
0094             _find_breeze_icon(${_iconName} _iconPath)
0095             message (STATUS ${_iconPath})
0096             if (EXISTS ${_iconPath})
0097                 install(FILES ${_iconPath} DESTINATION ${DATA_INSTALL}/icons/icons RENAME ${_iconName}.svg)
0098             else()
0099                 message (WARNING "${_iconName} not found")
0100             endif()
0101         endforeach()
0102 
0103         #generate an index.theme that qiconloader can understand
0104         file(WRITE ${CMAKE_BINARY_DIR}/index.theme "[Icon Theme]\nName=Breeze\nDirectories=icons\n[icons]\nSize=32\nType=Scalable")
0105         install(FILES ${CMAKE_BINARY_DIR}/index.theme DESTINATION ${DATA_INSTALL}/icons)
0106     endfunction()
0107 
0108     android_package_breeze_icons(ICONS
0109         telegram
0110         edit-cut
0111         edit-copy
0112         edit-paste
0113         edit-delete
0114         edit-undo
0115         edit-redo
0116         edit-select
0117         edit-node
0118         edit-clear-all
0119         document-new
0120         document-open
0121         document-save
0122         document-save-as
0123         document-import
0124         document-export
0125         document-properties
0126         keyframe-add
0127         keyframe-remove
0128         keyframe-record
0129         view-preview
0130         player-time
0131         fill-color
0132         object-stroke-style
0133         question
0134         draw-brush
0135         draw-bezier-curves
0136         draw-freehand
0137         draw-rectangle
0138         draw-ellipse
0139         draw-polygon-star
0140         draw-text
0141         shapes
0142         overflow-menu
0143         media-playback-start
0144         media-playlist-repeat
0145         go-first
0146         go-previous
0147         go-next
0148         go-last
0149         layer-lower
0150         layer-raise
0151         dialog-layers
0152         smiley-shape
0153     )
0154 
0155     #get_target_property(ASSETS_PATH ${PROJECT_SLUG}_apk assets)
0156     #file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/images DESTINATION ${ASSETS_PATH})
0157     #file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/templates DESTINATION ${ASSETS_PATH})
0158 else()
0159     file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/themes DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
0160     install(DIRECTORY themes DESTINATION ${DATA_INSTALL})
0161 
0162     file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/lib/python-lottie/lib/lottie DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/lib/)
0163     install(DIRECTORY lib/python-lottie/lib/lottie DESTINATION ${DATA_INSTALL}/lib/)
0164 
0165     file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/emoji DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
0166     install(DIRECTORY emoji DESTINATION ${DATA_INSTALL})
0167 endif()
0168 
0169 file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/palettes DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
0170 install(DIRECTORY palettes DESTINATION ${DATA_INSTALL})
0171 
0172 file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/images DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
0173 install(DIRECTORY images DESTINATION ${DATA_INSTALL})
0174 
0175 file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/templates DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
0176 install(DIRECTORY templates DESTINATION ${DATA_INSTALL})
0177 
0178 # Translation
0179 set(ALL_SOURCE_DIRECTORIES ${CMAKE_SOURCE_DIR}/src)
0180 
0181 # Desktop
0182 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/glaxnimate.in.desktop ${CMAKE_CURRENT_BINARY_DIR}/glaxnimate.desktop)
0183 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/glaxnimate.desktop DESTINATION ${DATA_INSTALL})
0184 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/glaxnimate.desktop DESTINATION share/applications RENAME ${PROJECT_ID}.desktop)
0185 
0186 # Misc
0187 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/../AUTHORS.md ${CMAKE_CURRENT_BINARY_DIR}/AUTHORS.md COPYONLY)
0188 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../AUTHORS.md DESTINATION ${DATA_INSTALL})
0189 
0190 # Icon
0191 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/logo/logo.svg ${CMAKE_CURRENT_BINARY_DIR}/images/${PROJECT_SLUG}.svg COPYONLY)
0192 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/logo/file-icon.svg ${CMAKE_CURRENT_BINARY_DIR}/images/${PROJECT_SLUG}-file.svg COPYONLY)
0193 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/images/${PROJECT_SLUG}.svg DESTINATION share/icons/hicolor/scalable/apps/ )
0194 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/images/${PROJECT_SLUG}.svg DESTINATION share/icons/hicolor/scalable/apps/ RENAME ${PROJECT_ID}.svg )
0195 
0196 add_custom_command(
0197     OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/images/${PROJECT_SLUG}.png
0198     COMMAND inkscape ${CMAKE_CURRENT_SOURCE_DIR}/logo/logo.svg -o ${CMAKE_CURRENT_SOURCE_DIR}/images/${PROJECT_SLUG}.png
0199     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/logo/logo.svg
0200 )
0201 add_custom_target(
0202     logo_png
0203     DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/images/${PROJECT_SLUG}.png
0204 )
0205 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/images/${PROJECT_SLUG}.png DESTINATION share/icons/hicolor/512x512/apps )
0206 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/images/${PROJECT_SLUG}.svg DESTINATION share/icons/hicolor/512x512/apps/ RENAME ${PROJECT_ID}.png )
0207 
0208 # Plugins
0209 install(DIRECTORY plugins DESTINATION ${DATA_INSTALL})
0210 
0211 function(plugin name)
0212     configure_file(${CMAKE_CURRENT_SOURCE_DIR}/plugins/${name}/plugin.json ${CMAKE_CURRENT_BINARY_DIR}/plugins/${name}/plugin.json COPYONLY)
0213     foreach(file ${ARGN})
0214         configure_file(${CMAKE_CURRENT_SOURCE_DIR}/plugins/${name}/${file} ${CMAKE_CURRENT_BINARY_DIR}/plugins/${name}/${file} COPYONLY)
0215     endforeach()
0216 endfunction()
0217 
0218 plugin(
0219     Hello
0220     hello_world.py
0221 )
0222 
0223 plugin(
0224     ReplaceColor
0225     replace_color.py
0226     replace.ui
0227 )
0228 
0229 plugin(
0230     AnimatedRaster
0231     animated_raster.py
0232 )
0233 
0234 plugin(
0235     dotLottie
0236     dotlottie.py
0237     icon.svg
0238 )
0239 
0240 plugin(
0241     Synfig
0242     synfig.py
0243 )
0244 
0245 plugin(
0246     HueShift
0247     hue_shift.py
0248 )
0249 
0250 
0251 plugin(
0252     FrameByFrame
0253     create_frames.py
0254     create_frames.ui
0255 )