Eine aufbereitete Darstellung der Quelle

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

Benutzer

Quelle  brush.pdb  Sprache: unbekannt

 
Spracherkennung für: .pdb vermutete Sprache: Masm {Masm[44] ABAP[38] Fortran[36]} [Methode: maximale Elemente, drei Dimensionen]

# GIMP - The GNU Image Manipulation Program
# Copyright (C) 1995 Spencer Kimball and Peter Mattis

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.

# This program 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 General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

# "Perlized" from C source by Manish Singh <yosh@gimp.org>

# The invoke code is compiled on the app side.
# The invoke code must assign to each result var

$brush_arg_spec = { name => 'brush', type => 'brush', non_empty => 1,
  desc => 'The brush' };

sub brush_new {
    $blurb = "Create a new generated brush having default parameters.";
    $help  = "Creates a new, parametric brush.";

    &mitch_pdb_misc('2004', '2.2');

    @inargs = (
      { name => 'name', type => 'string', non_empty => 1,
        desc => 'The requested name of the new brush' }
    );

    @outargs = (
      ${brush_arg_spec}
    );

    %invoke = (
        code => <<'CODE'
{
  brush = (GimpBrush *) gimp_data_factory_data_new (gimp->brush_factory,
                                                    context, name);

  if (! brush)
    success = FALSE;
}
CODE
    );
}

sub brush_get_by_name {
    $blurb = "Returns the brush with the given name.";
    $help = <<'HELP';
Return an existing brush having the given name.
Returns %NULL when no brush exists of that name.
HELP

    &mitch_pdb_misc('2023', '3.0');

    @inargs = (
      { name => 'name', type => 'string', non_empty => 1,
        desc => 'The name of the brush' }
    );

    @outargs = (
      { name => 'brush',
        type => 'brush',
        desc => 'The brush',
        none_ok => 1 }
    );

    %invoke = (
        code => <<'CODE'
{
  brush = GIMP_BRUSH (gimp_pdb_get_resource (gimp, GIMP_TYPE_BRUSH, name,
                                             GIMP_PDB_DATA_ACCESS_READ, error));
  /* Ignore "not found" error, just return NULL. */
  g_clear_error (error);
}
CODE
    );
}

sub brush_is_generated {
    $blurb = "Whether the brush is generated (parametric versus raster).";
    $help  = "Returns TRUE when brush is parametric.";

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec}
    );

    @outargs = (
      { name => 'generated', type => 'boolean',
        desc => 'TRUE if the brush is generated' }
    );

    %invoke = (
        code => <<'CODE'
{
  generated = GIMP_IS_BRUSH_GENERATED (brush);
}
CODE
    );
}

sub brush_get_info {
    $blurb = "Gets information about the brush.";

    $help = <<'HELP';
Gets information about the brush:
brush extents (width and height), color depth and mask depth (bpp).
The color bpp is zero when the brush is parametric versus raster.
HELP

    &mitch_pdb_misc('2004', '2.2');

    @inargs = (
      ${brush_arg_spec}
    );

    @outargs = (
      { name => 'width', type => 'int32', void_ret => 1,
        desc => 'The brush width' },
      { name => 'height', type => 'int32',
        desc => 'The brush height' },
      { name => 'mask_bpp', type => 'int32',
        desc => 'The brush mask bpp' },
      { name => 'color_bpp', type => 'int32',
        desc => 'The brush color bpp' }
    );

    %invoke = (
 code => <<'CODE'
{
  GimpTempBuf *mask   = gimp_brush_get_mask (brush);
  GimpTempBuf *pixmap = gimp_brush_get_pixmap (brush);
  const Babl  *format = NULL;

  if (brush)
    format = gimp_babl_compat_u8_mask_format (gimp_temp_buf_get_format (mask));

  width    = gimp_brush_get_width  (brush);
  height   = gimp_brush_get_height (brush);

  if (format)
    mask_bpp = babl_format_get_bytes_per_pixel (format);
  else
    mask_bpp = 0;

  if (pixmap && format)
    {
      format = gimp_babl_compat_u8_format (gimp_temp_buf_get_format (pixmap));

      color_bpp = babl_format_get_bytes_per_pixel (format);
    }
}
CODE
    );
}

sub brush_get_pixels {
    $blurb = 'Gets information about the brush.';

    $help = <<'HELP';
Gets information about the brush:
the brush extents (width and height) and its pixels data.
The color bpp is zero and pixels empty when the brush is parametric versus raster.
HELP

    &mitch_pdb_misc('2004', '2.2');
    $lib_private = 1;

    @inargs = (
      ${brush_arg_spec}
    );

    @outargs = (
      { name => 'width', type => 'int32', void_ret => 1,
        desc => 'The brush width' },
      { name => 'height', type => 'int32',
        desc => 'The brush height' },
      { name => 'mask_bpp', type => 'int32',
        desc => 'The brush mask bpp' },
      { name => 'mask_bytes', type => 'bytes',
        desc => 'The brush mask data' },
      { name => 'color_bpp', type => 'int32',
        desc => 'The brush color bpp' },
      { name => 'color_bytes', type => 'bytes',
        desc => 'The brush color data' }
    );

    %invoke = (
 code => <<'CODE'
{
  GimpTempBuf *mask   = gimp_brush_get_mask (brush);
  GimpTempBuf *pixmap = gimp_brush_get_pixmap (brush);
  const Babl  *format;
  gpointer     data;
  gsize        num_mask_bytes;
  gsize        num_color_bytes;

  format = gimp_babl_compat_u8_mask_format (
    gimp_temp_buf_get_format (mask));
  data   = gimp_temp_buf_lock (mask, format, GEGL_ACCESS_READ);

  width          = gimp_temp_buf_get_width  (mask);
  height         = gimp_temp_buf_get_height (mask);
  mask_bpp       = babl_format_get_bytes_per_pixel (format);
  num_mask_bytes = (gsize) gimp_temp_buf_get_height (mask) *
                   gimp_temp_buf_get_width  (mask) * mask_bpp;
  mask_bytes     = g_bytes_new (data, num_mask_bytes);

  gimp_temp_buf_unlock (mask, data);

  if (pixmap)
    {
      format = gimp_babl_compat_u8_format (
        gimp_temp_buf_get_format (pixmap));
      data   = gimp_temp_buf_lock (pixmap, format, GEGL_ACCESS_READ);

      color_bpp       = babl_format_get_bytes_per_pixel (format);
      num_color_bytes = (gsize) gimp_temp_buf_get_height (pixmap) *
                        gimp_temp_buf_get_width  (pixmap) *
                        color_bpp;
      color_bytes     = g_bytes_new (data, num_color_bytes);

      gimp_temp_buf_unlock (pixmap, data);
    }
}
CODE
    );
}

sub brush_get_spacing {
    $blurb = 'Gets the brush spacing, the stamping frequency.';

    $help = <<'HELP';
Returns the spacing setting for the brush.
Spacing is an integer between 0 and 1000 which represents a
percentage of the maximum of the width and height of the mask.
Both parametric and raster brushes have a spacing.
HELP

    &mitch_pdb_misc('2004', '2.2');

    @inargs = (
      ${brush_arg_spec}
    );

    # Always just a value, not "void_ret => 1,"
    @outargs = (
      { name => 'spacing', type => '0 <= int32 <= 1000',
        desc => 'The brush spacing' }
    );

    %invoke = (
 code => <<'CODE'
{
  spacing = gimp_brush_get_spacing (brush);
}
CODE
    );
}

sub brush_get_shape {
    $blurb = 'Gets the shape of a generated brush.';

    $help = <<'HELP';
Gets the shape of a generated brush.
Returns an error when called for a non-parametric brush.
The choices for shape are Circle (GIMP_BRUSH_GENERATED_CIRCLE),
Square (GIMP_BRUSH_GENERATED_SQUARE), and Diamond
(GIMP_BRUSH_GENERATED_DIAMOND).  Other shapes might be
added in the future.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec}
    );

    @outargs = (
      { name => 'shape', type => 'enum GimpBrushGeneratedShape',
        void_ret => 1,
        desc => 'The brush shape' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush))
    shape = GIMP_BRUSH_GENERATED (brush)->shape;
  else
    success = FALSE;
}
CODE
    );
}

sub brush_get_radius {
    $blurb = 'Gets the radius of a generated brush.';

    $help = <<'HELP';
Gets the radius of a generated brush.
Returns an error when called for a non-parametric brush.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec}
    );

    @outargs = (
      { name => 'radius', type => 'double',
        void_ret => 1,
        desc => 'The radius of the brush in pixels' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush))
    radius = GIMP_BRUSH_GENERATED (brush)->radius;
  else
    success = FALSE;
}
CODE
    );
}

sub brush_get_spikes {
    $blurb = 'Gets the number of spikes for a generated brush.';

    $help = <<'HELP';
Gets the number of spikes for a generated brush.
Returns an error when called for a non-parametric brush.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec}
    );

    @outargs = (
      { name => 'spikes', type => 'int32',
        void_ret => 1,
        desc => 'The number of spikes on the brush.' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush))
    spikes = GIMP_BRUSH_GENERATED (brush)->spikes;
  else
    success = FALSE;
}
CODE
    );
}

sub brush_get_hardness {
    $blurb = 'Gets the hardness of a generated brush.';

    $help = <<'HELP';
Gets the hardness of a generated brush.
The hardness of a brush is the amount its intensity fades at the
outside edge, as a double between 0.0 and 1.0.
Returns an error when called for a non-parametric brush.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec}
    );

    @outargs = (
      { name => 'hardness', type => 'double',
        void_ret => 1,
        desc => 'The hardness of the brush.' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush))
    hardness = GIMP_BRUSH_GENERATED (brush)->hardness;
  else
    success = FALSE;
}
CODE
    );
}

sub brush_get_aspect_ratio {
    $blurb = 'Gets the aspect ratio of a generated brush.';

    $help = <<'HELP';
Gets the aspect ratio of a generated brush.
Returns an error when called for a non-parametric brush.
The aspect ratio is a double between 0.0 and 1000.0.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec}
    );

    @outargs = (
      { name => 'aspect_ratio', type => 'double',
        void_ret => 1,
        desc => 'The aspect ratio of the brush.' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush))
    aspect_ratio = GIMP_BRUSH_GENERATED (brush)->aspect_ratio;
  else
    success = FALSE;
}
CODE
    );
}

sub brush_get_angle {
    $blurb = 'Gets the rotation angle of a generated brush.';

    $help = <<'HELP';
Gets the angle of rotation for a generated brush.
Returns an error when called for a non-parametric brush.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec}
    );

    @outargs = (
      { name => 'angle', type => 'double',
        void_ret => 1,
        desc => 'The rotation angle of the brush in degree.' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush))
    angle = GIMP_BRUSH_GENERATED (brush)->angle;
  else
    success = FALSE;
}
CODE
    );
}

sub brush_set_spacing {
    $blurb = 'Sets the brush spacing.';

    $help = <<'HELP';
Set the spacing for the brush.
The spacing must be an integer between 0 and 1000.
Both parametric and raster brushes have a spacing.
Returns an error when the brush is not editable.
Create a new or copied brush or to get an editable brush.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec},
      { name => 'spacing', type => '0 <= int32 <= 1000',
        desc => 'The brush spacing' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (gimp_data_is_writable (GIMP_DATA (brush)))
    gimp_brush_set_spacing (brush, spacing);
  else
    success = FALSE;
}
CODE
    );
}

sub brush_set_shape {
    $blurb = 'Sets the shape of a generated brush.';

    $help = <<'HELP';
Sets the shape of a generated brush.
Returns an error when brush is non-parametric or not editable.
The choices for shape are Circle (GIMP_BRUSH_GENERATED_CIRCLE),
Square (GIMP_BRUSH_GENERATED_SQUARE), and Diamond
(GIMP_BRUSH_GENERATED_DIAMOND).
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec},
      { name => 'shape_in', type => 'enum GimpBrushGeneratedShape',
        desc => 'The brush shape' }
    );

    @outargs = (
      { name => 'shape_out', type => 'enum GimpBrushGeneratedShape',
        void_ret => 1,
        desc => 'The brush shape actually assigned' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush) &&
      gimp_data_is_writable (GIMP_DATA (brush)))
    {
      gimp_brush_generated_set_shape (GIMP_BRUSH_GENERATED (brush),
                                      shape_in);
      shape_out = GIMP_BRUSH_GENERATED (brush)->shape;
    }
  else
    {
      success = FALSE;
    }
}
CODE
    );
}

sub brush_set_radius {
    $blurb = 'Sets the radius of a generated brush.';

    $help = <<'HELP';
Sets the radius for a generated brush.
Clamps radius to [0.1, 4000.0].
Returns the clamped value.
Returns an error when brush is non-parametric or not editable.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec},
      { name => 'radius_in', type => 'double',
        desc => 'The desired brush radius in pixel' }
    );

    @outargs = (
      { name => 'radius_out', type => 'double',
        void_ret => 1,
        desc => 'The brush radius actually assigned' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush) &&
      gimp_data_is_writable (GIMP_DATA (brush)))
    {
      gimp_brush_generated_set_radius (GIMP_BRUSH_GENERATED (brush),
                                       radius_in);
      radius_out = GIMP_BRUSH_GENERATED (brush)->radius;
    }
  else
    {
      success = FALSE;
    }
}
CODE
    );
}

sub brush_set_spikes {
    $blurb = 'Sets the number of spikes for a generated brush.';

    $help = <<'HELP';
Sets the number of spikes for a generated brush.
Clamps spikes to [2,20].
Returns the clamped value.
Returns an error when brush is non-parametric or not editable.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec},
      { name => 'spikes_in', type => 'int32',
        desc => 'The desired number of spikes' }
    );

    @outargs = (
      { name => 'spikes_out', type => 'int32',
        void_ret => 1,
        desc => 'The number of spikes actually assigned' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush) &&
      gimp_data_is_writable (GIMP_DATA (brush)))
    {
      gimp_brush_generated_set_spikes (GIMP_BRUSH_GENERATED (brush),
                                       spikes_in);
      spikes_out = GIMP_BRUSH_GENERATED (brush)->spikes;
    }
  else
    {
      success = FALSE;
    }
}
CODE
    );
}

sub brush_set_hardness {
    $blurb = 'Sets the hardness of a generated brush.';

    $help = <<'HELP';
Sets the hardness for a generated brush.
Clamps hardness to [0.0, 1.0].
Returns the clamped value.
Returns an error when brush is non-parametric or not editable.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec},
      { name => 'hardness_in', type => 'double',
        desc => 'The desired brush hardness' }
    );

    @outargs = (
      { name => 'hardness_out', type => 'double',
        void_ret => 1,
        desc => 'The brush hardness actually assigned' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush) &&
      gimp_data_is_writable (GIMP_DATA (brush)))
    {
      gimp_brush_generated_set_hardness (GIMP_BRUSH_GENERATED (brush),
                                         hardness_in);
      hardness_out = GIMP_BRUSH_GENERATED (brush)->hardness;
    }
  else
    {
      success = FALSE;
    }
}
CODE
    );
}

sub brush_set_aspect_ratio {
    $blurb = 'Sets the aspect ratio of a generated brush.';

    $help = <<'HELP';
Sets the aspect ratio for a generated brush.
Clamps aspect ratio to [0.0, 1000.0].
Returns the clamped value.
Returns an error when brush is non-parametric or not editable.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec},
      { name => 'aspect_ratio_in', type => 'double',
        desc => 'The desired brush aspect ratio' }
    );

    @outargs = (
      { name => 'aspect_ratio_out', type => 'double',
        void_ret => 1,
        desc => 'The brush aspect ratio actually assigned' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush) &&
      gimp_data_is_writable (GIMP_DATA (brush)))
    {
      gimp_brush_generated_set_aspect_ratio (GIMP_BRUSH_GENERATED (brush),
                                             aspect_ratio_in);
      aspect_ratio_out = GIMP_BRUSH_GENERATED (brush)->aspect_ratio;
    }
  else
    {
      success = FALSE;
    }
}
CODE
    );
}

sub brush_set_angle {
    $blurb = 'Sets the rotation angle of a generated brush.';

    $help = <<'HELP';
Sets the rotation angle for a generated brush.
Sets the angle modulo 180, in the range [-180.0, 180.0].
Returns the clamped value.
Returns an error when brush is non-parametric or not editable.
HELP

    &bill_pdb_misc('2004', '2.4');

    @inargs = (
      ${brush_arg_spec},
      { name => 'angle_in', type => 'double',
        desc => 'The desired brush rotation angle in degrees' }
        );

    @outargs = (
      { name => 'angle_out', type => 'double',
        void_ret => 1,
        desc => 'The brush rotation angle actually assigned' }
    );

    %invoke = (
 code => <<'CODE'
{
  if (GIMP_IS_BRUSH_GENERATED (brush) &&
      gimp_data_is_writable (GIMP_DATA (brush)))
    {
      gimp_brush_generated_set_angle (GIMP_BRUSH_GENERATED (brush),
                                      angle_in);
      angle_out = GIMP_BRUSH_GENERATED (brush)->angle;
    }
  else
    {
      success = FALSE;
    }
}
CODE
    );
}


@headers = qw(<string.h>
              "gegl/gimp-babl-compat.h"
              "core/gimp.h"
              "core/gimpbrush.h"
              "core/gimpbrushgenerated.h"
              "core/gimpcontext.h"
              "core/gimpdatafactory.h"
              "core/gimptempbuf.h"
              "gimppdb-utils.h");

@procs = qw(brush_new
            brush_get_by_name
            brush_is_generated
            brush_get_info
            brush_get_pixels
            brush_get_spacing      brush_set_spacing
            brush_get_shape        brush_set_shape
            brush_get_radius       brush_set_radius
            brush_get_spikes       brush_set_spikes
            brush_get_hardness     brush_set_hardness
            brush_get_aspect_ratio brush_set_aspect_ratio
            brush_get_angle        brush_set_angle);

%exports = (app => [@procs], lib => [@procs]);

$desc = 'Brush';
$doc_title = 'gimpbrush';
$doc_short_desc = 'Installable object used by painting and stroking tools.';
$doc_long_desc = 'Installable object used by painting and stroking tools.';

1;

[Dauer der Verarbeitung: 0.6 Sekunden, vorverarbeitet 2026-10-27]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1104848
#Domains=416967