c61e016b1e7c235c154aa9215220df34182374c2
[profile/ivi/navit.git] / navit / navit / xpm / CMakeLists.txt
1 macro(convert_to_png IMAGE_INPUT IMAGE_OUTPUT SCALE)
2    get_filename_component(FILE_EXT ${IMAGE_INPUT} EXT)
3    string(TOUPPER ${FILE_EXT} FILE_TYPE)
4    string(REGEX REPLACE "^\\." "" FILE_TYPE ${FILE_TYPE})
5    if(${IMAGE_CONVERTER_${FILE_TYPE}} MATCHES "rsvg-convert")
6       if (${SCALE} GREATER 0)
7          set(SCALE_ARGS --width=${SCALE} --height=${SCALE})
8       else()
9          set(SCALE_ARGS)
10       endif()
11       set(COMMAND_ARGS ${SCALE_ARGS} --output ${IMAGE_OUTPUT} ${IMAGE_INPUT})
12    elseif(${IMAGE_CONVERTER_${FILE_TYPE}} MATCHES "convert")
13       if (${SCALE} GREATER 0)
14          set(SCALE_ARGS -resize ${SCALE}x${SCALE})
15       else()
16          set(SCALE_ARGS)
17       endif()
18       set(COMMAND_ARGS -background none ${IMAGE_INPUT} ${SCALE_ARGS} ${IMAGE_OUTPUT})
19    elseif(${IMAGE_CONVERTER_${FILE_TYPE}} MATCHES "ksvgtopng")
20       set (NEW_SCALE ${SCALE})
21       if (${SCALE} EQUAL 0)
22          file(STRINGS  ${IMAGE_INPUT} NEW_SCALE_LINE REGEX "[^-]width=\"[0-9pxt.]*\"")
23          string(REGEX REPLACE ".*width=\"([0-9]*).*" "\\1" NEW_SCALE ${NEW_SCALE_LINE})
24        endif()
25       set(COMMAND_ARGS ${NEW_SCALE} ${NEW_SCALE}  ${IMAGE_INPUT} --output ${IMAGE_OUTPUT})
26    elseif(${IMAGE_CONVERTER_${FILE_TYPE}} MATCHES "inkscape")
27       if (${SCALE} GREATER 0)
28          set(SCALE_ARGS --export-width=${SCALE} --export-height=${SCALE})
29       else()
30          set(SCALE_ARGS)
31       endif()
32       set(COMMAND_ARGS --without-gui --export-background-opacity=0 --export-png ${IMAGE_OUTPUT} ${SCALE_ARGS} ${IMAGE_INPUT})
33    else()
34       message(FATAL_ERROR "no svg2png converter defined here.")
35    endif()
36
37    add_custom_command (
38       OUTPUT ${IMAGE_OUTPUT}
39       DEPENDS ${IMAGE_INPUT}
40       COMMAND ${IMAGE_CONVERTER_${FILE_TYPE}} ${COMMAND_ARGS}
41    )
42 endmacro()
43
44 macro(add_scale_targets IMAGE_SRC IMAGE_NAME)
45    string(REPLACE "," ";" SCALES "${ARGN}")
46    foreach (CURRENT_SCALE ${SCALES})
47       if (${CURRENT_SCALE} EQUAL 0)
48          set (IMAGE_DST ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_NAME}.png)
49       else()
50          set (IMAGE_DST ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_NAME}_${CURRENT_SCALE}_${CURRENT_SCALE}.png)
51       endif()
52
53       convert_to_png(
54          ${CMAKE_CURRENT_SOURCE_DIR}/${IMAGE_SRC} 
55          ${IMAGE_DST}
56          ${CURRENT_SCALE}
57       )
58       list(APPEND IMAGE_TARGETS ${IMAGE_DST})
59    endforeach()
60 endmacro()
61
62 install(FILES  desktop_icons/navit.desktop DESTINATION share/applications)
63 install(FILES  desktop_icons/22x22/navit.png DESTINATION share/icons/hicolor/22x22/apps)
64 install(FILES  desktop_icons/128x128/navit.png DESTINATION share/icons/hicolor/128x128/apps)
65 #install(FILES  bench.xpm DESTINATION )
66
67 if (USE_SVG OR SVG2PNG)
68    FILE(GLOB SVG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.svg" "*.svgz")
69    
70    if(USE_SVG)
71       list(APPEND IMAGE_TARGETS ${SVG_FILES})
72    endif(USE_SVG)
73    if(SVG2PNG)
74       list(APPEND FILES_TO_PNG ${SVG_FILES})
75    endif(SVG2PNG)
76 endif()
77
78 FILE(GLOB XPM_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.xpm")
79 if(XPM2PNG)
80    list(APPEND FILES_TO_PNG ${XPM_FILES})
81 else()
82    list(APPEND IMAGE_TARGETS ${XPM_FILES})
83 endif(XPM2PNG)
84
85 foreach (IMAGE_SRC ${FILES_TO_PNG})
86    string(REGEX REPLACE ".[a-z]*\$" "" IMAGE ${IMAGE_SRC})
87    
88    if ( IMAGE_SRC MATCHES ".*svgz*" )
89       if ( DEFINED svg2png_scaling_nav AND ${IMAGE} MATCHES "^nav_")
90          add_scale_targets(${IMAGE_SRC} ${IMAGE} ${svg2png_scaling_nav})
91       elseif( DEFINED svg2png_scaling_flag AND ${IMAGE} MATCHES "^country_")
92          add_scale_targets(${IMAGE_SRC} ${IMAGE} ${svg2png_scaling_flag})
93       elseif( DEFINED svg2png_scaling)
94          add_scale_targets(${IMAGE_SRC} ${IMAGE} ${svg2png_scaling})
95       endif()
96    else()
97       add_scale_targets(${IMAGE_SRC} ${IMAGE} 0)
98    endif()
99       
100 endforeach()
101
102 add_custom_target(images ALL DEPENDS ${IMAGE_TARGETS})
103 add_custom_target(images_resource DEPENDS images COMMAND mkdir -p ../resources/share/navit/xpm COMMAND cp ${IMAGE_TARGETS} ../resources/share/navit/xpm)
104
105 install(
106    FILES ${IMAGE_TARGETS}
107    DESTINATION ${IMAGE_DIR}
108    PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
109 )