/* This file is the public GEGL API * * 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 . * * 2000-2008 © Calvin Williamson, Øyvind Kolås. */ #ifndef __GEGL_OPERATIONS_UTIL_H__ #define __GEGL_OPERATIONS_UTIL_H__ #if !defined (__GEGL_H_INSIDE__) #error "This file can not be included directly, use instead." #endif G_BEGIN_DECLS /*** * Available operations: * Gegl provides means to check for available processing operations that * can be used with nodes using #gegl_list_operations and #gegl_has_operation. * For a specified op, you can get a list of properties with * #gegl_operation_list_properties. */ /** * gegl_list_operations: * @n_operations_p: (out caller-allocates): return location for number of operations. * * Return value: (transfer container) (array length=n_operations_p): An * alphabetically sorted array of available operation names. This excludes any * compat-name registered by operations. The list should be freed with g_free * after use. * --- * gchar **operations; * guint n_operations; * gint i; * * operations = gegl_list_operations (&n_operations); * g_print ("Available operations:\n"); * for (i=0; i < n_operations; i++) * { * g_print ("\t%s\n", operations[i]); * } * g_free (operations); */ gchar **gegl_list_operations (guint *n_operations_p); /** * gegl_has_operation: * @operation_type: the name of the operation * * Return value: A boolean telling whether the operation is present or not. This * also returns true for any compat-name registered by operations. */ gboolean gegl_has_operation (const gchar *operation_type); /** * gegl_operation_list_properties: * @operation_type: the name of the operation type we want to query to properties of. * @n_properties_p: (out caller-allocates): return location for number of properties. * * Return value: (transfer container) (array length=n_properties_p): An allocated array of #GParamSpecs describing the properties * of the operation available when a node has operation_type set. The list should be freed with g_free after use. */ GParamSpec** gegl_operation_list_properties (const gchar *operation_type, guint *n_properties_p); /** * gegl_operation_find_property:: * @operation_type: the name of the operation type we want to locate a property on. * @property_name: the name of the property we seek. * * Return value: (transfer none): The paramspec of the matching property - or * NULL if there as no match. */ GParamSpec * gegl_operation_find_property (const gchar *operation_type, const gchar *property_name); /** * gegl_operation_get_property_key: * @operation_type: the name of the operation type we want to query to property keys for. * @property_name: the property to query a key for. * @property_key_name: the property mata data key to query * * Return value: NULL or a string with the meta-data value for the operation * key. */ const gchar * gegl_operation_get_property_key (const gchar *operation_type, const gchar *property_name, const gchar *property_key_name); /** * gegl_operation_list_property_keys: * @operation_type: the name of the operation type we want to query to property keys for. * @property_name: the property to query a key for. * @n_keys: (out caller-allocates): return location for number of property * keys. * * Return value: (transfer container) (array length=n_keys): An allocated NULL terminated array of property-key names. The list should be freed with g_free after use. */ gchar ** gegl_operation_list_property_keys (const gchar *operation_type, const gchar *property_name, guint *n_keys); const gchar *gegl_param_spec_get_property_key (GParamSpec *pspec, const gchar *key_name); void gegl_param_spec_set_property_key (GParamSpec *pspec, const gchar *key_name, const gchar *value); static inline gdouble gegl_coordinate_relative_to_pixel (gdouble relative, gdouble pixel_dim) { return relative * pixel_dim; } static inline gdouble gegl_coordinate_pixel_to_relative (gdouble pixel, gdouble pixel_dim) { return pixel / pixel_dim; } /** * gegl_operation_list_keys: * @operation_type: the name of the operation type we want to query to property keys for. * @n_keys: (out caller-allocates): return location for number of property keys. * * Return value: (transfer container) (array length=n_keys): An allocated NULL * terminated array of operation-key names. The list should be freed with g_free after use. */ gchar ** gegl_operation_list_keys (const gchar *operation_type, guint *n_keys); const gchar * gegl_operation_get_key (const gchar *operation_type, const gchar *key_name); G_END_DECLS #endif /* __GEGL_OPERATIONS_UTIL_H__ */