Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Gimp/libgimp/   (Gimp Bildeditor Version 3.2.0©)  Datei vom 14.2.2026 mit Größe 3 kB image not shown  

Quelle  gimppalette.c   Sprache: C

 

/* LIBGIMP - The GIMP Library
 * Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball
 *
 * gimppalette.c
 * Copyright (C) 2023 Jehan
 *
 * This library is free software: you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library.  If not, see
 * <https://www.gnu.org/licenses/>.
 */


#include "config.h"

#include "gimp.h"

#include "gimppalette.h"

struct _GimpPalette
{
  GimpResource parent_instance;
};

G_DEFINE_TYPE (GimpPalette, gimp_palette, GIMP_TYPE_RESOURCE);


static void  gimp_palette_class_init (GimpPaletteClass *klass)
{
}

static void  gimp_palette_init (GimpPalette *palette)
{
}

/**
 * gimp_palette_get_colormap:
 * @palette: The palette.
 * @format: The desired color format.
 * @num_colors: (out) (nullable): The number of colors in the palette.
 * @num_bytes: (out) (nullable): The byte-size of the returned value.
 *
 * This procedure returns a palette's colormap as an array of bytes with
 * all colors converted to a given Babl @format.
 *
 * The byte-size of the returned colormap depends on the number of
 * colors and on the bytes-per-pixel size of @format. E.g. that the
 * following equality is ensured:
 *
 * ```C
 * num_bytes == num_colors * babl_format_get_bytes_per_pixel (format)
 * ```
 *
 * Therefore @num_colors and @num_bytes are kinda redundant since both
 * indicate the size of the return value in a different way. You may
 * both set them to %NULL but not at the same time.
 *
 * Returns: (transfer full) (array length=num_bytes): The palette's colormap.
 *
 * Since: 3.0
 **/

guint8 *
gimp_palette_get_colormap (GimpPalette *palette,
                           const Babl  *format,
                           gint        *num_colors,
                           gsize       *num_bytes)
{
  GBytes *bytes;
  guint8 *colormap;
  gint    n_colors;
  gsize   n_bytes;

  g_return_val_if_fail (GIMP_IS_PALETTE (palette), NULL);
  g_return_val_if_fail (format != NULL, NULL);
  g_return_val_if_fail (num_colors != NULL || num_bytes != NULL, NULL);

  bytes    = _gimp_palette_get_bytes (palette, format, &n_colors);
  colormap = g_bytes_unref_to_data (bytes, &n_bytes);

  if (num_colors)
    *num_colors = n_colors;
  if (num_bytes)
    *num_bytes = n_bytes;

  return colormap;
}

/**
 * gimp_palette_set_colormap:
 * @palette: The palette.
 * @format: The desired color format.
 * @colormap (array length=num_bytes): The new colormap values.
 * @num_bytes: The byte-size of @colormap.
 *
 * This procedure sets the entries in the specified palette in one go,
 * though they must all be in the same @format.
 *
 * The number of entries depens on the @num_bytes size of @colormap and
 * the bytes-per-pixel size of @format.
 * The procedure will fail if @num_bytes is not an exact multiple of the
 * number of bytes per pixel of @format.
 *
 * Returns: %TRUE on success.
 *
 * Since: 3.0
 **/

gboolean
gimp_palette_set_colormap (GimpPalette *palette,
                           const Babl  *format,
                           guint8      *colormap,
                           gsize        num_bytes)
{
  GBytes   *bytes;
  gboolean  success;

  g_return_val_if_fail (GIMP_IS_PALETTE (palette), FALSE);
  g_return_val_if_fail (format != NULL, FALSE);
  g_return_val_if_fail (colormap != NULL, FALSE);
  g_return_val_if_fail (num_bytes % babl_format_get_bytes_per_pixel (format) == 0, FALSE);

  bytes   = g_bytes_new_static (colormap, num_bytes);
  success = _gimp_palette_set_bytes (palette, format, bytes);
  g_bytes_unref (bytes);

  return success;
}

Messung
CHZG
899410094

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet am  2026-11-04) ¤

*© 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.