function(zero_pad width number padded_number) string(LENGTH "${number}" number_length) math(EXPR pad_length "${width} - ${number_length}") set(pad "") if(pad_length GREATER 0) string(REPEAT "0" ${pad_length} pad) endif() set(${padded_number} "${pad}${number}" PARENT_SCOPE ) endfunction() set(GR_COLORMAPS uniform temperature grayscale glowing rainbowlike geologic greenscale cyanscale bluescale magentascale redscale flame brownscale pilatus autumn bone cool copper gray hot hsv jet pink spectral spring summer winter gist_earth gist_heat gist_ncar gist_rainbow gist_stern afmhot brg bwr coolwarm cmrmap cubehelix gnuplot gnuplot2 ocean rainbow seismic terrain viridis inferno plasma magma ) set(GR_FONTS times_roman times_italic times_bold times_bolditalic helvetica helvetica_oblique helvetica_bold helvetica_boldoblique courier courier_oblique courier_bold courier_boldoblique symbol bookman_light bookman_lightitalic bookman_demi bookman_demiitalic newcenturyschlbk_roman newcenturyschlbk_italic newcenturyschlbk_bold newcenturyschlbk_bolditalic avantgarde_book avantgarde_bookoblique avantgarde_demi avantgarde_demioblique palantino_roman palantino_italic palantino_bold palantino_bolditalic zapfchancery_mediumitalic zapfdingbats computermodern dejavusans stix_two_math ) set(GR_FONT_INDICES 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 232 233 234 ) set(GR_FONT_PRECISIONS string char stroke outline) set(GR_LINE_TYPES solid dashed dotted dashed_dotted dash_2_dot dash_3_dot long_dash long_short_dash spaced_dash spaced_dot double_dot triple_dot ) set(GR_LINE_TYPE_INDICES 1 2 3 4 -1 -2 -3 -4 -5 -6 -7 -8 ) set(GR_MARKER_TYPES dot plus asterisk circle diagonal_cross solid_circle triangle_up solid_tri_up triangle_down solid_tri_down square solid_square bowtie solid_bowtie hglass solid_hglass diamond solid_diamond star solid_star tri_up_down solid_tri_right solid_tri_left hollow_plus solid_plus pentagon hexagon heptagon octagon star_4 star_5 star_6 star_7 star_8 vline hline omark ) set(GR_MARKER_TYPE_INDICES 1 2 3 4 5 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -25 -26 -27 -28 -29 -30 -31 -32 ) set(GRPLOT_QRC "\n \n") foreach(colormap IN LISTS GR_COLORMAPS) string(APPEND GRPLOT_QRC " preview_images/colormaps/${colormap}.png\n") endforeach() foreach(font IN LISTS GR_FONTS) string(APPEND GRPLOT_QRC " preview_images/fonts/${font}.png\n") endforeach() foreach(font_precision IN LISTS GR_FONT_PRECISIONS) string(APPEND GRPLOT_QRC " preview_images/font_precisions/${font_precision}.png\n") endforeach() foreach(line_type IN LISTS GR_LINE_TYPES) string(APPEND GRPLOT_QRC " preview_images/line_types/${line_type}.png\n") endforeach() foreach(marker_type IN LISTS GR_MARKER_TYPES) string(APPEND GRPLOT_QRC " preview_images/marker_types/${marker_type}.png\n") endforeach() foreach(hatch_index RANGE 1 11) zero_pad(2 ${hatch_index} hatch_index_str) string(APPEND GRPLOT_QRC " preview_images/fill_styles/hatch${hatch_index_str}.png\n") endforeach() foreach(pattern_index RANGE 1 108) zero_pad(3 ${pattern_index} pattern_index_str) string(APPEND GRPLOT_QRC " preview_images/fill_styles/pattern${pattern_index_str}.png\n") endforeach() string(APPEND GRPLOT_QRC " \n") file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/grplot.qrc" "${GRPLOT_QRC}") set(GEN_PREVIEWS_SRC "\ #ifdef __unix__\n\ #define _XOPEN_SOURCE 500\n\ #define _POSIX_C_SOURCE 200112L\n\ #endif\n\ \n\ #ifdef _WIN32\n\ #include \n\ #define mkdir(dir, mode) (_mkdir)(dir)\n\ #define PATH_SEP '\\\\'\n\ #else\n\ #include \n\ #include \n\ #define mkdir(dir, mode) (mkdir)(dir, mode)\n\ #define PATH_SEP '/'\n\ #endif\n\ \n\ #include \n\ #include \n\ #include \n\ #include \n\ \n\ #define MAX_FILENAME_LENGTH 80\n\ #define COLORMAP_WIDTH 2000\n\ #define COLORMAP_HEIGHT 200\n\ #define FONT_WIDTH 1800\n\ #define FONT_HEIGHT 200\n\ #define FONT_PRECISION_WIDTH 1350\n\ #define FONT_PRECISION_HEIGHT 200\n\ #define LINE_TYPE_WIDTH 1000\n\ #define LINE_TYPE_HEIGHT 100\n\ #define MARKER_TYPE_WIDTH 200\n\ #define MARKER_TYPE_HEIGHT 200\n\ #define MARKER_SIZE 50\n\ #define MARKER_BORDER_COLORMAP 32\n\ #define MARKER_BORDER_COLOR 1100\n\ #define FILL_STYLE_WIDTH 16\n\ #define FILL_STYLE_HEIGHT 16\n\ #define FILL_STYLE_MAX_PATTERN 108\n\ #define FILL_STYLE_MAX_HATCH 11\n\ \n\ typedef struct\n\ {\n\ const char *name;\n\ int id;\n\ } entry_t;\n\ \n\ static const entry_t COLORMAPS[] = {\n\ " ) set(colormap_index 0) foreach(colormap IN LISTS GR_COLORMAPS) string(APPEND GEN_PREVIEWS_SRC " {\"${colormap}\", ${colormap_index}},\n") math(EXPR colormap_index "${colormap_index} + 1") endforeach() string( APPEND GEN_PREVIEWS_SRC "\ {NULL, 0},\n\ };\n\ \n\ static entry_t FONTS[] = {\n\ " ) foreach( font_index font IN ZIP_LISTS GR_FONT_INDICES GR_FONTS ) string(APPEND GEN_PREVIEWS_SRC " {\"${font}\", ${font_index}},\n") endforeach() string( APPEND GEN_PREVIEWS_SRC "\ {NULL, 0},\n\ };\n\ \n\ static entry_t FONT_PRECISIONS[] = {\n\ " ) set(font_precision_index 0) foreach(font_precision IN LISTS GR_FONT_PRECISIONS) string(APPEND GEN_PREVIEWS_SRC " {\"${font_precision}\", ${font_precision_index}},\n") math(EXPR font_precision_index "${font_precision_index} + 1") endforeach() string( APPEND GEN_PREVIEWS_SRC "\ {NULL, 0},\n\ };\n\ \n\ static entry_t LINE_TYPES[] = {\n\ " ) foreach( line_type_index line_type IN ZIP_LISTS GR_LINE_TYPE_INDICES GR_LINE_TYPES ) string(APPEND GEN_PREVIEWS_SRC " {\"${line_type}\", ${line_type_index}},\n") endforeach() string( APPEND GEN_PREVIEWS_SRC "\ {NULL, 0},\n\ };\n\ \n\ static entry_t MARKER_TYPES[] = {\n\ " ) foreach( marker_type_index marker_type IN ZIP_LISTS GR_MARKER_TYPE_INDICES GR_MARKER_TYPES ) string(APPEND GEN_PREVIEWS_SRC " {\"${marker_type}\", ${marker_type_index}},\n") endforeach() string( APPEND GEN_PREVIEWS_SRC "\ {NULL, 0},\n\ };\n\ \n\ static void create_colormaps(void)\n\ {\n\ const entry_t *colormap = COLORMAPS;\n\ int color_indices[256];\n\ int i;\n\ char out_pathname[MAX_FILENAME_LENGTH];\n\ \n\ for (i = 0; i < 256; ++i)\n\ {\n\ color_indices[i] = 1000 + i;\n\ }\n\ \n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%ccolormaps\", PATH_SEP);\n\ mkdir(out_pathname, 0755);\n\ gr_setwindow(0.0, 1.0, 0.0, 1.0);\n\ gr_setviewport(0.0, 1.0, 0.0, 1.0 * COLORMAP_HEIGHT / COLORMAP_WIDTH);\n\ while (colormap->name != NULL)\n\ {\n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%ccolormaps%c%s.png\", PATH_SEP, PATH_SEP,\n\ colormap->name);\n\ gr_beginprint(out_pathname);\n\ gr_setwswindow(0.0, 1.0, 0.0, 1.0 * COLORMAP_HEIGHT / COLORMAP_WIDTH);\n\ gr_setwsviewport(0.0, COLORMAP_WIDTH / 600.0 * 0.0254, 0.0, COLORMAP_HEIGHT / 600.0 * 0.0254);\n\ gr_setcolormap(colormap->id);\n\ gr_cellarray(0.0, 1.0, 0.0, 1.0, 256, 1, 1, 1, 256, 1, color_indices);\n\ gr_endprint();\n\ ++colormap;\n\ }\n\ }\n\ \n\ static void create_fonts(void)\n\ {\n\ const entry_t *font = FONTS;\n\ char out_pathname[MAX_FILENAME_LENGTH];\n\ \n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%cfonts\", PATH_SEP);\n\ mkdir(out_pathname, 0755);\n\ gr_setwindow(0.0, 1.0, 0.0, 1.0);\n\ gr_setviewport(0.0, 1.0, 0.0, 1.0 * FONT_HEIGHT / FONT_WIDTH);\n\ gr_settextalign(GKS_K_TEXT_HALIGN_LEFT, GKS_K_TEXT_VALIGN_BOTTOM);\n\ gr_setcharheight(0.6 * FONT_HEIGHT / FONT_WIDTH);\n\ while (font->name != NULL)\n\ {\n\ int font_prec;\n\ switch (font->id)\n\ {\n\ case 113:\n\ case 131:\n\ font_prec = GKS_K_TEXT_PRECISION_STRING;\n\ break;\n\ default:\n\ font_prec = GKS_K_TEXT_PRECISION_OUTLINE;\n\ break;\n\ }\n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%cfonts%c%s.png\", PATH_SEP, PATH_SEP, font->name);\n\ gr_beginprint(out_pathname);\n\ gr_setwswindow(0.0, 1.0, 0.0, 1.0 * FONT_HEIGHT / FONT_WIDTH);\n\ gr_setwsviewport(0.0, FONT_WIDTH / 600.0 * 0.0254, 0.0, FONT_HEIGHT / 600.0 * 0.0254);\n\ gr_settextfontprec(font->id, font_prec);\n\ gr_text(0.0, 0.1 * FONT_HEIGHT / FONT_WIDTH, \"AaBbCcDdEeFfGg\");\n\ gr_endprint();\n\ ++font;\n\ }\n\ }\n\ \n\ static void create_font_precisions(void)\n\ {\n\ const entry_t *precision = FONT_PRECISIONS;\n\ const entry_t *font = FONTS;\n\ char out_pathname[MAX_FILENAME_LENGTH];\n\ \n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%cfont_precisions\", PATH_SEP);\n\ mkdir(out_pathname, 0755);\n\ gr_setwindow(0.0, 1.0, 0.0, 1.0);\n\ gr_setviewport(0.0, 1.0, 0.0, 1.0 * FONT_PRECISION_HEIGHT / FONT_PRECISION_WIDTH);\n\ gr_settextalign(GKS_K_TEXT_HALIGN_LEFT, GKS_K_TEXT_VALIGN_BOTTOM);\n\ gr_setcharheight(0.7 * FONT_PRECISION_HEIGHT / FONT_PRECISION_WIDTH);\n\ while (precision->name != NULL)\n\ {\n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%cfont_precisions%c%s.png\", PATH_SEP, PATH_SEP,\n\ precision->name);\n\ gr_beginprint(out_pathname);\n\ gr_setwswindow(0.0, 1.0, 0.0, 1.0 * FONT_PRECISION_HEIGHT / FONT_PRECISION_WIDTH);\n\ gr_setwsviewport(0.0, FONT_PRECISION_WIDTH / 600.0 * 0.0254, 0.0, FONT_PRECISION_HEIGHT / 600.0 * 0.0254);\n\ gr_settextfontprec(font->id, precision->id);\n\ gr_text(0.0, 0.0, (char *)font->name);\n\ gr_endprint();\n\ ++precision;\n\ }\n\ }\n\ \n\ static void create_line_types(void)\n\ {\n\ const entry_t *line_type = LINE_TYPES;\n\ const double x[2] = {0.0, 1.0};\n\ const double y[2] = {0.5, 0.5};\n\ char out_pathname[MAX_FILENAME_LENGTH];\n\ \n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%cline_types\", PATH_SEP);\n\ mkdir(out_pathname, 0755);\n\ gr_setwindow(0.0, 1.0, 0.0, 1.0);\n\ gr_setviewport(0.0, 1.0, 0.0, 1.0 * LINE_TYPE_HEIGHT / LINE_TYPE_WIDTH);\n\ gr_setlinewidth(50);\n\ while (line_type->name != NULL)\n\ {\n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%cline_types%c%s.png\", PATH_SEP, PATH_SEP,\n\ line_type->name);\n\ gr_beginprint(out_pathname);\n\ gr_setwswindow(0.0, 1.0, 0.0, 1.0 * LINE_TYPE_HEIGHT / LINE_TYPE_WIDTH);\n\ gr_setwsviewport(0.0, LINE_TYPE_WIDTH / 600.0 * 0.0254, 0.0, LINE_TYPE_HEIGHT / 600.0 * 0.0254);\n\ gr_setlinetype(line_type->id);\n\ gr_polyline(2, (double *)x, (double *)y);\n\ gr_endprint();\n\ ++line_type;\n\ }\n\ }\n\ \n\ static void create_marker_types(void)\n\ {\n\ const entry_t *marker_type = MARKER_TYPES;\n\ const double x = 0.5, y = 0.5;\n\ char out_pathname[MAX_FILENAME_LENGTH];\n\ \n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%cmarker_types\", PATH_SEP);\n\ mkdir(out_pathname, 0755);\n\ gr_setwindow(0.0, 1.0, 0.0, 1.0);\n\ gr_setviewport(0.0, 1.0, 0.0, 1.0 * MARKER_TYPE_HEIGHT / MARKER_TYPE_WIDTH);\n\ gr_setmarkersize(MARKER_SIZE);\n\ gr_setlinewidth(MARKER_SIZE);\n\ gr_setborderwidth(0.4 * MARKER_SIZE);\n\ gr_setcolormap(MARKER_BORDER_COLORMAP);\n\ while (marker_type->name != NULL)\n\ {\n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%cmarker_types%c%s.png\", PATH_SEP, PATH_SEP,\n\ marker_type->name);\n\ gr_beginprint(out_pathname);\n\ gr_setbordercolorind(MARKER_BORDER_COLOR);\n\ gr_setwswindow(0.0, 1.0, 0.0, 1.0 * MARKER_TYPE_HEIGHT / MARKER_TYPE_WIDTH);\n\ gr_setwsviewport(0.0, MARKER_TYPE_WIDTH / 600.0 * 0.0254, 0.0, MARKER_TYPE_HEIGHT / 600.0 * 0.0254);\n\ gr_setmarkertype(marker_type->id);\n\ gr_polymarker(1, (double *)&x, (double *)&y);\n\ gr_endprint();\n\ ++marker_type;\n\ }\n\ }\n\ \n\ static void create_fill_styles(void)\n\ {\n\ const double x[4] = {0.0, 1.0, 1.0, 0.0};\n\ const double y[4] = {0.0, 0.0, 1.0, 1.0};\n\ char out_pathname[MAX_FILENAME_LENGTH];\n\ int i;\n\ \n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%cfill_styles\", PATH_SEP);\n\ mkdir(out_pathname, 0755);\n\ gr_setwindow(0.0, 1.0, 0.0, 1.0);\n\ gr_setviewport(0.0, 1.0, 0.0, 1.0 * MARKER_TYPE_HEIGHT / MARKER_TYPE_WIDTH);\n\ gr_setfillintstyle(GKS_K_INTSTYLE_PATTERN);\n\ for (i = 1; i <= FILL_STYLE_MAX_PATTERN; ++i)\n\ {\n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%cfill_styles%cpattern%03d.png\", PATH_SEP, PATH_SEP,\n\ i);\n\ gr_beginprint(out_pathname);\n\ gr_setwswindow(0.0, 1.0, 0.0, 1.0 * FILL_STYLE_HEIGHT / FILL_STYLE_WIDTH);\n\ gr_setwsviewport(0.0, FILL_STYLE_WIDTH / 600.0 * 0.0254, 0.0, FILL_STYLE_HEIGHT / 600.0 * 0.0254);\n\ gr_setfillintstyle(GKS_K_INTSTYLE_SOLID);\n\ gr_setfillcolorind(0);\n\ gr_fillarea(4, (double *)x, (double *)y);\n\ gr_setfillintstyle(GKS_K_INTSTYLE_PATTERN);\n\ gr_setfillcolorind(1);\n\ gr_setfillstyle(i);\n\ gr_fillarea(4, (double *)x, (double *)y);\n\ gr_endprint();\n\ }\n\ gr_setfillintstyle(GKS_K_INTSTYLE_HATCH);\n\ for (i = 1; i <= FILL_STYLE_MAX_HATCH; ++i)\n\ {\n\ snprintf(out_pathname, MAX_FILENAME_LENGTH, \"preview_images%cfill_styles%chatch%02d.png\", PATH_SEP, PATH_SEP, i);\n\ gr_beginprint(out_pathname);\n\ gr_setwswindow(0.0, 1.0, 0.0, 1.0 * FILL_STYLE_HEIGHT / FILL_STYLE_WIDTH);\n\ gr_setwsviewport(0.0, FILL_STYLE_WIDTH / 600.0 * 0.0254, 0.0, FILL_STYLE_HEIGHT / 600.0 * 0.0254);\n\ gr_setfillintstyle(GKS_K_INTSTYLE_SOLID);\n\ gr_setfillcolorind(0);\n\ gr_fillarea(4, (double *)x, (double *)y);\n\ gr_setfillintstyle(GKS_K_INTSTYLE_HATCH);\n\ gr_setfillcolorind(1);\n\ gr_setfillstyle(i);\n\ gr_fillarea(4, (double *)x, (double *)y);\n\ gr_endprint();\n\ }\n\ }\n\ \n\ int main(int argc, char **argv)\n\ {\n\ #ifdef _WIN32\n\ putenv(\"GKS_WSTYPE=nul\");\n\ #else\n\ setenv(\"GKS_WSTYPE\", \"nul\", 1);\n\ #endif\n\ \n\ mkdir(\"preview_images\", 0755);\n\ \n\ create_colormaps();\n\ create_fonts();\n\ create_font_precisions();\n\ create_line_types();\n\ create_marker_types();\n\ create_fill_styles();\n\ \n\ return 0;\n\ }\n\ " ) if(NOT CMAKE_CROSSCOMPILING) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen_preview_images.c" "${GEN_PREVIEWS_SRC}") add_executable(gen_preview_images EXCLUDE_FROM_ALL ${CMAKE_CURRENT_BINARY_DIR}/gen_preview_images.c) target_link_libraries(gen_preview_images PRIVATE GR::GKS GR::GR) set(GR_GEN_PREVIEW_IMAGES_EXECUTABLE $) else() if(GR_HOST_DIRECTORY) file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/gen_preview_images") file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen_preview_images/gen_preview_images.c" "${GEN_PREVIEWS_SRC}") file( WRITE "${CMAKE_CURRENT_BINARY_DIR}/gen_preview_images/CMakeLists.txt" "\ cmake_minimum_required(VERSION 3.1...4.0 FATAL_ERROR)\n\ \n\ project(\n\ gen_preview_images\n\ LANGUAGES C\n\ )\n\ \n\ set(GR_DIRECTORY\n\ \"/usr/local/gr\"\n\ CACHE STRING \"GR installation prefix\"\n\ )\n\ \n\ add_executable(gen_preview_images gen_preview_images.c)\n\ find_package(GR CONFIG REQUIRED PATHS \${GR_DIRECTORY} NO_DEFAULT_PATH)\n\ target_link_libraries(gen_preview_images PRIVATE GR::GKS GR::GR)\n\ set_target_properties(\n\ gen_preview_images\n\ PROPERTIES\n\ C_STANDARD 90\n\ C_STANDARD_REQUIRED ON\n\ C_EXTENSIONS OFF\n\ )\n\ " ) set(GR_GEN_PREVIEW_IMAGES_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/host/gen_preview_images${CMAKE_HOST_EXECUTABLE_SUFFIX}" ) add_custom_target(gen_preview_images DEPENDS ${GR_GEN_PREVIEW_IMAGES_EXECUTABLE}) add_custom_command( OUTPUT ${GR_GEN_PREVIEW_IMAGES_EXECUTABLE} COMMAND "${CMAKE_COMMAND}" -S "${CMAKE_CURRENT_BINARY_DIR}/gen_preview_images" -B "${CMAKE_CURRENT_BINARY_DIR}/gen_preview_images/build" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE="${CMAKE_CURRENT_BINARY_DIR}/host" -DGR_DIRECTORY="${GR_HOST_DIRECTORY}" COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/gen_preview_images/build" --config Release DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/gen_preview_images/gen_preview_images.c" ) else() message( WARNING "GR_HOST_DIRECTORY is not set. GRPlot preview images will be taken from the source code tree and could differ \ from the version of GRPlot that you are building." ) endif() endif() set(GR_COLORMAP_IMAGES "${GR_COLORMAPS}") list(TRANSFORM GR_COLORMAP_IMAGES PREPEND "preview_images/colormaps/") list(TRANSFORM GR_COLORMAP_IMAGES APPEND ".png") set(GR_FONT_IMAGES "${GR_FONTS}") list(TRANSFORM GR_FONT_IMAGES PREPEND "preview_images/fonts/") list(TRANSFORM GR_FONT_IMAGES APPEND ".png") set(GR_FONT_PRECISION_IMAGES "${GR_FONT_PRECISIONS}") list(TRANSFORM GR_FONT_PRECISION_IMAGES PREPEND "preview_images/font_precisions/") list(TRANSFORM GR_FONT_PRECISION_IMAGES APPEND ".png") set(GR_LINE_TYPE_IMAGES "${GR_LINE_TYPES}") list(TRANSFORM GR_LINE_TYPE_IMAGES PREPEND "preview_images/line_types/") list(TRANSFORM GR_LINE_TYPE_IMAGES APPEND ".png") set(GR_MARKER_TYPE_IMAGES "${GR_MARKER_TYPES}") list(TRANSFORM GR_MARKER_TYPE_IMAGES PREPEND "preview_images/marker_types/") list(TRANSFORM GR_MARKER_TYPE_IMAGES APPEND ".png") set(GR_FILL_STYLE_IMAGES "") foreach(hatch_index RANGE 1 11) zero_pad(2 ${hatch_index} hatch_index_str) list(APPEND GR_FILL_STYLE_IMAGES "hatch${hatch_index_str}") endforeach() foreach(pattern_index RANGE 1 108) zero_pad(3 ${pattern_index} pattern_index_str) list(APPEND GR_FILL_STYLE_IMAGES "pattern${pattern_index_str}") endforeach() list(TRANSFORM GR_FILL_STYLE_IMAGES PREPEND "preview_images/fill_styles/") list(TRANSFORM GR_FILL_STYLE_IMAGES APPEND ".png") add_custom_target( grplot_preview_images DEPENDS ${GR_COLORMAP_IMAGES} ${GR_FONT_IMAGES} ${GR_FONT_PRECISION_IMAGES} ${GR_LINE_TYPE_IMAGES} ${GR_MARKER_TYPE_IMAGES} ${GR_FILL_STYLE_IMAGES} ) if(NOT CMAKE_CROSSCOMPILING OR GR_HOST_DIRECTORY) add_custom_command( OUTPUT ${GR_COLORMAP_IMAGES} ${GR_FONT_IMAGES} ${GR_FONT_PRECISION_IMAGES} ${GR_LINE_TYPE_IMAGES} ${GR_MARKER_TYPE_IMAGES} ${GR_FILL_STYLE_IMAGES} COMMAND "${CMAKE_COMMAND}" -E env GKS_FONTPATH="${CMAKE_CURRENT_LIST_DIR}/../lib/gks" ${GR_GEN_PREVIEW_IMAGES_EXECUTABLE} DEPENDS ${GR_GEN_PREVIEW_IMAGES_EXECUTABLE} ) else() add_custom_command( OUTPUT ${GR_COLORMAP_IMAGES} ${GR_FONT_IMAGES} ${GR_FONT_PRECISION_IMAGES} ${GR_LINE_TYPE_IMAGES} ${GR_MARKER_TYPE_IMAGES} ${GR_FILL_STYLE_IMAGES} COMMAND "${CMAKE_COMMAND}" -E copy_directory "${CMAKE_CURRENT_LIST_DIR}/../lib/grm/grplot/preview_images" "${CMAKE_CURRENT_BINARY_DIR}/preview_images" ) endif()