[gimp] icons: have -Dvec-icons=false option work with meson.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] icons: have -Dvec-icons=false option work with meson.
- Date: Wed, 26 Jan 2022 00:10:52 +0000 (UTC)
commit 11183f4fa4b39b4f3e287a676b6871b048aa4ee9
Author: Jehan <jehan girinstud io>
Date: Wed Jan 26 00:29:39 2022 +0100
icons: have -Dvec-icons=false option work with meson.
The whole logics of creating specially prepared PNG images for vector
icons (with gtk-encode-symbolic-svg) was absent. This option was
basically completely broken, yet we now know that we need the ability to
install PNG alternatives for the icons (see #6821).
This is a continuation of previous commit which is straightening a bit
our whole icon theme builds. Note though that more needs to be done
because I definitely still see room for more mess and far too much
duplication.
icons/Symbolic/12/meson.build | 24 +++++++++++++++++
icons/Symbolic/128/meson.build | 24 +++++++++++++++++
icons/Symbolic/16/meson.build | 24 +++++++++++++++++
icons/Symbolic/18/meson.build | 24 +++++++++++++++++
icons/Symbolic/192/meson.build | 24 +++++++++++++++++
icons/Symbolic/20/meson.build | 24 +++++++++++++++++
icons/Symbolic/22/meson.build | 24 +++++++++++++++++
icons/Symbolic/24/meson.build | 24 +++++++++++++++++
icons/Symbolic/256/meson.build | 24 +++++++++++++++++
icons/Symbolic/32/meson.build | 24 +++++++++++++++++
icons/Symbolic/48/meson.build | 24 +++++++++++++++++
icons/Symbolic/64/meson.build | 30 +++++++++++++++++++++
icons/Symbolic/96/meson.build | 24 +++++++++++++++++
icons/Symbolic/meson.build | 61 +++++++++++++++++++++++++-----------------
meson.build | 1 +
15 files changed, 355 insertions(+), 25 deletions(-)
---
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 ],
]
+
+ 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
- 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
+ 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')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]