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 |
else()
|
27 |
message(FATAL_ERROR "no svg2png converter defined here.")
|
28 |
endif()
|
29 |
|
30 |
add_custom_command (
|
31 |
OUTPUT ${IMAGE_OUTPUT}
|
32 |
DEPENDS ${IMAGE_INPUT}
|
33 |
COMMAND ${IMAGE_CONVERTER_${FILE_TYPE}} ${COMMAND_ARGS}
|
34 |
)
|
35 |
endmacro()
|
36 |
|
37 |
macro(add_scale_targets IMAGE_SRC IMAGE_NAME)
|
38 |
string(REPLACE "," ";" SCALES "${ARGN}")
|
39 |
foreach (CURRENT_SCALE ${SCALES})
|
40 |
if (${CURRENT_SCALE} EQUAL 0)
|
41 |
set (IMAGE_DST ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_NAME}.png)
|
42 |
else()
|
43 |
set (IMAGE_DST ${CMAKE_CURRENT_BINARY_DIR}/${IMAGE_NAME}_${CURRENT_SCALE}_${CURRENT_SCALE}.png)
|
44 |
endif()
|
45 |
|
46 |
convert_to_png(
|
47 |
${CMAKE_CURRENT_SOURCE_DIR}/${IMAGE_SRC}
|
48 |
${IMAGE_DST}
|
49 |
${CURRENT_SCALE}
|
50 |
)
|
51 |
list(APPEND IMAGE_TARGETS ${IMAGE_DST})
|
52 |
endforeach()
|
53 |
endmacro()
|
54 |
|
55 |
install(FILES desktop_icons/navit.desktop DESTINATION share/applications)
|
56 |
install(FILES desktop_icons/22x22/navit.png DESTINATION share/icons/hicolor/22x22/apps)
|
57 |
install(FILES desktop_icons/128x128/navit.png DESTINATION share/icons/hicolor/128x128/apps)
|
58 |
#install(FILES bench.xpm DESTINATION )
|
59 |
|
60 |
if (USE_SVG OR SVG2PNG)
|
61 |
FILE(GLOB SVG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.svg" "*.svgz")
|
62 |
|
63 |
if(USE_SVG)
|
64 |
list(APPEND IMAGE_TARGETS ${SVG_FILES})
|
65 |
endif(USE_SVG)
|
66 |
if(SVG2PNG)
|
67 |
list(APPEND FILES_TO_PNG ${SVG_FILES})
|
68 |
endif(SVG2PNG)
|
69 |
endif()
|
70 |
|
71 |
FILE(GLOB XPM_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.xpm")
|
72 |
if(XPM2PNG)
|
73 |
list(APPEND FILES_TO_PNG ${XPM_FILES})
|
74 |
else()
|
75 |
list(APPEND IMAGE_TARGETS ${XPM_FILES})
|
76 |
endif(XPM2PNG)
|
77 |
|
78 |
foreach (IMAGE_SRC ${FILES_TO_PNG})
|
79 |
string(REGEX REPLACE ".[a-z]*\$" "" IMAGE ${IMAGE_SRC})
|
80 |
|
81 |
if ( IMAGE_SRC MATCHES ".*svgz*" )
|
82 |
if ( DEFINED svg2png_scaling_nav AND ${IMAGE} MATCHES "^nav_")
|
83 |
add_scale_targets(${IMAGE_SRC} ${IMAGE} ${svg2png_scaling_nav})
|
84 |
elseif( DEFINED svg2png_scaling_flag AND ${IMAGE} MATCHES "^country_")
|
85 |
add_scale_targets(${IMAGE_SRC} ${IMAGE} ${svg2png_scaling_flag})
|
86 |
elseif( DEFINED svg2png_scaling)
|
87 |
add_scale_targets(${IMAGE_SRC} ${IMAGE} ${svg2png_scaling})
|
88 |
endif()
|
89 |
else()
|
90 |
add_scale_targets(${IMAGE_SRC} ${IMAGE} 0)
|
91 |
endif()
|
92 |
|
93 |
endforeach()
|
94 |
|
95 |
add_custom_target(images ALL DEPENDS ${IMAGE_TARGETS})
|
96 |
|
97 |
install(
|
98 |
FILES ${IMAGE_TARGETS}
|
99 |
DESTINATION ${IMAGE_DIR}
|
100 |
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
101 |
)
|