################################################# ##### ##### from_hex( HEX DEC ) ##### function( from_hex HEX DEC ) string(SUBSTRING "${HEX}" 2 -1 HEX) string(TOUPPER "${HEX}" HEX) set(_res 0) string(LENGTH "${HEX}" _strlen) while(_strlen GREATER 0) math(EXPR _res "${_res} * 16") string(SUBSTRING "${HEX}" 0 1 NIBBLE) string(SUBSTRING "${HEX}" 1 -1 HEX) if(NIBBLE STREQUAL "A") math(EXPR _res "${_res} + 10") elseif(NIBBLE STREQUAL "B") math(EXPR _res "${_res} + 11") elseif(NIBBLE STREQUAL "C") math(EXPR _res "${_res} + 12") elseif(NIBBLE STREQUAL "D") math(EXPR _res "${_res} + 13") elseif(NIBBLE STREQUAL "E") math(EXPR _res "${_res} + 14") elseif(NIBBLE STREQUAL "F") math(EXPR _res "${_res} + 15") else() math(EXPR _res "${_res} + ${NIBBLE}") endif() string(LENGTH "${HEX}" _strlen) endwhile() set(${DEC} ${_res} PARENT_SCOPE) endfunction() ##### prepare strings from data files ########### file( GLOB_RECURSE _chalk_data_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/data/*.ggr ${CMAKE_CURRENT_SOURCE_DIR}/data/*.gpl ${CMAKE_CURRENT_SOURCE_DIR}/data/*.gih ${CMAKE_CURRENT_SOURCE_DIR}/data/*.gbr ${CMAKE_CURRENT_SOURCE_DIR}/data/*.pat ) list( SORT _chalk_data_files ) unset( _chalk_data_l10n ) foreach( _chalk_file ${_chalk_data_files} ) if( "${_chalk_file}" MATCHES "\\.(ggr|gpl)" ) file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file} _file_data ) string( REGEX REPLACE "(^|\n)Name: ([^\n]+).*" "\\1i18n(\"\\2\");\\n" _file_l10n "${_file_data}" ) file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}.tde_l10n "${_file_l10n}" ) endif( ) if( "${_chalk_file}" MATCHES "\\.gih" ) file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file} _file_data ) string( REGEX REPLACE "^([^\n]+).*" "i18n(\"\\1\");\\n" _file_l10n "${_file_data}" ) file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}.tde_l10n "${_file_l10n}" ) endif( ) if( "${_chalk_file}" MATCHES "\\.gbr" ) file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file} _file_head LIMIT 4 HEX ) from_hex( "0x${_file_head}" _file_head_size ) file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file} _file_head LIMIT 4 OFFSET 4 HEX ) from_hex( "0x${_file_head}" _file_head_version ) if( "${_file_head_version}" EQUAL "1" ) math( EXPR _file_head_len "${_file_head_size} - 21" ) file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file} _file_head LIMIT ${_file_head_len} OFFSET 20 ) else( ) math( EXPR _file_head_len "${_file_head_size} - 29" ) file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file} _file_head LIMIT ${_file_head_len} OFFSET 28 ) endif( ) string( STRIP "${_file_head}" _file_head ) file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}.tde_l10n "i18n(\"${_file_head}\");\n" ) endif( ) if( "${_chalk_file}" MATCHES "\\.pat" ) file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file} _file_head LIMIT 4 HEX ) from_hex( "0x${_file_head}" _file_head_size ) math( EXPR _file_head_len "${_file_head_size} - 25" ) file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file} _file_head LIMIT ${_file_head_len} OFFSET 24 ) string( STRIP "${_file_head}" _file_head ) file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${_chalk_file}.tde_l10n "i18n(\"${_file_head}\");\n" ) endif( ) list( APPEND _chalk_data_l10n "${_chalk_file}.tde_l10n" ) endforeach( ) ##### create translation templates ############## tde_l10n_create_template( CATALOG "chalk" SOURCES ${_chalk_data_l10n} "." ) tde_l10n_auto_add_subdirectories( )