/* This file is part of GEGL
*
* GEGL 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.
*
* GEGL 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 GEGL; if not, see .
*
* Copyright 2003 Calvin Williamson
* 2006 Øyvind Kolås
*
* Original contents copied from gimp/app/core/gimpparamspecs.h
* (c) 1995-2006 Spencer Kimball, Peter Mattis and others.
*/
#include
#ifndef __GEGL_PARAM_SPECS_H__
#define __GEGL_PARAM_SPECS_H__
G_BEGIN_DECLS
/*
* Keep in sync with libgeglconfig/geglconfig-params.h
*/
#define GEGL_PARAM_NO_VALIDATE (1 << (6 + G_PARAM_USER_SHIFT))
typedef struct _GeglParamSpecString GeglParamSpecString;
typedef struct _GeglParamSpecDouble GeglParamSpecDouble;
typedef struct _GeglParamSpecInt GeglParamSpecInt;
typedef struct _GeglParamSpecSeed GeglParamSpecSeed;
typedef struct _GeglParamSpecFormat GeglParamSpecFormat;
/*
* GEGL_TYPE_PARAM_DOUBLE
*/
#define GEGL_TYPE_PARAM_DOUBLE (gegl_param_double_get_type ())
#define GEGL_PARAM_SPEC_DOUBLE(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GEGL_TYPE_PARAM_DOUBLE, GeglParamSpecDouble))
#define GEGL_IS_PARAM_SPEC_DOUBLE(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GEGL_TYPE_PARAM_DOUBLE))
struct _GeglParamSpecDouble
{
GParamSpecDouble parent_instance;
gdouble ui_minimum; /* reasonable range to present to user */
gdouble ui_maximum;
gdouble ui_gamma; /* a desired non-linear mapping or 1.0, useful
when the control the user needs is not a
linear mapping, like controlling brush-size
or gaussian blur radius - where more
detailed control of small values is needed
*/
gdouble ui_step_small;
gdouble ui_step_big;
gint ui_digits;
};
GType gegl_param_double_get_type (void) G_GNUC_CONST;
/**
* gegl_param_spec_double:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
* @minimum: minimum value for the property specified
* @maximum: maximum value for the property specified
* @default_value: default value for the property specified
* @ui_minimum: minimum value a user should be allowed to input
* @ui_maximum: maximum value a user should be allowed to input
* @ui_gamma: the gamma that should be used when adjusting the value
* @flags: flags for the property specified
*
* Creates a new #GeglParamSpecDouble instance.
*
* Return value: (transfer full): a newly created parameter specification
*/
GParamSpec * gegl_param_spec_double (const gchar *name,
const gchar *nick,
const gchar *blurb,
gdouble minimum,
gdouble maximum,
gdouble default_value,
gdouble ui_minimum,
gdouble ui_maximum,
gdouble ui_gamma,
GParamFlags flags);
/* utility function to initialize ui_steps; should be moved to constructor
* when breaking API/ABI */
void gegl_param_spec_double_set_steps (GeglParamSpecDouble *pspec,
gdouble small_step,
gdouble big_step);
void gegl_param_spec_double_set_digits (GeglParamSpecDouble *pspec,
gint digits);
/*
* GEGL_TYPE_PARAM_INT
*/
#define GEGL_TYPE_PARAM_INT (gegl_param_int_get_type ())
#define GEGL_PARAM_SPEC_INT(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GEGL_TYPE_PARAM_INT, GeglParamSpecInt))
#define GEGL_IS_PARAM_SPEC_INT(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GEGL_TYPE_PARAM_INT))
struct _GeglParamSpecInt
{
GParamSpecInt parent_instance;
gint ui_minimum; /* reasonable range to present to user */
gint ui_maximum;
gdouble ui_gamma;
gint ui_step_small;
gint ui_step_big;
};
GType gegl_param_int_get_type (void) G_GNUC_CONST;
/**
* gegl_param_spec_int:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
* @minimum: minimum value for the property specified
* @maximum: maximum value for the property specified
* @default_value: default value for the property specified
* @ui_minimum: minimum value a user should be allowed to input
* @ui_maximum: maximum value a user should be allowed to input
* @ui_gamma: the gamma that should be used when adjusting the value
* @flags: flags for the property specified
*
* Creates a new #GeglParamSpecInt instance.
*
* Return value: (transfer full): a newly created parameter specification
*/
GParamSpec * gegl_param_spec_int (const gchar *name,
const gchar *nick,
const gchar *blurb,
gint minimum,
gint maximum,
gint default_value,
gint ui_minimum,
gint ui_maximum,
gdouble ui_gamma,
GParamFlags flags);
void gegl_param_spec_int_set_steps (GeglParamSpecInt *pspec,
gint small_step,
gint big_step);
/*
* GEGL_TYPE_PARAM_STRING
*/
#define GEGL_TYPE_PARAM_STRING (gegl_param_string_get_type ())
#define GEGL_PARAM_SPEC_STRING(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GEGL_TYPE_PARAM_STRING, GeglParamSpecString))
#define GEGL_IS_PARAM_SPEC_STRING(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GEGL_TYPE_PARAM_STRING))
struct _GeglParamSpecString
{
GParamSpecString parent_instance;
guint no_validate : 1;
guint null_ok : 1;
};
GType gegl_param_string_get_type (void) G_GNUC_CONST;
/**
* gegl_param_spec_string:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
* @no_validate: true if the string should be validated with g_utf8_validate
* @null_ok: true if the string can be NULL
* @default_value: default value for the property specified
* @flags: flags for the property specified
*
* Creates a new #GeglParamSpecString instance.
*
* Return value: (transfer full): a newly created parameter specification
*/
GParamSpec * gegl_param_spec_string (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean no_validate,
gboolean null_ok,
const gchar *default_value,
GParamFlags flags);
/*
* GEGL_TYPE_PARAM_FILEPATH
*/
#define GEGL_TYPE_PARAM_FILE_PATH (gegl_param_file_path_get_type ())
#define GEGL_PARAM_SPEC_FILE_PATH(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GEGL_TYPE_PARAM_FILE_PATH, GeglParamSpecFilePath))
#define GEGL_IS_PARAM_SPEC_FILE_PATH(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GEGL_TYPE_PARAM_FILE_PATH))
typedef struct _GeglParamSpecFilePath GeglParamSpecFilePath;
struct _GeglParamSpecFilePath
{
GParamSpecString parent_instance;
guint no_validate : 1;
guint null_ok : 1;
};
GType gegl_param_file_path_get_type (void) G_GNUC_CONST;
/**
* gegl_param_spec_file_path:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
* @no_validate: true if the string should be validated with g_utf8_validate
* @null_ok: true if the string can be NULL
* @default_value: default value for the property specified
* @flags: flags for the property specified
*
* Creates a new #GeglParamSpecFilePath instance.
*
* Return value: (transfer full): a newly created parameter specification
*/
GParamSpec * gegl_param_spec_file_path (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean no_validate,
gboolean null_ok,
const gchar *default_value,
GParamFlags flags);
/*
* GEGL_TYPE_PARAM_ENUM
*/
#define GEGL_TYPE_PARAM_ENUM (gegl_param_enum_get_type ())
#define GEGL_PARAM_SPEC_ENUM(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GEGL_TYPE_PARAM_ENUM, GeglParamSpecEnum))
#define GEGL_IS_PARAM_SPEC_ENUM(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GEGL_TYPE_PARAM_ENUM))
typedef struct _GeglParamSpecEnum GeglParamSpecEnum;
struct _GeglParamSpecEnum
{
GParamSpecEnum parent_instance;
GSList *excluded_values;
};
GType gegl_param_enum_get_type (void) G_GNUC_CONST;
/**
* gegl_param_spec_enum:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
* @enum_type: the enum type to get valid values from
* @default_value: default value for the property specified
* @flags: flags for the property specified
*
* Creates a new #GeglParamSpecEnum instance.
*
* Return value: (transfer full): a newly created parameter specification
*/
GParamSpec * gegl_param_spec_enum (const gchar *name,
const gchar *nick,
const gchar *blurb,
GType enum_type,
gint default_value,
GParamFlags flags);
void gegl_param_spec_enum_exclude_value (GeglParamSpecEnum *espec,
gint value);
/*
* GEGL_TYPE_PARAM_SEED
*/
#define GEGL_TYPE_PARAM_SEED (gegl_param_seed_get_type ())
#define GEGL_PARAM_SPEC_SEED(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GEGL_TYPE_PARAM_SEED, GeglParamSpecSeed))
#define GEGL_IS_PARAM_SPEC_SEED(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GEGL_TYPE_PARAM_SEED))
struct _GeglParamSpecSeed
{
GParamSpecUInt parent_instance;
guint ui_minimum;
guint ui_maximum;
};
GType gegl_param_seed_get_type (void) G_GNUC_CONST;
/**
* gegl_param_spec_seed:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
* @flags: flags for the property specified
*
* Creates a new #GeglParamSpecSeed instance specifying an integer random seed.
*
* Returns: (transfer full): a newly created parameter specification
*/
GParamSpec * gegl_param_spec_seed (const gchar *name,
const gchar *nick,
const gchar *blurb,
GParamFlags flags);
/*
* GEGL_TYPE_PARAM_FORMAT
*/
#define GEGL_TYPE_PARAM_FORMAT (gegl_param_format_get_type ())
#define GEGL_PARAM_SPEC_FORMAT(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GEGL_TYPE_PARAM_FORMAT, GeglParamSpecFormat))
#define GEGL_IS_PARAM_SPEC_FORMAT(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GEGL_TYPE_PARAM_FORMAT))
struct _GeglParamSpecFormat
{
GParamSpecPointer parent_instance;
};
GType gegl_param_format_get_type (void) G_GNUC_CONST;
/**
* gegl_param_spec_format:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
* @flags: flags for the property specified
*
* Creates a new #GeglParamSpecFormat instance specifying a Babl format.
*
* Returns: (transfer full): a newly created parameter specification
*/
GParamSpec * gegl_param_spec_format (const gchar *name,
const gchar *nick,
const gchar *blurb,
GParamFlags flags);
/*
* GEGL_TYPE_PARAM_URI
*/
#define GEGL_TYPE_PARAM_URI (gegl_param_uri_get_type ())
#define GEGL_PARAM_SPEC_URI(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GEGL_TYPE_PARAM_URI, GeglParamSpecUri))
#define GEGL_IS_PARAM_SPEC_URI(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GEGL_TYPE_PARAM_URI))
typedef struct _GeglParamSpecUri GeglParamSpecUri;
struct _GeglParamSpecUri
{
GParamSpecString parent_instance;
guint no_validate : 1;
guint null_ok : 1;
};
GType gegl_param_uri_get_type (void) G_GNUC_CONST;
/**
* gegl_param_spec_uri:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
* @no_validate: true if the string should be validated with g_utf8_validate
* @null_ok: true if the string can be NULL
* @default_value: default value for the property specified
* @flags: flags for the property specified
*
* Creates a new #GeglParamSpecUri instance.
*
* Return value: (transfer full): a newly created parameter specification
*/
GParamSpec * gegl_param_spec_uri (const gchar *name,
const gchar *nick,
const gchar *blurb,
gboolean no_validate,
gboolean null_ok,
const gchar *default_value,
GParamFlags flags);
G_END_DECLS
#endif /* __GEGL_PARAM_SPECS_H__ */