add some more C++ docs
This commit is contained in:
parent
b42f72cd56
commit
3fcaf1ea06
@ -49,6 +49,10 @@ VIPS_CPLUSPLUS_API std::vector<double> to_vector( int n, double array[] );
|
|||||||
VIPS_CPLUSPLUS_API std::vector<double> negate( std::vector<double> value );
|
VIPS_CPLUSPLUS_API std::vector<double> negate( std::vector<double> value );
|
||||||
VIPS_CPLUSPLUS_API std::vector<double> invert( std::vector<double> value );
|
VIPS_CPLUSPLUS_API std::vector<double> invert( std::vector<double> value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether or not VObject should take over the reference that you pass in. See
|
||||||
|
* VObject().
|
||||||
|
*/
|
||||||
enum VSteal {
|
enum VSteal {
|
||||||
NOSTEAL = 0,
|
NOSTEAL = 0,
|
||||||
STEAL = 1
|
STEAL = 1
|
||||||
@ -57,6 +61,8 @@ enum VSteal {
|
|||||||
/**
|
/**
|
||||||
* A smart VipsObject pointer. It calls g_object_ref()/_unref() for you
|
* A smart VipsObject pointer. It calls g_object_ref()/_unref() for you
|
||||||
* automatically.
|
* automatically.
|
||||||
|
*
|
||||||
|
* VObjects can be null (have no value set). See is_null().
|
||||||
*/
|
*/
|
||||||
class VObject
|
class VObject
|
||||||
{
|
{
|
||||||
@ -65,6 +71,12 @@ private:
|
|||||||
VipsObject *vobject;
|
VipsObject *vobject;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* Wrap a VObject around the underlying VipsObject pointer.
|
||||||
|
*
|
||||||
|
* If steal is STEAL, then the new VObject takes over the reference
|
||||||
|
* that you pass in.
|
||||||
|
*/
|
||||||
VObject( VipsObject *new_vobject, VSteal steal = STEAL ) :
|
VObject( VipsObject *new_vobject, VSteal steal = STEAL ) :
|
||||||
vobject( new_vobject )
|
vobject( new_vobject )
|
||||||
{
|
{
|
||||||
@ -95,7 +107,6 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy constructor
|
|
||||||
VObject( const VObject &a ) :
|
VObject( const VObject &a ) :
|
||||||
vobject( a.vobject )
|
vobject( a.vobject )
|
||||||
{
|
{
|
||||||
@ -152,6 +163,11 @@ public:
|
|||||||
g_object_unref( vobject );
|
g_object_unref( vobject );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the underlying VipsObject pointer. This does not make a new
|
||||||
|
* reference -- you'll need to g_object_ref() the result if you want
|
||||||
|
* to keep it.
|
||||||
|
*/
|
||||||
VipsObject *get_object() const
|
VipsObject *get_object() const
|
||||||
{
|
{
|
||||||
g_assert( !vobject ||
|
g_assert( !vobject ||
|
||||||
@ -160,6 +176,9 @@ public:
|
|||||||
return( vobject );
|
return( vobject );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TRUE if this is a null VObject.
|
||||||
|
*/
|
||||||
bool is_null() const
|
bool is_null() const
|
||||||
{
|
{
|
||||||
return vobject == 0;
|
return vobject == 0;
|
||||||
@ -173,8 +192,28 @@ class VIPS_CPLUSPLUS_API VSource;
|
|||||||
class VIPS_CPLUSPLUS_API VTarget;
|
class VIPS_CPLUSPLUS_API VTarget;
|
||||||
class VIPS_CPLUSPLUS_API VOption;
|
class VIPS_CPLUSPLUS_API VOption;
|
||||||
|
|
||||||
class VOption
|
/**
|
||||||
{
|
* A list of name-value pairs. Pass these to libvips operations to set
|
||||||
|
* options. For example:
|
||||||
|
*
|
||||||
|
* VImage out = in.embed( 10, 10, 1000, 1000, VImage::option()
|
||||||
|
* ->set( "extend", "background" )
|
||||||
|
* ->set( "background", 128 ) );
|
||||||
|
*
|
||||||
|
* The `set` member functions will take copies (or hold references to)
|
||||||
|
* compound objects, so you can free them immediately afterwards if necessary.
|
||||||
|
*
|
||||||
|
* You can get values back from operations by using the * form of the set
|
||||||
|
* member functions. For example:
|
||||||
|
*
|
||||||
|
* VImage in = VImage::new_from_file( argv[1] );
|
||||||
|
* int x, y;
|
||||||
|
* double value = in.max( VImage::option()
|
||||||
|
* set( "x", &x )
|
||||||
|
* set( "y", &y ) );
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
class VOption {
|
||||||
private:
|
private:
|
||||||
struct Pair {
|
struct Pair {
|
||||||
const char *name;
|
const char *name;
|
||||||
@ -218,99 +257,243 @@ public:
|
|||||||
|
|
||||||
virtual ~VOption();
|
virtual ~VOption();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an input boolean option.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, bool value );
|
VOption *set( const char *name, bool value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an input int option. This is used for enums as well, or you can
|
||||||
|
* use the string version.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, int value );
|
VOption *set( const char *name, int value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an input unsigned 64-bit integer option.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, guint64 value );
|
VOption *set( const char *name, guint64 value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an input double option.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, double value );
|
VOption *set( const char *name, double value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an input string option.
|
||||||
|
*
|
||||||
|
* A copy is taken of the object.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, const char *value );
|
VOption *set( const char *name, const char *value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a libvips object as an option. These can be images, sources,
|
||||||
|
* targets, etc.
|
||||||
|
*
|
||||||
|
* A copy is taken of the object.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, const VObject value );
|
VOption *set( const char *name, const VObject value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an array of integers as an input option.
|
||||||
|
*
|
||||||
|
* A copy is taken of the object.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, std::vector<int> value );
|
VOption *set( const char *name, std::vector<int> value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an array of doubles as an input option.
|
||||||
|
*
|
||||||
|
* A copy is taken of the object.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, std::vector<double> value );
|
VOption *set( const char *name, std::vector<double> value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an array of images as an input option.
|
||||||
|
*
|
||||||
|
* A copy is taken of the object.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, std::vector<VImage> value );
|
VOption *set( const char *name, std::vector<VImage> value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a binary object an input option. Use vips_blob_new() to make
|
||||||
|
* blobs.
|
||||||
|
*
|
||||||
|
* A copy is taken of the object.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, VipsBlob *value );
|
VOption *set( const char *name, VipsBlob *value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an option which will return a bool value.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, bool *value );
|
VOption *set( const char *name, bool *value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an option which will return an integer value.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, int *value );
|
VOption *set( const char *name, int *value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an option which will return a double value.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, double *value );
|
VOption *set( const char *name, double *value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an option which will return a reference to an image.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, VImage *value );
|
VOption *set( const char *name, VImage *value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an option which will return an array of doubles.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, std::vector<double> *value );
|
VOption *set( const char *name, std::vector<double> *value );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an option which will return a binary object, such as an ICC
|
||||||
|
* profile.
|
||||||
|
*/
|
||||||
VOption *set( const char *name, VipsBlob **blob );
|
VOption *set( const char *name, VipsBlob **blob );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Walk the set of options, setting options on the operation. This is
|
||||||
|
* used internally by VImage::call().
|
||||||
|
*/
|
||||||
void set_operation( VipsOperation *operation );
|
void set_operation( VipsOperation *operation );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Walk the set of options, fetching any output values. This is used
|
||||||
|
* internally by VImage::call().
|
||||||
|
*/
|
||||||
void get_operation( VipsOperation *operation );
|
void get_operation( VipsOperation *operation );
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An image object.
|
||||||
|
*
|
||||||
|
* Image processing operations on images are member functions of VImage. For
|
||||||
|
* example:
|
||||||
|
*
|
||||||
|
* VImage in = VImage::new_from_file( argv[1], VImage::option()
|
||||||
|
* ->set( "access", "sequential" ) );
|
||||||
|
* VImage out = in.embed( 10, 10, 1000, 1000, VImage::option()
|
||||||
|
* ->set( "extend", "copy" ) );
|
||||||
|
* out.write_to_file( argv[2] );
|
||||||
|
*
|
||||||
|
* VImage objects are smart pointers over the underlying VipsImage objects.
|
||||||
|
* They manage the complications of GLib's ref and unref system for you.
|
||||||
|
*/
|
||||||
class VImage : public VObject
|
class VImage : public VObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
using VObject::is_null;
|
using VObject::is_null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrap a VImage around an underlying VipsImage object.
|
||||||
|
*
|
||||||
|
* If steal is STEAL, then the VImage will take ownership of the
|
||||||
|
* reference to the VipsImage.
|
||||||
|
*/
|
||||||
VImage( VipsImage *image, VSteal steal = STEAL ) :
|
VImage( VipsImage *image, VSteal steal = STEAL ) :
|
||||||
VObject( (VipsObject *) image, steal )
|
VObject( (VipsObject *) image, steal )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// an empty (NULL) VImage, eg. "VImage a;"
|
/**
|
||||||
|
* An empty (NULL) VImage, eg. "VImage a;"
|
||||||
|
*/
|
||||||
VImage() :
|
VImage() :
|
||||||
VObject( 0 )
|
VObject( 0 )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the underlying VipsImage reference that this VImage holds.
|
||||||
|
* This does not make a new reference -- you'll need to g_object_ref()
|
||||||
|
* the pointer if you need it to last.
|
||||||
|
*/
|
||||||
VipsImage *
|
VipsImage *
|
||||||
get_image() const
|
get_image() const
|
||||||
{
|
{
|
||||||
return( (VipsImage *) VObject::get_object() );
|
return( (VipsImage *) VObject::get_object() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the width of the image in pixels.
|
||||||
|
*/
|
||||||
int
|
int
|
||||||
width() const
|
width() const
|
||||||
{
|
{
|
||||||
return( vips_image_get_width( get_image() ) );
|
return( vips_image_get_width( get_image() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the height of the image in pixels.
|
||||||
|
*/
|
||||||
int
|
int
|
||||||
height() const
|
height() const
|
||||||
{
|
{
|
||||||
return( vips_image_get_height( get_image() ) );
|
return( vips_image_get_height( get_image() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the number of image bands.
|
||||||
|
*/
|
||||||
int
|
int
|
||||||
bands() const
|
bands() const
|
||||||
{
|
{
|
||||||
return( vips_image_get_bands( get_image() ) );
|
return( vips_image_get_bands( get_image() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the image format, for example VIPS_FORMAT_UCHAR.
|
||||||
|
*/
|
||||||
VipsBandFormat
|
VipsBandFormat
|
||||||
format() const
|
format() const
|
||||||
{
|
{
|
||||||
return( vips_image_get_format( get_image() ) );
|
return( vips_image_get_format( get_image() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the image coding, for example VIPS_CODING_NONE.
|
||||||
|
*/
|
||||||
VipsCoding
|
VipsCoding
|
||||||
coding() const
|
coding() const
|
||||||
{
|
{
|
||||||
return( vips_image_get_coding( get_image() ) );
|
return( vips_image_get_coding( get_image() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the image interpretation, for example
|
||||||
|
* VIPS_INTERPRETATION_sRGB.
|
||||||
|
*/
|
||||||
VipsInterpretation
|
VipsInterpretation
|
||||||
interpretation() const
|
interpretation() const
|
||||||
{
|
{
|
||||||
return( vips_image_get_interpretation( get_image() ) );
|
return( vips_image_get_interpretation( get_image() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Try to guess the image interpretation from other fields. This is
|
||||||
|
* handy if the inperpretaion has not been set correctly.
|
||||||
|
*/
|
||||||
VipsInterpretation
|
VipsInterpretation
|
||||||
guess_interpretation() const
|
guess_interpretation() const
|
||||||
{
|
{
|
||||||
return( vips_image_guess_interpretation( get_image() ) );
|
return( vips_image_guess_interpretation( get_image() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The horizontal resolution in pixels per millimeter.
|
||||||
|
*/
|
||||||
double
|
double
|
||||||
xres() const
|
xres() const
|
||||||
{
|
{
|
||||||
return( vips_image_get_xres( get_image() ) );
|
return( vips_image_get_xres( get_image() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The vertical resolution in pixels per millimeter.
|
||||||
|
*/
|
||||||
double
|
double
|
||||||
yres() const
|
yres() const
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user