| VIPS Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | Object Hierarchy | Properties | Signals | ||||
#define VIPS_ARGUMENT_COLLECT_END #define VIPS_ARGUMENT_COLLECT_GET (PSPEC, ARG_CLASS, AP) #define VIPS_ARGUMENT_COLLECT_SET (PSPEC, ARG_CLASS, AP) #define VIPS_ARGUMENT_FOR_ALL (OBJECT, PSPEC, ARG_CLASS, ARG_INSTANCE) #define VIPS_ARGUMENT_FOR_ALL_END #define VIPS_ARGUMENT_OPTIONAL_INPUT #define VIPS_ARGUMENT_OPTIONAL_OUTPUT #define VIPS_ARGUMENT_REQUIRED_INPUT #define VIPS_ARGUMENT_REQUIRED_OUTPUT #define VIPS_ARG_BOOL (CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, VALUE) #define VIPS_ARG_BOXED (CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, TYPE) #define VIPS_ARG_DOUBLE (CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, MIN, MAX, VALUE) #define VIPS_ARG_ENUM (CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, TYPE, VALUE) #define VIPS_ARG_FLAGS (CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, TYPE, VALUE) #define VIPS_ARG_IMAGE (CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET) #define VIPS_ARG_INT (CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, MIN, MAX, VALUE) #define VIPS_ARG_POINTER (CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET) #define VIPS_ARG_STRING (CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, VALUE) #define VIPS_ARG_UINT64 (CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, MIN, MAX, VALUE) #define VIPS_UNREF (X) VipsArgument; VipsArgumentClass; void * (*VipsArgumentClassMapFn) (VipsObjectClass *Param1,GParamSpec *Param2,VipsArgumentClass *Param3,void *a,void *b); enum VipsArgumentFlags; VipsArgumentInstance; void * (*VipsArgumentMapFn) (VipsObject *Param1,GParamSpec *Param2,VipsArgumentClass *Param3,VipsArgumentInstance *Param4,void *a,void *b); typedef VipsArgumentTable; void * (*VipsClassMapFn) (VipsObjectClass *Param1,void *Param2); struct VipsObject; struct VipsObjectClass; void * (*VipsObjectSetArguments) (VipsObject *Param1,void *Param2,void *Param3); void * (*VipsTypeMap2Fn) (GType Param1,void *Param2,void *Param3); void * (*VipsTypeMapFn) (GType Param1,void *Param2); VipsArgumentInstance * vips__argument_get_instance (VipsArgumentClass *Param1,VipsObject *Param2); VipsArgument * vips__argument_table_lookup (VipsArgumentTable *Param1,GParamSpec *Param2); void vips__object_set_member (VipsObject *object,GParamSpec *pspec,GObject **member,GObject *argument); void * vips_argument_class_map (VipsObjectClass *object_class,VipsArgumentClassMapFn fn,void *a,void *b); void * vips_argument_map (VipsObject *object,VipsArgumentMapFn fn,void *a,void *b); VipsObjectClass * vips_class_find (const char *basename,const char *nickname); void * vips_class_map_all (GType base,VipsClassMapFn fn,void *a); int vips_object_build (VipsObject *object); void vips_object_class_install_argument (VipsObjectClass *Param1,GParamSpec *pspec,VipsArgumentFlags flags,int priority,guint offset); void vips_object_dump (VipsObject *object,VipsBuf *buf); int vips_object_get_argument (VipsObject *object,const char *name,GParamSpec **pspec,VipsArgumentClass **argument_class,VipsArgumentInstance **argument_instance); gboolean vips_object_get_argument_assigned (VipsObject *object,const char *name); VipsArgumentFlags vips_object_get_argument_flags (VipsObject *object,const char *name); gboolean vips_object_get_argument_needs_string (VipsObject *object,const char *name); int vips_object_get_argument_priority (VipsObject *object,const char *name); int vips_object_get_argument_to_string (VipsObject *object,const char *name,const char *arg); void vips_object_get_property (GObject *gobject,guint property_id,GValue *value,GParamSpec *pspec); #define vips_object_local (V, G) VipsObject ** vips_object_local_array (VipsObject *parent,int n); void vips_object_local_cb (VipsObject *vobject,GObject *gobject); void * vips_object_map (VipsSListMap2Fn fn,void *a,void *b); VipsObject * vips_object_new (GType type,VipsObjectSetArguments set,void *a,void *b); VipsObject * vips_object_new_from_string (VipsObjectClass *object_class,const char *p); void vips_object_preclose (VipsObject *object); void vips_object_print_all (void); void vips_object_print_dump (VipsObject *object); void vips_object_print_name (VipsObject *object); void vips_object_print_summary (VipsObject *object); void vips_object_print_summary_class (VipsObjectClass *klass); void vips_object_rewind (VipsObject *object); gboolean vips_object_sanity (VipsObject *object); void vips_object_sanity_all (void); int vips_object_set_argument_from_string (VipsObject *object,const char *name,const char *value); void vips_object_set_property (GObject *gobject,guint property_id,const GValue *value,GParamSpec *pspec); int vips_object_set_required (VipsObject *object,const char *value); void vips_object_set_static (VipsObject *object,gboolean static_object); void vips_object_summary (VipsObject *object,VipsBuf *buf); void vips_object_summary_class (VipsObjectClass *klass,VipsBuf *buf); void vips_object_to_string (VipsObject *object,VipsBuf *buf); void vips_object_unref_outputs (VipsObject *object); int vips_type_depth (GType type); GType vips_type_find (const char *basename,const char *nickname); void * vips_type_map (GType base,VipsTypeMap2Fn fn,void *a,void *b); void * vips_type_map_all (GType base,VipsTypeMapFn fn,void *a); gboolean vips_value_is_null (GParamSpec *psoec,const GValue *value);
GFlags +----VipsArgumentFlags
GObject
+----VipsObject
+----VipsOperation
+----VipsFormat
+----VipsImage
+----VipsInterpolate
+----VipsRegion
+----VipsThreadState
#define VIPS_ARG_DOUBLE( CLASS, NAME, PRIORITY, LONG, DESC, \
FLAGS, OFFSET, MIN, MAX, VALUE )
#define VIPS_ARG_ENUM( CLASS, NAME, PRIORITY, LONG, DESC, \
FLAGS, OFFSET, TYPE, VALUE )
#define VIPS_ARG_FLAGS( CLASS, NAME, PRIORITY, LONG, DESC, \
FLAGS, OFFSET, TYPE, VALUE )
#define VIPS_ARG_INT( CLASS, NAME, PRIORITY, LONG, DESC, \
FLAGS, OFFSET, MIN, MAX, VALUE )
#define VIPS_ARG_STRING( CLASS, NAME, PRIORITY, LONG, DESC, FLAGS, OFFSET, \
VALUE )
#define VIPS_ARG_UINT64( CLASS, NAME, PRIORITY, LONG, DESC, \
FLAGS, OFFSET, MIN, MAX, VALUE )
typedef struct {
GParamSpec *pspec; /* pspec for this argument */
/* More stuff, see below */
} VipsArgument;
typedef struct {
VipsArgument parent;
/* The class of the object we are an arg for.
*/
VipsObjectClass *object_class;
VipsArgumentFlags flags;
int priority; /* Order args by this */
guint offset; /* G_STRUCT_OFFSET of member in object */
} VipsArgumentClass;
void * (*VipsArgumentClassMapFn) (VipsObjectClass *Param1,GParamSpec *Param2,VipsArgumentClass *Param3,void *a,void *b);
typedef enum {
VIPS_ARGUMENT_NONE = 0,
VIPS_ARGUMENT_REQUIRED = 1,
VIPS_ARGUMENT_CONSTRUCT = 2,
VIPS_ARGUMENT_SET_ONCE = 4,
VIPS_ARGUMENT_SET_ALWAYS = 8,
VIPS_ARGUMENT_INPUT = 16,
VIPS_ARGUMENT_OUTPUT = 32
} VipsArgumentFlags;
Flags we associate with each object argument.
Have separate input & output flags. Both set is an error; neither set is OK.
Input gobjects are automatically reffed, output gobjects automatically ref us. We also automatically watch for "destroy" and unlink.
VIPS_ARGUMENT_SET_ALWAYS is handy for arguments which are set from C. For
example, VipsImage::width is a property that gives access to the Xsize
member of struct _VipsImage. We default its 'assigned' to TRUE
since the field is always set directly by C.
| no flags | |
| must be set in the constructor | |
| can only be set in the constructor | |
| can only be set once | |
| don't do use-before-set checks | |
| is an input argument (one we depend on) | |
| is an output argument (depends on us) |
typedef struct {
VipsArgument parent;
/* The class we are part of.
*/
VipsArgumentClass *argument_class;
/* The object we are attached to.
*/
VipsObject *object;
/* Has been set.
*/
gboolean assigned;
/* If this is an output argument, keep the id of our "close" handler
* here.
*/
gulong close_id;
} VipsArgumentInstance;
void * (*VipsArgumentMapFn) (VipsObject *Param1,GParamSpec *Param2,VipsArgumentClass *Param3,VipsArgumentInstance *Param4,void *a,void *b);
struct VipsObjectClass {
GObjectClass parent_class;
/* Build the object ... all argument properties have been set,
* now build the thing.
*/
int (*build)( VipsObject *object );
/* Try to print something about the class, handy for help displays.
* Keep to one line.
*/
void (*summary_class)( struct _VipsObjectClass *, VipsBuf * );
/* Try to print a one-line summary for the object, handy for debugging.
*/
void (*summary)( VipsObject *, VipsBuf * );
/* Try to print everything about the object, handy for debugging.
*/
void (*dump)( VipsObject *, VipsBuf * );
/* Sanity-check the object. Print messages and stuff.
* Handy for debugging.
*/
void (*sanity)( VipsObject *, VipsBuf * );
/* Rewind. Save and restore any stuff that needs to survive a
* dispose().
*/
void (*rewind)( VipsObject * );
/* Just before close, everything is still alive.
*/
void (*preclose)( VipsObject * );
/* Close, time to free stuff.
*/
void (*close)( VipsObject * );
/* Post-close, everything is dead, except the VipsObject pointer.
* Useful for eg. deleting the file associated with a temp image.
*/
void (*postclose)( VipsObject * );
/* The CLI interface. Implement these four to get CLI input and output
* for your object.
*/
/* Given a command-line arg (eg. a filename), make an instance of the
* object. Just do the g_object_new(), don't call _build().
*
* Don't call this directly, see vips_object_new_from_string().
*/
VipsObject *(*new_from_string)( const char *string );
/* The inverse of ^^. Given an object, output what ->new_from_string()
* would have been given to make that object.
*/
void (*to_string)( VipsObject *, VipsBuf * );
/* Does this output arg need an arg from the command line? Image
* output, for example, needs a filename to write to.
*/
gboolean output_needs_arg;
/* Write the object to the string. Return 0 for success, or -1 on
* error, setting vips_error(). string is NULL if output_needs_arg()
* was FALSE.
*/
int (*output_to_arg)( VipsObject *object, const char *string );
/* Class nickname, eg. "VipsInterpolateBicubic" has "bicubic" as a
* nickname. Not internationalised.
*/
const char *nickname;
/* Class description. Used for help messages, so internationalised.
*/
const char *description;
/* Table of arguments for this class and any derived classes. Order
* is important, so keep a traverse list too. We can't rely on the
* ordering given by g_object_class_list_properties() since it comes
* from a hash :-(
*/
VipsArgumentTable *argument_table;
GSList *argument_table_traverse;
};
void * (*VipsObjectSetArguments) (VipsObject *Param1,void *Param2,void *Param3);
VipsArgumentInstance * vips__argument_get_instance (VipsArgumentClass *Param1,VipsObject *Param2);
Convenience ... given the VipsArgumentClass, get the VipsArgumentInstance.
VipsArgument * vips__argument_table_lookup (VipsArgumentTable *Param1,GParamSpec *Param2);
void vips__object_set_member (VipsObject *object,GParamSpec *pspec,GObject **member,GObject *argument);
void * vips_argument_class_map (VipsObjectClass *object_class,VipsArgumentClassMapFn fn,void *a,void *b);
And loop over a class. Same as ^^, but with no VipsArgumentInstance.
void * vips_argument_map (VipsObject *object,VipsArgumentMapFn fn,void *a,void *b);
Loop over the vips_arguments to an object. Stop when fn returns non-NULL
and return that value.
|
object whose args should be enumerated |
|
call this function for every argument |
|
client data |
|
client data |
Returns : |
NULL if fn returns NULL for all arguments, otherwise the first
non-NULL value from fn. |
VipsObjectClass * vips_class_find (const char *basename,const char *nickname);
Search below basename, return the first class whose name or nickname matches.
|
name of base class |
|
search for a class with this nickname |
Returns : |
the found class. |
void * vips_class_map_all (GType base,VipsClassMapFn fn,void *a);
Loop over all the subclasses of a base type. Non-abstract classes only.
void vips_object_class_install_argument (VipsObjectClass *Param1,GParamSpec *pspec,VipsArgumentFlags flags,int priority,guint offset);
int vips_object_get_argument (VipsObject *object,const char *name,GParamSpec **pspec,VipsArgumentClass **argument_class,VipsArgumentInstance **argument_instance);
Look up the three things you need to work with a vips argument.
|
the object to fetch the args from |
|
arg to fetch |
|
the pspec for this arg. [transfer none] |
|
the argument_class for this arg. [transfer none] |
|
the argument_instance for this arg. [transfer none] |
Returns : |
0 on success, or -1 on error. |
gboolean vips_object_get_argument_assigned (VipsObject *object,const char *name);
Convenience: has an argument been assigned. Useful for bindings.
|
the object to fetch the args from |
|
arg to fetch |
Returns : |
TRUE if the arguent has been assigned. |
VipsArgumentFlags vips_object_get_argument_flags (VipsObject *object,const char *name);
Convenience: get the flags for an argument. Useful for bindings.
|
the object to fetch the args from |
|
arg to fetch |
Returns : |
The VipsArgmentFlags for this argument. |
gboolean vips_object_get_argument_needs_string (VipsObject *object,const char *name);
int vips_object_get_argument_priority (VipsObject *object,const char *name);
Convenience: get the priority for an argument. Useful for bindings.
|
the object to fetch the args from |
|
arg to fetch |
Returns : |
The priority of this argument. |
int vips_object_get_argument_to_string (VipsObject *object,const char *name,const char *arg);
void vips_object_get_property (GObject *gobject,guint property_id,GValue *value,GParamSpec *pspec);
VipsObject ** vips_object_local_array (VipsObject *parent,int n);
Make an array of NULL VipsObject pointers. When parent closes, every
non-NULL pointer in the array will be unreffed and the arraqy will be
freed.
Handy for creating a
set of temporary images for a function.
Example:
VipsObject **t; t = vips_object_local_array( a, 5 ); if( vips_add( a, b, &t[0], NULL ) || vips_invert( t[0], &t[1], NULL ) || vips_add( t[1], t[0], &t[2], NULL ) || vips_costra( t[2], out, NULL ) ) return( -1 );
See also: vips_object_local().
|
objects unref when this object unrefs |
|
array size |
Returns : |
an array of NULL pointers of length n
|
void * vips_object_map (VipsSListMap2Fn fn,void *a,void *b);
Call a function for all alive objects.
Stop when fn returns non-NULL and return that value.
|
function to call for all objects |
|
client data |
|
client data |
Returns : |
NULL if fn returns NULL for all arguments, otherwise the first
non-NULL value from fn. |
VipsObject * vips_object_new (GType type,VipsObjectSetArguments set,void *a,void *b);
g_object_new() the object, set any arguments with set, call
vips_object_build() and return the complete object.
|
object to create |
|
set arguments with this |
|
client data |
|
client data |
Returns : |
the new object |
VipsObject * vips_object_new_from_string (VipsObjectClass *object_class,const char *p);
int vips_object_set_argument_from_string (VipsObject *object,const char *name,const char *value);
void vips_object_set_property (GObject *gobject,guint property_id,const GValue *value,GParamSpec *pspec);
void vips_object_to_string (VipsObject *object,VipsBuf *buf);
The inverse of vips_object_new_from_string(): turn an object into eg.
"VipsInterpolateSnohalo1(blur=.333333)".
|
object to stringify |
|
write string here |
void * vips_type_map (GType base,VipsTypeMap2Fn fn,void *a,void *b);
Map over a type's children. Stop when fn returns non-NULL
and return that value.
|
base type |
|
call this function for every type |
|
client data |
|
client data |
Returns : |
NULL if fn returns NULL for all arguments, otherwise the first
non-NULL value from fn. |
void * vips_type_map_all (GType base,VipsTypeMapFn fn,void *a);
Map over a type's children, direct and indirect. Stop when fn returns
non-NULL and return that value.
|
base type |
|
call this function for every type |
|
client data |
Returns : |
NULL if fn returns NULL for all arguments, otherwise the first
non-NULL value from fn. |