stuff
This commit is contained in:
parent
e2b1bd0910
commit
5d8309b5fc
@ -37,8 +37,9 @@
|
|||||||
- VMask() can init from std::vector, so Python can init from []
|
- VMask() can init from std::vector, so Python can init from []
|
||||||
- added IM_LIBDIR, im_guess_libdir()
|
- added IM_LIBDIR, im_guess_libdir()
|
||||||
- load plugins from libdir/vips-x.x on startup
|
- load plugins from libdir/vips-x.x on startup
|
||||||
- added meta get/set int/double/string to C++ API
|
- added meta get/set int/double/string/area/blob/GValue to C++ API
|
||||||
- include time_t in vips.h, thanks nicola
|
- include time_t in vips.h, thanks nicola
|
||||||
|
- lock global image list (thanks lee)
|
||||||
|
|
||||||
25/1/08 started 7.14.0
|
25/1/08 started 7.14.0
|
||||||
- bump all version numbers for new stable
|
- bump all version numbers for new stable
|
||||||
|
12
TODO
12
TODO
@ -1,18 +1,12 @@
|
|||||||
- docs for im_guess_eprefix(), IM_EPREFIX
|
|
||||||
|
|
||||||
- merge loadable format stuff, postpone new object parameter API to next
|
|
||||||
version
|
|
||||||
|
|
||||||
- note new VMask constructor in docs
|
|
||||||
|
|
||||||
test new VMask constructor from python
|
|
||||||
|
|
||||||
- wrap meta() stuff in C++, we need it in py as well
|
- wrap meta() stuff in C++, we need it in py as well
|
||||||
|
|
||||||
need fred.get_int ("poop"); I think
|
need fred.get_int ("poop"); I think
|
||||||
|
|
||||||
add notes to docs on this
|
add notes to docs on this
|
||||||
|
|
||||||
|
- merge loadable format stuff, postpone new object parameter API to next
|
||||||
|
version
|
||||||
|
|
||||||
- try
|
- try
|
||||||
|
|
||||||
libsrc/convolution$ grep -l offsets *.c
|
libsrc/convolution$ grep -l offsets *.c
|
||||||
|
@ -59,6 +59,10 @@ extern "C" {
|
|||||||
|
|
||||||
VIPS_NAMESPACE_START
|
VIPS_NAMESPACE_START
|
||||||
|
|
||||||
|
/* A VIPS callback, our name for im_callback_fn.
|
||||||
|
*/
|
||||||
|
typedef int (*VCallback)( void *, void * );
|
||||||
|
|
||||||
/* VIPS image class.
|
/* VIPS image class.
|
||||||
*
|
*
|
||||||
* Slightly tricky: we have two sorts of sharing. Several VImage can share one
|
* Slightly tricky: we have two sorts of sharing. Several VImage can share one
|
||||||
@ -244,14 +248,36 @@ public:
|
|||||||
const char *Hist();
|
const char *Hist();
|
||||||
|
|
||||||
// metadata
|
// metadata
|
||||||
|
#ifndef SWIG
|
||||||
|
// base functionality
|
||||||
|
// we don't wrap GValue, so we can't wrap these for now
|
||||||
|
void meta_set( const char *field, GValue *value ) throw( VError );
|
||||||
|
void meta_get( const char *field, GValue *value_copy ) throw( VError );
|
||||||
|
GType meta_get_type( const char *field ) throw( VError );
|
||||||
|
#endif /*SWIG*/
|
||||||
|
|
||||||
|
// convenience functions
|
||||||
int meta_get_int( const char *field ) throw( VError );
|
int meta_get_int( const char *field ) throw( VError );
|
||||||
double meta_get_double( const char *field ) throw( VError );
|
double meta_get_double( const char *field ) throw( VError );
|
||||||
const char *meta_get_string( const char *field ) throw( VError );
|
const char *meta_get_string( const char *field ) throw( VError );
|
||||||
|
void *meta_get_area( const char *field ) throw( VError );
|
||||||
|
void *meta_get_blob( const char *field, size_t *length )
|
||||||
|
throw( VError );
|
||||||
|
|
||||||
void meta_set( const char *field, int value ) throw( VError );
|
void meta_set( const char *field, int value ) throw( VError );
|
||||||
void meta_set( const char *field, double value ) throw( VError );
|
void meta_set( const char *field, double value ) throw( VError );
|
||||||
void meta_set( const char *field, const char *value ) throw( VError );
|
void meta_set( const char *field, const char *value ) throw( VError );
|
||||||
|
|
||||||
|
#ifndef SWIG
|
||||||
|
// we don't wrap callbacks yet, so we can't wrap these for now
|
||||||
|
void meta_set( const char *field,
|
||||||
|
VCallback free_fn, void *value )
|
||||||
|
throw( VError );
|
||||||
|
void meta_set( const char *field,
|
||||||
|
VCallback free_fn, void *value, size_t length )
|
||||||
|
throw( VError );
|
||||||
|
#endif /*SWIG*/
|
||||||
|
|
||||||
// Set header fields
|
// Set header fields
|
||||||
void initdesc( int, int, int, TBandFmt, TCoding, TType,
|
void initdesc( int, int, int, TBandFmt, TCoding, TType,
|
||||||
float = 1.0, float = 1.0, int = 0, int = 0 ) throw( VError );
|
float = 1.0, float = 1.0, int = 0, int = 0 ) throw( VError );
|
||||||
|
@ -31,6 +31,9 @@
|
|||||||
|
|
||||||
#include <vips/version.h>
|
#include <vips/version.h>
|
||||||
|
|
||||||
|
// VImage.h uses GValue for metadata
|
||||||
|
#include <glib-object.h>
|
||||||
|
|
||||||
// If we have already #included the C vips headers, we have to undef a load of
|
// If we have already #included the C vips headers, we have to undef a load of
|
||||||
// stuff to stop vips's stupid macros messing up our enums
|
// stuff to stop vips's stupid macros messing up our enums
|
||||||
#ifdef IM_VIPS_H
|
#ifdef IM_VIPS_H
|
||||||
|
@ -56,6 +56,8 @@
|
|||||||
* - added preclose, removed evalend triggers
|
* - added preclose, removed evalend triggers
|
||||||
* 23/7/08
|
* 23/7/08
|
||||||
* - im__close() will no longer free regions
|
* - im__close() will no longer free regions
|
||||||
|
* 9/8/08
|
||||||
|
* - lock global image list (thanks lee)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -297,7 +299,9 @@ im_close( IMAGE *im )
|
|||||||
IM_FREE( im->Hist );
|
IM_FREE( im->Hist );
|
||||||
IM_FREEF( im__gslist_gvalue_free, im->history_list );
|
IM_FREEF( im__gslist_gvalue_free, im->history_list );
|
||||||
im__meta_destroy( im );
|
im__meta_destroy( im );
|
||||||
|
g_mutex_lock( im__global_lock );
|
||||||
im__open_images = g_slist_remove( im__open_images, im );
|
im__open_images = g_slist_remove( im__open_images, im );
|
||||||
|
g_mutex_unlock( im__global_lock );
|
||||||
im__time_destroy( im );
|
im__time_destroy( im );
|
||||||
IM_FREE( im );
|
IM_FREE( im );
|
||||||
}
|
}
|
||||||
|
@ -29,6 +29,8 @@
|
|||||||
* - init history_list
|
* - init history_list
|
||||||
* 7/11/07
|
* 7/11/07
|
||||||
* - added preclose and evalstart
|
* - added preclose and evalstart
|
||||||
|
* 9/8/08
|
||||||
|
* - lock global image list (thanks lee)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -73,6 +75,7 @@
|
|||||||
#include <vips/vips.h>
|
#include <vips/vips.h>
|
||||||
#include <vips/debug.h>
|
#include <vips/debug.h>
|
||||||
#include <vips/thread.h>
|
#include <vips/thread.h>
|
||||||
|
#include <vips/internal.h>
|
||||||
|
|
||||||
#ifdef WITH_DMALLOC
|
#ifdef WITH_DMALLOC
|
||||||
#include <dmalloc.h>
|
#include <dmalloc.h>
|
||||||
@ -170,7 +173,9 @@ im_init( const char *filename )
|
|||||||
return( NULL );
|
return( NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_mutex_lock( im__global_lock );
|
||||||
im__open_images = g_slist_prepend( im__open_images, im );
|
im__open_images = g_slist_prepend( im__open_images, im );
|
||||||
|
g_mutex_unlock( im__global_lock );
|
||||||
|
|
||||||
return( im );
|
return( im );
|
||||||
}
|
}
|
||||||
|
@ -90,6 +90,8 @@ Modified:
|
|||||||
* 7/11/07
|
* 7/11/07
|
||||||
* - use preclose, not evalend, for delayed save
|
* - use preclose, not evalend, for delayed save
|
||||||
* - add simple cmd-line progress feedback
|
* - add simple cmd-line progress feedback
|
||||||
|
* 9/8/08
|
||||||
|
* - lock global image list (thanks lee)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -134,6 +136,7 @@ Modified:
|
|||||||
|
|
||||||
#include <vips/vips.h>
|
#include <vips/vips.h>
|
||||||
#include <vips/debug.h>
|
#include <vips/debug.h>
|
||||||
|
#include <vips/internal.h>
|
||||||
|
|
||||||
#ifdef WITH_DMALLOC
|
#ifdef WITH_DMALLOC
|
||||||
#include <dmalloc.h>
|
#include <dmalloc.h>
|
||||||
@ -643,8 +646,13 @@ image_sanity( IMAGE *im )
|
|||||||
return( "NULL descriptor" );
|
return( "NULL descriptor" );
|
||||||
if( !im->filename )
|
if( !im->filename )
|
||||||
return( "NULL filename" );
|
return( "NULL filename" );
|
||||||
if( !g_slist_find( im__open_images, im ) )
|
|
||||||
|
g_mutex_lock( im__global_lock );
|
||||||
|
if( !g_slist_find( im__open_images, im ) ) {
|
||||||
|
g_mutex_unlock( im__global_lock );
|
||||||
return( "not on open image list" );
|
return( "not on open image list" );
|
||||||
|
}
|
||||||
|
g_mutex_unlock( im__global_lock );
|
||||||
|
|
||||||
if( im->Xsize <= 0 || im->Ysize <= 0 || im->Bands <= 0 )
|
if( im->Xsize <= 0 || im->Ysize <= 0 || im->Bands <= 0 )
|
||||||
return( "bad dimensions" );
|
return( "bad dimensions" );
|
||||||
|
@ -316,6 +316,25 @@ const char *VImage::Hist() { return( im_history_get( _ref->im ) ); }
|
|||||||
|
|
||||||
// metadata
|
// metadata
|
||||||
|
|
||||||
|
// base functionality
|
||||||
|
void VImage::meta_set( const char *field, GValue *value ) throw( VError )
|
||||||
|
{
|
||||||
|
if( im_meta_set( _ref->im, field, value ) )
|
||||||
|
verror();
|
||||||
|
}
|
||||||
|
|
||||||
|
void VImage::meta_get( const char *field, GValue *value_copy ) throw( VError )
|
||||||
|
{
|
||||||
|
if( im_meta_get( _ref->im, field, value_copy ) )
|
||||||
|
verror();
|
||||||
|
}
|
||||||
|
|
||||||
|
GType VImage::meta_get_type( const char *field ) throw( VError )
|
||||||
|
{
|
||||||
|
return( im_meta_get_type( _ref->im, field ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// convenience functions
|
||||||
int VImage::meta_get_int( const char *field )
|
int VImage::meta_get_int( const char *field )
|
||||||
throw( VError )
|
throw( VError )
|
||||||
{
|
{
|
||||||
@ -349,6 +368,26 @@ const char *VImage::meta_get_string( const char *field )
|
|||||||
return( result );
|
return( result );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *VImage::meta_get_area( const char *field ) throw( VError )
|
||||||
|
{
|
||||||
|
void *result;
|
||||||
|
|
||||||
|
if( im_meta_get_area( _ref->im, field, &result ) )
|
||||||
|
verror();
|
||||||
|
|
||||||
|
return( result );
|
||||||
|
}
|
||||||
|
|
||||||
|
void *VImage::meta_get_blob( const char *field, size_t *length ) throw( VError )
|
||||||
|
{
|
||||||
|
void *result;
|
||||||
|
|
||||||
|
if( im_meta_get_blob( _ref->im, field, &result, length ) )
|
||||||
|
verror();
|
||||||
|
|
||||||
|
return( result );
|
||||||
|
}
|
||||||
|
|
||||||
void VImage::meta_set( const char *field, int value )
|
void VImage::meta_set( const char *field, int value )
|
||||||
throw( VError )
|
throw( VError )
|
||||||
{
|
{
|
||||||
@ -370,6 +409,22 @@ void VImage::meta_set( const char *field, const char *value )
|
|||||||
verror();
|
verror();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VImage::meta_set( const char *field,
|
||||||
|
VCallback free_fn, void *value )
|
||||||
|
throw( VError )
|
||||||
|
{
|
||||||
|
if( im_meta_set_area( _ref->im, field, free_fn, value ) )
|
||||||
|
verror();
|
||||||
|
}
|
||||||
|
|
||||||
|
void VImage::meta_set( const char *field,
|
||||||
|
VCallback free_fn, void *value, size_t length )
|
||||||
|
throw( VError )
|
||||||
|
{
|
||||||
|
if( im_meta_set_blob( _ref->im, field, free_fn, value, length ) )
|
||||||
|
verror();
|
||||||
|
}
|
||||||
|
|
||||||
// Set header fields and setbuf() in one go.
|
// Set header fields and setbuf() in one go.
|
||||||
void VImage::initdesc( int x, int y, int b,
|
void VImage::initdesc( int x, int y, int b,
|
||||||
TBandFmt f, TCoding c, TType t, float xr, float yr, int xo, int yo )
|
TBandFmt f, TCoding c, TType t, float xr, float yr, int xo, int yo )
|
||||||
|
@ -27,10 +27,10 @@ int im_meta_set_string( IMAGE *im, const char *field,
|
|||||||
int im_meta_get_string( IMAGE *im, const char *field, char **str );
|
int im_meta_get_string( IMAGE *im, const char *field, char **str );
|
||||||
.br
|
.br
|
||||||
int im_meta_set_blob( IMAGE *im, const char *field,
|
int im_meta_set_blob( IMAGE *im, const char *field,
|
||||||
im_callback_fn free_fn, void *blob, int blob_length );
|
im_callback_fn free_fn, void *blob, size_t blob_length );
|
||||||
.br
|
.br
|
||||||
int im_meta_get_blob( IMAGE *im, const char *field,
|
int im_meta_get_blob( IMAGE *im, const char *field,
|
||||||
void **blob, int *blob_length );
|
void **blob, size_t *blob_length );
|
||||||
|
|
||||||
typedef int (*im_callback_fn)( void *, void * );
|
typedef int (*im_callback_fn)( void *, void * );
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user