Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  test-palette.py   Sprache: Python

 

#!/usr/bin/env python3

import struct

GIMP_TEST_PALETTE      = "Bears"
GIMP_TEST_PALETTE_SIZE = 256
GIMP_TEST_COLOR_IDX    = 3
GIMP_TEST_COLOR_FORMAT = "R'G'B' u8"
GIMP_TEST_COLOR_R_U8   = 72
GIMP_TEST_COLOR_G_U8   = 56
GIMP_TEST_COLOR_B_U8   = 56
EPSILON                = 1e-6

pal = Gimp.Palette.get_by_name(GIMP_TEST_PALETTE)
gimp_assert('gimp_palette_get_by_name()', type(pal) == Gimp.Palette)

pal2 = Gimp.Palette.get_by_name(GIMP_TEST_PALETTE)
gimp_assert('gimp_palette_get_by_name() is unique', pal == pal2)

n_colors = pal.get_color_count()
gimp_assert('gimp_palette_get_color_count()', GIMP_TEST_PALETTE_SIZE == n_colors)

colors = pal.get_colors()
gimp_assert('gimp_palette_get_colors()',
            len(colors) == GIMP_TEST_PALETTE_SIZE and type(colors[0]) == Gegl.Color)

f = colors[GIMP_TEST_COLOR_IDX].get_format()
gimp_assert("Checking fourth palette color's format",
            f == Babl.format (GIMP_TEST_COLOR_FORMAT))

b = colors[GIMP_TEST_COLOR_IDX].get_bytes(f)
rgb = b.get_data()
gimp_assert("Checking fourth palette color's RGB components",
            int(rgb[0]) == GIMP_TEST_COLOR_R_U8 and int(rgb[1]) == GIMP_TEST_COLOR_G_U8 and int(rgb[2]) == GIMP_TEST_COLOR_B_U8)

colormap, n_colormap_colors = pal.get_colormap (f)
format_bpp = Babl.format_get_bytes_per_pixel (f);
gimp_assert("gimp_palette_get_colormap()",
            colormap is not None and n_colormap_colors == n_colors and
            n_colormap_colors * format_bpp == len(colormap))

gimp_assert("Comparing fourth palette color's RGB components from colormap",
            colormap[format_bpp * GIMP_TEST_COLOR_IDX] == GIMP_TEST_COLOR_R_U8     and
            colormap[format_bpp * GIMP_TEST_COLOR_IDX + 1] == GIMP_TEST_COLOR_G_U8 and
            colormap[format_bpp * GIMP_TEST_COLOR_IDX + 2]== GIMP_TEST_COLOR_B_U8)

f2 = Babl.format('RGBA float')
colormap, n_colormap_colors = pal.get_colormap (f2)
f2_bpp = Babl.format_get_bytes_per_pixel (f2);
gimp_assert('gimp_palette_get_colormap() in "RGBA float"',
            colormap is not None and n_colormap_colors == n_colors and
            n_colormap_colors * f2_bpp == len(colormap))


start = f2_bpp * GIMP_TEST_COLOR_IDX
colormap_r = struct.unpack('f', colormap[start:start + 4])[0]
colormap_g = struct.unpack('f', colormap[start + 4:start + 8])[0]
colormap_b = struct.unpack('f', colormap[start + 8:start + 12])[0]

rgb_bytes = colors[GIMP_TEST_COLOR_IDX].get_bytes(f2)
rgb = rgb_bytes.get_data()
palette_r = struct.unpack('f', rgb[:4])[0]
palette_g = struct.unpack('f', rgb[4:8])[0]
palette_b = struct.unpack('f', rgb[8:12])[0]
gimp_assert("Comparing fourth palette color's RGB components from colormap in float format",
            abs(colormap_r - palette_r) < EPSILON and
            abs(colormap_g - palette_g) < EPSILON and
            abs(colormap_b - palette_b) < EPSILON)

# Run the same tests through PDB:

proc   = Gimp.get_pdb().lookup_procedure('gimp-palette-get-by-name')
config = proc.create_config()
config.set_property('name', GIMP_TEST_PALETTE)
result = proc.run(config)
status = result.index(0)
gimp_assert('gimp-palette-get-by-name', status == Gimp.PDBStatusType.SUCCESS)

pal2 = result.index(1)
gimp_assert('gimp-palette-get-by-name and gimp_palette_get_by_name() get identical result', pal == pal2)

proc   = Gimp.get_pdb().lookup_procedure('gimp-palette-get-color-count')
config = proc.create_config()
config.set_property('palette', pal)
result = proc.run(config)
status = result.index(0)
gimp_assert('gimp-palette-get-color-count', status == Gimp.PDBStatusType.SUCCESS)

n_colors = result.index(1)
gimp_assert('gimp_palette_get_color_count()', GIMP_TEST_PALETTE_SIZE == n_colors)

proc   = Gimp.get_pdb().lookup_procedure('gimp-palette-get-colors')
config = proc.create_config()
config.set_property('palette', pal)
result = proc.run(config)
status = result.index(0)
gimp_assert('gimp-palette-get-colors', status == Gimp.PDBStatusType.SUCCESS)

colors = result.index(1)
# XXX This test is actually what happens right now, but not what should happen.
# See: https://gitlab.gnome.org/GNOME/gimp/-/issues/10885#note_2030308
# And: https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues/492
# If some day this test fails, and in particular if it can return a list of
# GeglColor, then we should remove the test and deprecate
# gimp_value_array_get_color_array() in favor of the generic
# gimp_value_array_index().
gimp_assert('gimp-palette-get-colors', type(colors) == GObject.GBoxed)

colors = result.get_color_array(1)
gimp_assert('gimp_palette_get_colors()',
            type(colors) == list and len(colors) == GIMP_TEST_PALETTE_SIZE and type(colors[0]) == Gegl.Color)

f = colors[3].get_format()
gimp_assert ("Checking fourth palette color's format",
             f == Babl.format (GIMP_TEST_COLOR_FORMAT))

b = colors[3].get_bytes(f)
rgb = b.get_data()
gimp_assert ("Checking fourth palette color's RGB components",
             int(rgb[0]) == GIMP_TEST_COLOR_R_U8 and int(rgb[1]) == GIMP_TEST_COLOR_G_U8 and int(rgb[2]) == GIMP_TEST_COLOR_B_U8)

Messung
CHZG
829910093

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1104845
#Domains=499265