diff --git a/icons/Symbolic/12/meson.build b/icons/Symbolic/12/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/12/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/128/meson.build b/icons/Symbolic/128/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/128/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/16/meson.build b/icons/Symbolic/16/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/16/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/18/meson.build b/icons/Symbolic/18/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/18/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/192/meson.build b/icons/Symbolic/192/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/192/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/20/meson.build b/icons/Symbolic/20/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/20/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/22/meson.build b/icons/Symbolic/22/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/22/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/24/meson.build b/icons/Symbolic/24/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/24/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/256/meson.build b/icons/Symbolic/256/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/256/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/32/meson.build b/icons/Symbolic/32/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/32/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/48/meson.build b/icons/Symbolic/48/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/48/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/64/meson.build b/icons/Symbolic/64/meson.build new file mode 100644 index 0000000000..124be6b24e --- /dev/null +++ b/icons/Symbolic/64/meson.build @@ -0,0 +1,30 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + if fs.exists(input_path) + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + else + # In size 64, some icons are not generated from vector images. + install_data(color_icon.split('/')[1], + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + endif +endforeach diff --git a/icons/Symbolic/96/meson.build b/icons/Symbolic/96/meson.build new file mode 100644 index 0000000000..fb32320141 --- /dev/null +++ b/icons/Symbolic/96/meson.build @@ -0,0 +1,24 @@ +icons_dir = size + 'x' + size + +foreach color_icon : source_icons + split_name = color_icon.split('.') + if split_name.length() != 2 + error('Unexpected icon name: ' + color_icon) + endif + output_path = split_name[0] + '-symbolic.symbolic.' + split_name[-1] + icon_name = output_path.split('/')[1] + + input_path = split_name[0] + '-symbolic.svg' + input_path = '../scalable/' + input_path.split('/')[1] + + custom_target(icon_name, + input : [ input_path ], + output: [ icon_name ], + command: [ + gtk_encode_symbolic_svg, '-o', '@OUTDIR@', '@INPUT@', icons_dir + ], + install: true, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) + +endforeach diff --git a/icons/Symbolic/meson.build b/icons/Symbolic/meson.build index c6df06fafe..6f1cc87da5 100644 --- a/icons/Symbolic/meson.build +++ b/icons/Symbolic/meson.build @@ -6,38 +6,49 @@ if have_vector_icons # [ '64x64', bitmap_64system ], [ '64x64', bitmap_64_always ], ] -else - all_icons = [ - [ '12x12', bitmap_12 ], - [ '16x16', bitmap_16 ], - [ '18x18', bitmap_18 ], - [ '20x20', bitmap_20 ], - [ '22x22', bitmap_22 ], - [ '24x24', bitmap_24 ], - [ '32x32', bitmap_32 ], - [ '48x48', bitmap_48 ], - [ '64x64', bitmap_64 + bitmap_64_always + bitmap_64system ], - [ '96x96', bitmap_96 ], - [ '128x128', bitmap_128 ], - [ '192x192', bitmap_192 ], - [ '256x256', bitmap_256 ], - ] -endif + foreach icon_info : all_icons + icons_dir = icon_info[0] + icons_list= icon_info[1] + install_data(icons_list, + install_dir: gimpiconsdir / theme / icons_dir / 'apps', + ) +endforeach +else + gtk_encode_symbolic_svg = find_program('gtk-encode-symbolic-svg') + + sizes = [ '12', '16', '18', '20', '22', '24', '32', + '48', '64', '96', '128', '192', '256' ] + sizes = { + '12': bitmap_12, + '16': bitmap_16, + '18': bitmap_18, + '20': bitmap_20, + '22': bitmap_22, + '24': bitmap_24, + '32': bitmap_32, + '48': bitmap_48, + '64': bitmap_64 + bitmap_64_always + bitmap_64system, + '96': bitmap_96, + '128': bitmap_128, + '192': bitmap_192, + '256': bitmap_256, + } + foreach size, source_icons: sizes + # Note: I originally wanted to implement it here in a loop but + # custom_target() doesn't accept an output path with a folder! So I + # end up creating as many empty directories as generated sizes and + # copying the same meson.build everywhere (which is really stupid, + # let's admit it). Only the 64x64 size has a slightly different + # meson.build as it also installs some non-symbolic images. + subdir(size) + endforeach +endif install_data('index.theme', install_dir: gimpiconsdir / theme, ) -foreach icon_info : all_icons - icons_dir = icon_info[0] - icons_list= icon_info[1] - install_data(icons_list, - install_dir: gimpiconsdir / theme / icons_dir / 'apps', - ) -endforeach - - icons_core = [ '64/gimp-question.png', ] icons_imgs = [ '64/gimp-wilber-eek.png', ] diff --git a/meson.build b/meson.build index 2f9527ee46..65f10f14c7 100644 --- a/meson.build +++ b/meson.build @@ -87,6 +87,7 @@ i18n = import('i18n') gnome = import('gnome') pythonmod = import('python') simd = import('unstable-simd') +fs = import('fs') cc = meson.get_compiler('c') cxx = meson.get_compiler('cpp')