import pathlib
import os
import sys
@VARS@
base_path = '@SRCDIR@/../macos/gimp-dmg.xcf.xz'
wilber_path = '@SRCDIR@/gimp-logo-shadow.svg'
splash_path = '@SRCDIR@/../gimp-splash.xcf.xz'
output_path = '@BUILDDIR@/gimp-dmg.png'
wilber_size = 155
offset_y = 77
# 1. Loading the base dmg elements.
procedure = Gimp.get_pdb().lookup_procedure("gimp-file-load")
config = procedure.create_config()
config.set_property("file", Gio.file_new_for_path(base_path))
v = Gimp.Procedure.run(procedure, config)
if v.index(0) != Gimp.PDBStatusType.SUCCESS:
sys.exit(70)
image = v.index(1)
image.undo_disable()
# 2. Loading Wilber.
procedure = Gimp.get_pdb().lookup_procedure("file-svg-load")
config = procedure.create_config()
config.set_property("file", Gio.file_new_for_path(wilber_path))
config.set_property("width", wilber_size)
config.set_property("height", wilber_size)
v = Gimp.Procedure.run(procedure, config)
if v.index(0) != Gimp.PDBStatusType.SUCCESS:
sys.exit(70)
tmp_image = v.index(1)
drawables = tmp_image.get_selected_drawables()
layer2 = Gimp.Layer.new_from_drawable (drawables[0], image)
image.insert_layer(layer2, None, 0)
layer2.set_offsets((image.get_width() - wilber_size) / 2, offset_y)
tmp_image.delete()
# 3. Loading background from cropped splash image.
procedure = Gimp.get_pdb().lookup_procedure("gimp-file-load")
config = procedure.create_config()
config.set_property("file", Gio.file_new_for_path(splash_path))
v = Gimp.Procedure.run(procedure, config)
if v.index(0) != Gimp.PDBStatusType.SUCCESS:
sys.exit(70)
tmp_image = v.index(1)
new_height = target_macos_h
new_width = new_height / image.get_height() * image.get_width()
tmp_image.crop(new_width, new_height, offset_macos_x, offset_macos_y)
tmp_image.scale(image.get_width(), image.get_height())
if layer_macos is not None:
drawable = tmp_image.get_layer_by_name(layer_macos)
if drawable is None:
sys.stderr.write(f'ERROR: unknown drawable name "{layer_macos}".\n')
sys.stderr.write( ' Please verify variable `layer_macos` in gimp-data/images/gimp-splash.crop\n')
sys.exit(70)
else:
drawable = tmp_image.flatten()
layer6 = Gimp.Layer.new_from_drawable (drawable, image)
image.insert_layer(layer6, None, 6)
# 4. Merging the background and Wilber on top.
image.merge_down(layer2, Gimp.MergeType.CLIP_TO_IMAGE)
procedure = Gimp.get_pdb().lookup_procedure("file-png-export")
config = procedure.create_config()
drawables = image.get_selected_drawables()
config.set_property("image", image)
config.set_property("file", Gio.file_new_for_path(output_path))
v = Gimp.Procedure.run(procedure, config)
if v.index(0) != Gimp.PDBStatusType.SUCCESS:
sys.exit(70)
[Dauer der Verarbeitung: 0.2 Sekunden, vorverarbeitet 2026-10-27]