Merge branch 'text-autofit' of https://github.com/gargsms/libvips into gargsms-text-autofit
This commit is contained in:
commit
4f18027a7c
@ -16,12 +16,14 @@
|
|||||||
* - add @spacing
|
* - add @spacing
|
||||||
* 29/5/17
|
* 29/5/17
|
||||||
* - don't set "font" if unset, it breaks caching
|
* - don't set "font" if unset, it breaks caching
|
||||||
|
* 16/7/17
|
||||||
|
* - implement auto fitting of text inside bounds
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
This file is part of VIPS.
|
This file is part of VIPS.
|
||||||
|
|
||||||
VIPS is free software; you can redistribute it and/or modify
|
VIPS is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Lesser General Public License as published by
|
it under the terms of the GNU Lesser General Public License as published by
|
||||||
the Free Software Foundation; either version 2 of the License, or
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
@ -52,6 +54,7 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <vips/vips.h>
|
#include <vips/vips.h>
|
||||||
|
|
||||||
@ -68,9 +71,11 @@ typedef struct _VipsText {
|
|||||||
char *text;
|
char *text;
|
||||||
char *font;
|
char *font;
|
||||||
int width;
|
int width;
|
||||||
|
int height;
|
||||||
int spacing;
|
int spacing;
|
||||||
VipsAlign align;
|
VipsAlign align;
|
||||||
int dpi;
|
int dpi;
|
||||||
|
VipsGravity gravity;
|
||||||
|
|
||||||
FT_Bitmap bitmap;
|
FT_Bitmap bitmap;
|
||||||
PangoContext *context;
|
PangoContext *context;
|
||||||
@ -80,6 +85,15 @@ typedef struct _VipsText {
|
|||||||
|
|
||||||
typedef VipsCreateClass VipsTextClass;
|
typedef VipsCreateClass VipsTextClass;
|
||||||
|
|
||||||
|
typedef struct _FontSizeList FontSizeList;
|
||||||
|
|
||||||
|
struct _FontSizeList {
|
||||||
|
int deviation;
|
||||||
|
int size;
|
||||||
|
long area;
|
||||||
|
FontSizeList *next;
|
||||||
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE( VipsText, vips_text, VIPS_TYPE_CREATE );
|
G_DEFINE_TYPE( VipsText, vips_text, VIPS_TYPE_CREATE );
|
||||||
|
|
||||||
/* Just have one of these and reuse it.
|
/* Just have one of these and reuse it.
|
||||||
@ -94,6 +108,12 @@ static PangoFontMap *vips_text_fontmap = NULL;
|
|||||||
*/
|
*/
|
||||||
static GMutex *vips_text_lock = NULL;
|
static GMutex *vips_text_lock = NULL;
|
||||||
|
|
||||||
|
/* The maximum deviation to tolerate for autofitting the text
|
||||||
|
*
|
||||||
|
* TODO: Should the user be able to change this?
|
||||||
|
*/
|
||||||
|
static int const MAX_TOLERANCE = 10;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
vips_text_dispose( GObject *gobject )
|
vips_text_dispose( GObject *gobject )
|
||||||
{
|
{
|
||||||
@ -109,7 +129,7 @@ vips_text_dispose( GObject *gobject )
|
|||||||
static PangoLayout *
|
static PangoLayout *
|
||||||
text_layout_new( PangoContext *context,
|
text_layout_new( PangoContext *context,
|
||||||
const char *text, const char *font, int width, int spacing,
|
const char *text, const char *font, int width, int spacing,
|
||||||
VipsAlign align, int dpi )
|
VipsAlign align )
|
||||||
{
|
{
|
||||||
PangoLayout *layout;
|
PangoLayout *layout;
|
||||||
PangoFontDescription *font_description;
|
PangoFontDescription *font_description;
|
||||||
@ -150,12 +170,139 @@ text_layout_new( PangoContext *context,
|
|||||||
return( layout );
|
return( layout );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
digits_in_num( int f )
|
||||||
|
{
|
||||||
|
int digits = 0;
|
||||||
|
if( f == 0 )
|
||||||
|
return 1;
|
||||||
|
while( f ) {
|
||||||
|
f /= 10;
|
||||||
|
digits++;
|
||||||
|
}
|
||||||
|
return digits;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
determine_deviation( int width, int height, PangoRectangle rect ) {
|
||||||
|
int rect_width = PANGO_PIXELS( rect.width );
|
||||||
|
int rect_height = PANGO_PIXELS( rect.height );
|
||||||
|
|
||||||
|
int dw = (int)( 100 * (double)abs( rect_width - width ) / width );
|
||||||
|
int dh = (int)( 100 * (double)abs( rect_height - height ) / height );
|
||||||
|
|
||||||
|
if( dw && dh ) {
|
||||||
|
return dw * dh;
|
||||||
|
}
|
||||||
|
return dw ? dw : dh;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
search_flist( FontSizeList *flist, int size )
|
||||||
|
{
|
||||||
|
FontSizeList *entry = flist;
|
||||||
|
while( entry->next != NULL ) {
|
||||||
|
if( entry->size == size )
|
||||||
|
return true;
|
||||||
|
entry = entry->next;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static FontSizeList *
|
||||||
|
least_deviation_flist( FontSizeList *flist )
|
||||||
|
{
|
||||||
|
FontSizeList *entry = flist;
|
||||||
|
// This works for all practical purposes
|
||||||
|
long smallest = 1999999999;
|
||||||
|
FontSizeList *least;
|
||||||
|
while( entry->next != NULL ) {
|
||||||
|
if( entry->deviation < smallest ) {
|
||||||
|
smallest = entry->deviation;
|
||||||
|
least = entry;
|
||||||
|
}
|
||||||
|
entry = entry->next;
|
||||||
|
}
|
||||||
|
return least;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
append_to_flist( FontSizeList *flist, FontSizeList *nflist )
|
||||||
|
{
|
||||||
|
FontSizeList *entry = flist;
|
||||||
|
while( entry->next != NULL ) {
|
||||||
|
entry = entry->next;
|
||||||
|
}
|
||||||
|
entry->next = nflist;
|
||||||
|
}
|
||||||
|
|
||||||
|
static PangoRectangle
|
||||||
|
fit_to_bounds( VipsText *text,
|
||||||
|
char *name, int size, PangoRectangle rect, FontSizeList *flist, bool coarse )
|
||||||
|
{
|
||||||
|
int buf_size = strlen( name ) + digits_in_num( size ) + 2;
|
||||||
|
int deviation;
|
||||||
|
char buf[ buf_size ];
|
||||||
|
long font_area = (long)PANGO_PIXELS( rect.width ) *
|
||||||
|
(long)PANGO_PIXELS( rect.height );
|
||||||
|
long allowed_area = (long)text->width * (long)text->height;
|
||||||
|
|
||||||
|
FontSizeList *nflist = (FontSizeList *) malloc( sizeof( FontSizeList ) );
|
||||||
|
|
||||||
|
if( coarse ) {
|
||||||
|
// A factor of X increase in font size causes X^2 increase in the area
|
||||||
|
// occupied by the text
|
||||||
|
size = (int)((double)size * sqrt( (double)allowed_area / font_area ));
|
||||||
|
} else {
|
||||||
|
if( allowed_area > font_area ) {
|
||||||
|
size++;
|
||||||
|
} else {
|
||||||
|
size--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf( buf, buf_size, "%s %d", name, size );
|
||||||
|
|
||||||
|
text->layout = text_layout_new( text->context,
|
||||||
|
text->text, buf, text->width, text->spacing, text->align );
|
||||||
|
|
||||||
|
pango_layout_get_extents( text->layout, NULL, &rect );
|
||||||
|
|
||||||
|
deviation = determine_deviation( text->width, text->height, rect );
|
||||||
|
|
||||||
|
nflist->size = size;
|
||||||
|
nflist->deviation = deviation;
|
||||||
|
nflist->area = PANGO_PIXELS( rect.width ) * PANGO_PIXELS( rect.height );
|
||||||
|
nflist->next = NULL;
|
||||||
|
append_to_flist( flist, nflist );
|
||||||
|
|
||||||
|
// If we have been through this font size before, find the one with the
|
||||||
|
// smallest deviation and then fit in small adjustments
|
||||||
|
if( search_flist( flist, size ) ) {
|
||||||
|
if( coarse ) {
|
||||||
|
return fit_to_bounds( text, name, size, rect,
|
||||||
|
least_deviation_flist( flist ), false );
|
||||||
|
} else {
|
||||||
|
// We cannot do better than this because we will
|
||||||
|
// cycle through sizes again
|
||||||
|
return rect;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( deviation > MAX_TOLERANCE ) {
|
||||||
|
return fit_to_bounds( text, name, size, rect, flist, coarse );
|
||||||
|
} else {
|
||||||
|
return rect;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
vips_text_build( VipsObject *object )
|
vips_text_build( VipsObject *object )
|
||||||
{
|
{
|
||||||
VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object );
|
VipsObjectClass *class = VIPS_OBJECT_GET_CLASS( object );
|
||||||
VipsCreate *create = VIPS_CREATE( object );
|
VipsCreate *create = VIPS_CREATE( object );
|
||||||
VipsText *text = (VipsText *) object;
|
VipsText *text = (VipsText *) object;
|
||||||
|
FontSizeList *flist = (FontSizeList *) malloc( sizeof( FontSizeList ) );
|
||||||
|
|
||||||
PangoRectangle logical_rect;
|
PangoRectangle logical_rect;
|
||||||
int left;
|
int left;
|
||||||
@ -163,6 +310,10 @@ vips_text_build( VipsObject *object )
|
|||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
int y;
|
int y;
|
||||||
|
int deviation = 0;
|
||||||
|
int font_size = 0;
|
||||||
|
char *last;
|
||||||
|
bool is_font_size_provided = true;
|
||||||
|
|
||||||
if( VIPS_OBJECT_CLASS( vips_text_parent_class )->build( object ) )
|
if( VIPS_OBJECT_CLASS( vips_text_parent_class )->build( object ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
@ -173,6 +324,26 @@ vips_text_build( VipsObject *object )
|
|||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *font_name[ strlen( text->font ) + 1 ];
|
||||||
|
// Extract font size from provided argument
|
||||||
|
last = strrchr( text->font, ' ' );
|
||||||
|
|
||||||
|
// Happens for a single word font names
|
||||||
|
if( last != '\0' ) {
|
||||||
|
font_size = atol( last );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( font_size ) {
|
||||||
|
strncat( font_name, text->font, last - text->font );
|
||||||
|
} else {
|
||||||
|
// Font was more than 1 MAX_word. "Fira Code" would have last
|
||||||
|
// pointing to "Code", leading atol to output 0
|
||||||
|
// Fix font_name back to the original in this case
|
||||||
|
strcpy( font_name, text->font );
|
||||||
|
font_size = text->height;
|
||||||
|
is_font_size_provided = false;
|
||||||
|
}
|
||||||
|
|
||||||
g_mutex_lock( vips_text_lock );
|
g_mutex_lock( vips_text_lock );
|
||||||
|
|
||||||
if( !vips_text_fontmap )
|
if( !vips_text_fontmap )
|
||||||
@ -185,13 +356,32 @@ vips_text_build( VipsObject *object )
|
|||||||
|
|
||||||
if( !(text->layout = text_layout_new( text->context,
|
if( !(text->layout = text_layout_new( text->context,
|
||||||
text->text, text->font,
|
text->text, text->font,
|
||||||
text->width, text->spacing, text->align, text->dpi )) ) {
|
text->width, text->spacing, text->align )) ) {
|
||||||
g_mutex_unlock( vips_text_lock );
|
g_mutex_unlock( vips_text_lock );
|
||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
pango_layout_get_extents( text->layout, NULL, &logical_rect );
|
pango_layout_get_extents( text->layout, NULL, &logical_rect );
|
||||||
|
|
||||||
|
if( !is_font_size_provided ) {
|
||||||
|
if( text->height && text->width ) {
|
||||||
|
deviation = determine_deviation( text->width, text->height, logical_rect );
|
||||||
|
}
|
||||||
|
|
||||||
|
if( deviation > MAX_TOLERANCE ) {
|
||||||
|
flist->size = font_size;
|
||||||
|
flist->deviation = deviation;
|
||||||
|
flist->area = PANGO_PIXELS( logical_rect.width ) * PANGO_PIXELS( logical_rect.height );
|
||||||
|
flist->next = NULL;
|
||||||
|
|
||||||
|
logical_rect = fit_to_bounds( text, font_name, font_size, logical_rect, flist, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Logical rect does not help us with exact bounds of the text
|
||||||
|
pango_layout_get_extents( text->layout, NULL, &logical_rect );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
printf( "logical left = %d, top = %d, width = %d, height = %d\n",
|
printf( "logical left = %d, top = %d, width = %d, height = %d\n",
|
||||||
PANGO_PIXELS( logical_rect.x ),
|
PANGO_PIXELS( logical_rect.x ),
|
||||||
@ -205,6 +395,80 @@ vips_text_build( VipsObject *object )
|
|||||||
width = PANGO_PIXELS( logical_rect.width );
|
width = PANGO_PIXELS( logical_rect.width );
|
||||||
height = PANGO_PIXELS( logical_rect.height );
|
height = PANGO_PIXELS( logical_rect.height );
|
||||||
|
|
||||||
|
// Match the layout to fit the exact dimensions requested
|
||||||
|
// We also apply gravity here
|
||||||
|
if( !is_font_size_provided && text->width && text->height ) {
|
||||||
|
left = 0;
|
||||||
|
top = 0;
|
||||||
|
width = PANGO_PIXELS( logical_rect.width );
|
||||||
|
height = PANGO_PIXELS( logical_rect.height );
|
||||||
|
|
||||||
|
// Since the layout is bigger than the requested dimensions, we
|
||||||
|
// scale the layout font description by the same scale
|
||||||
|
// This seems like the only way to resize the layout before it
|
||||||
|
// is rendered. We cannot reliably do resizing after rendering
|
||||||
|
// because we lose the lock, and we need to rely on vips_resize
|
||||||
|
if( width > text->width || height > text->height ) {
|
||||||
|
double scale_w = (double)text->width / width;
|
||||||
|
double scale_h = (double)text->height / height;
|
||||||
|
double scale = scale_w > scale_h ? scale_h : scale_w;
|
||||||
|
PangoFontDescription *temp_fd = pango_font_description_copy(
|
||||||
|
pango_layout_get_font_description( text->layout ) );
|
||||||
|
int fz = pango_font_description_get_size( temp_fd );
|
||||||
|
pango_font_description_set_size( temp_fd, (int)(fz * scale) );
|
||||||
|
pango_layout_set_font_description( text->layout, temp_fd );
|
||||||
|
pango_font_description_free( temp_fd );
|
||||||
|
|
||||||
|
// Overloading logical_rect as an ink rectangle here to determine the
|
||||||
|
// best gravity
|
||||||
|
// For most cases, gravities with north, south components are completely
|
||||||
|
// useless if we do positioning with logical rect
|
||||||
|
pango_layout_get_extents( text->layout, &logical_rect, NULL );
|
||||||
|
|
||||||
|
width = PANGO_PIXELS( logical_rect.width );
|
||||||
|
height = PANGO_PIXELS( logical_rect.height );
|
||||||
|
}
|
||||||
|
|
||||||
|
switch( text->gravity ) {
|
||||||
|
case VIPS_GRAVITY_CENTER:
|
||||||
|
left = ( text->width - width ) / 2;
|
||||||
|
break;
|
||||||
|
case VIPS_GRAVITY_NORTH:
|
||||||
|
top = ( height - text->height ) / 2;
|
||||||
|
left = ( text->width - width ) / 2;
|
||||||
|
break;
|
||||||
|
case VIPS_GRAVITY_EAST:
|
||||||
|
left = text->width - width;
|
||||||
|
break;
|
||||||
|
case VIPS_GRAVITY_SOUTH:
|
||||||
|
top = ( text->height - height ) / 2;
|
||||||
|
left = ( text->width - width ) / 2;
|
||||||
|
break;
|
||||||
|
case VIPS_GRAVITY_WEST:
|
||||||
|
break;
|
||||||
|
case VIPS_GRAVITY_NORTH_EAST:
|
||||||
|
top = ( height - text->height ) / 2;
|
||||||
|
left = text->width - width;
|
||||||
|
break;
|
||||||
|
case VIPS_GRAVITY_SOUTH_EAST:
|
||||||
|
top = ( text->height - height ) / 2;
|
||||||
|
left = text->width - width;
|
||||||
|
break;
|
||||||
|
case VIPS_GRAVITY_SOUTH_WEST:
|
||||||
|
top = ( text->height - height ) / 2;
|
||||||
|
break;
|
||||||
|
case VIPS_GRAVITY_NORTH_WEST:
|
||||||
|
top = ( height - text->height ) / 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
left = -1 * left;
|
||||||
|
top = -1 * top;
|
||||||
|
width = text->width;
|
||||||
|
height = text->height;
|
||||||
|
}
|
||||||
|
|
||||||
/* Can happen for "", for example.
|
/* Can happen for "", for example.
|
||||||
*/
|
*/
|
||||||
if( width == 0 || height == 0 ) {
|
if( width == 0 || height == 0 ) {
|
||||||
@ -299,27 +563,41 @@ vips_text_class_init( VipsTextClass *class )
|
|||||||
G_STRUCT_OFFSET( VipsText, width ),
|
G_STRUCT_OFFSET( VipsText, width ),
|
||||||
0, VIPS_MAX_COORD, 0 );
|
0, VIPS_MAX_COORD, 0 );
|
||||||
|
|
||||||
VIPS_ARG_ENUM( class, "align", 7,
|
VIPS_ARG_INT( class, "height", 7,
|
||||||
|
_( "Height" ),
|
||||||
|
_( "Maximum image height in pixels" ),
|
||||||
|
VIPS_ARGUMENT_OPTIONAL_INPUT,
|
||||||
|
G_STRUCT_OFFSET( VipsText, height ),
|
||||||
|
0, VIPS_MAX_COORD, 0 );
|
||||||
|
|
||||||
|
VIPS_ARG_ENUM( class, "align", 8,
|
||||||
_( "Align" ),
|
_( "Align" ),
|
||||||
_( "Align on the low, centre or high edge" ),
|
_( "Align on the low, centre or high edge" ),
|
||||||
VIPS_ARGUMENT_OPTIONAL_INPUT,
|
VIPS_ARGUMENT_OPTIONAL_INPUT,
|
||||||
G_STRUCT_OFFSET( VipsText, align ),
|
G_STRUCT_OFFSET( VipsText, align ),
|
||||||
VIPS_TYPE_ALIGN, VIPS_ALIGN_LOW );
|
VIPS_TYPE_ALIGN, VIPS_ALIGN_LOW );
|
||||||
|
|
||||||
VIPS_ARG_INT( class, "dpi", 8,
|
VIPS_ARG_INT( class, "dpi", 9,
|
||||||
_( "DPI" ),
|
_( "DPI" ),
|
||||||
_( "DPI to render at" ),
|
_( "DPI to render at" ),
|
||||||
VIPS_ARGUMENT_OPTIONAL_INPUT,
|
VIPS_ARGUMENT_OPTIONAL_INPUT,
|
||||||
G_STRUCT_OFFSET( VipsText, dpi ),
|
G_STRUCT_OFFSET( VipsText, dpi ),
|
||||||
1, 1000000, 72 );
|
1, 1000000, 72 );
|
||||||
|
|
||||||
VIPS_ARG_INT( class, "spacing", 9,
|
VIPS_ARG_INT( class, "spacing", 10,
|
||||||
_( "Spacing" ),
|
_( "Spacing" ),
|
||||||
_( "Line spacing" ),
|
_( "Line spacing" ),
|
||||||
VIPS_ARGUMENT_OPTIONAL_INPUT,
|
VIPS_ARGUMENT_OPTIONAL_INPUT,
|
||||||
G_STRUCT_OFFSET( VipsText, spacing ),
|
G_STRUCT_OFFSET( VipsText, spacing ),
|
||||||
0, 1000000, 0 );
|
0, 1000000, 0 );
|
||||||
|
|
||||||
|
VIPS_ARG_ENUM( class, "gravity", 11,
|
||||||
|
_( "Gravity" ),
|
||||||
|
_( "Gravity to use while auto fitting text in bounds" ),
|
||||||
|
VIPS_ARGUMENT_OPTIONAL_INPUT,
|
||||||
|
G_STRUCT_OFFSET( VipsText, gravity ),
|
||||||
|
VIPS_TYPE_GRAVITY, VIPS_GRAVITY_CENTER );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -343,9 +621,11 @@ vips_text_init( VipsText *text )
|
|||||||
*
|
*
|
||||||
* * @font: %gchararray, font to render with
|
* * @font: %gchararray, font to render with
|
||||||
* * @width: %gint, image should be no wider than this many pixels
|
* * @width: %gint, image should be no wider than this many pixels
|
||||||
|
* * @height: %gint, image should be no higher than this many pixels
|
||||||
* * @align: #VipsAlign, left/centre/right alignment
|
* * @align: #VipsAlign, left/centre/right alignment
|
||||||
* * @dpi: %gint, render at this resolution
|
* * @dpi: %gint, render at this resolution
|
||||||
* * @spacing: %gint, space lines by this in points
|
* * @spacing: %gint, space lines by this in points
|
||||||
|
* * @gravity: #VipsGravity, gravity of text
|
||||||
*
|
*
|
||||||
* Draw the string @text to an image. @out is a one-band 8-bit
|
* Draw the string @text to an image. @out is a one-band 8-bit
|
||||||
* unsigned char image, with 0 for no text and 255 for text. Values inbetween
|
* unsigned char image, with 0 for no text and 255 for text. Values inbetween
|
||||||
@ -362,12 +642,21 @@ vips_text_init( VipsText *text )
|
|||||||
* case, @align can be used to set the alignment style for multi-line
|
* case, @align can be used to set the alignment style for multi-line
|
||||||
* text.
|
* text.
|
||||||
*
|
*
|
||||||
|
* @height is the maximum number of pixels high the generated text can be. This
|
||||||
|
* only takes effect when there is no font size specified, and a width is
|
||||||
|
* provided, making a box. If a font size is provided, we render the font size
|
||||||
|
* without any fitting to box. Bounds might be exceeded if the font size is too
|
||||||
|
* big to be fit or wrapped inside.
|
||||||
|
*
|
||||||
* @dpi sets the resolution to render at. "sans 12" at 72 dpi draws characters
|
* @dpi sets the resolution to render at. "sans 12" at 72 dpi draws characters
|
||||||
* approximately 12 pixels high.
|
* approximately 12 pixels high.
|
||||||
*
|
*
|
||||||
* @spacing sets the line spacing, in points. It would typicallly be something
|
* @spacing sets the line spacing, in points. It would typicallly be something
|
||||||
* like font size times 1.2.
|
* like font size times 1.2.
|
||||||
*
|
*
|
||||||
|
* @gravity determines the position of the text inside the bounds. This is only
|
||||||
|
* applied opportunistically if the bounds are bigger than the text
|
||||||
|
*
|
||||||
* See also: vips_xyz(), vips_text(), vips_gaussnoise().
|
* See also: vips_xyz(), vips_text(), vips_gaussnoise().
|
||||||
*
|
*
|
||||||
* Returns: 0 on success, -1 on error
|
* Returns: 0 on success, -1 on error
|
||||||
|
@ -38,6 +38,18 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /*__cplusplus*/
|
#endif /*__cplusplus*/
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
VIPS_GRAVITY_CENTER,
|
||||||
|
VIPS_GRAVITY_NORTH,
|
||||||
|
VIPS_GRAVITY_EAST,
|
||||||
|
VIPS_GRAVITY_SOUTH,
|
||||||
|
VIPS_GRAVITY_WEST,
|
||||||
|
VIPS_GRAVITY_NORTH_EAST,
|
||||||
|
VIPS_GRAVITY_SOUTH_EAST,
|
||||||
|
VIPS_GRAVITY_SOUTH_WEST,
|
||||||
|
VIPS_GRAVITY_NORTH_WEST
|
||||||
|
} VipsGravity;
|
||||||
|
|
||||||
int vips_black( VipsImage **out, int width, int height, ... )
|
int vips_black( VipsImage **out, int width, int height, ... )
|
||||||
__attribute__((sentinel));
|
__attribute__((sentinel));
|
||||||
|
|
||||||
|
@ -6,50 +6,14 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
/* enumerations from "../../../libvips/include/vips/arithmetic.h" */
|
/* enumerations from "../../../libvips/include/vips/resample.h" */
|
||||||
GType vips_operation_math_get_type (void) G_GNUC_CONST;
|
GType vips_kernel_get_type (void) G_GNUC_CONST;
|
||||||
#define VIPS_TYPE_OPERATION_MATH (vips_operation_math_get_type())
|
#define VIPS_TYPE_KERNEL (vips_kernel_get_type())
|
||||||
GType vips_operation_math2_get_type (void) G_GNUC_CONST;
|
GType vips_size_get_type (void) G_GNUC_CONST;
|
||||||
#define VIPS_TYPE_OPERATION_MATH2 (vips_operation_math2_get_type())
|
#define VIPS_TYPE_SIZE (vips_size_get_type())
|
||||||
GType vips_operation_round_get_type (void) G_GNUC_CONST;
|
/* enumerations from "../../../libvips/include/vips/create.h" */
|
||||||
#define VIPS_TYPE_OPERATION_ROUND (vips_operation_round_get_type())
|
GType vips_gravity_get_type (void) G_GNUC_CONST;
|
||||||
GType vips_operation_relational_get_type (void) G_GNUC_CONST;
|
#define VIPS_TYPE_GRAVITY (vips_gravity_get_type())
|
||||||
#define VIPS_TYPE_OPERATION_RELATIONAL (vips_operation_relational_get_type())
|
|
||||||
GType vips_operation_boolean_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_OPERATION_BOOLEAN (vips_operation_boolean_get_type())
|
|
||||||
GType vips_operation_complex_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_OPERATION_COMPLEX (vips_operation_complex_get_type())
|
|
||||||
GType vips_operation_complex2_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_OPERATION_COMPLEX2 (vips_operation_complex2_get_type())
|
|
||||||
GType vips_operation_complexget_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_OPERATION_COMPLEXGET (vips_operation_complexget_get_type())
|
|
||||||
/* enumerations from "../../../libvips/include/vips/basic.h" */
|
|
||||||
GType vips_precision_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_PRECISION (vips_precision_get_type())
|
|
||||||
/* enumerations from "../../../libvips/include/vips/colour.h" */
|
|
||||||
GType vips_intent_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_INTENT (vips_intent_get_type())
|
|
||||||
GType vips_pcs_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_PCS (vips_pcs_get_type())
|
|
||||||
/* enumerations from "../../../libvips/include/vips/conversion.h" */
|
|
||||||
GType vips_extend_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_EXTEND (vips_extend_get_type())
|
|
||||||
GType vips_direction_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_DIRECTION (vips_direction_get_type())
|
|
||||||
GType vips_align_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_ALIGN (vips_align_get_type())
|
|
||||||
GType vips_angle_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_ANGLE (vips_angle_get_type())
|
|
||||||
GType vips_angle45_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_ANGLE45 (vips_angle45_get_type())
|
|
||||||
GType vips_interesting_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_INTERESTING (vips_interesting_get_type())
|
|
||||||
/* enumerations from "../../../libvips/include/vips/convolution.h" */
|
|
||||||
GType vips_combine_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_COMBINE (vips_combine_get_type())
|
|
||||||
/* enumerations from "../../../libvips/include/vips/draw.h" */
|
|
||||||
GType vips_combine_mode_get_type (void) G_GNUC_CONST;
|
|
||||||
#define VIPS_TYPE_COMBINE_MODE (vips_combine_mode_get_type())
|
|
||||||
/* enumerations from "../../../libvips/include/vips/foreign.h" */
|
/* enumerations from "../../../libvips/include/vips/foreign.h" */
|
||||||
GType vips_foreign_flags_get_type (void) G_GNUC_CONST;
|
GType vips_foreign_flags_get_type (void) G_GNUC_CONST;
|
||||||
#define VIPS_TYPE_FOREIGN_FLAGS (vips_foreign_flags_get_type())
|
#define VIPS_TYPE_FOREIGN_FLAGS (vips_foreign_flags_get_type())
|
||||||
@ -71,6 +35,39 @@ GType vips_foreign_dz_depth_get_type (void) G_GNUC_CONST;
|
|||||||
#define VIPS_TYPE_FOREIGN_DZ_DEPTH (vips_foreign_dz_depth_get_type())
|
#define VIPS_TYPE_FOREIGN_DZ_DEPTH (vips_foreign_dz_depth_get_type())
|
||||||
GType vips_foreign_dz_container_get_type (void) G_GNUC_CONST;
|
GType vips_foreign_dz_container_get_type (void) G_GNUC_CONST;
|
||||||
#define VIPS_TYPE_FOREIGN_DZ_CONTAINER (vips_foreign_dz_container_get_type())
|
#define VIPS_TYPE_FOREIGN_DZ_CONTAINER (vips_foreign_dz_container_get_type())
|
||||||
|
/* enumerations from "../../../libvips/include/vips/arithmetic.h" */
|
||||||
|
GType vips_operation_math_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_OPERATION_MATH (vips_operation_math_get_type())
|
||||||
|
GType vips_operation_math2_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_OPERATION_MATH2 (vips_operation_math2_get_type())
|
||||||
|
GType vips_operation_round_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_OPERATION_ROUND (vips_operation_round_get_type())
|
||||||
|
GType vips_operation_relational_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_OPERATION_RELATIONAL (vips_operation_relational_get_type())
|
||||||
|
GType vips_operation_boolean_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_OPERATION_BOOLEAN (vips_operation_boolean_get_type())
|
||||||
|
GType vips_operation_complex_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_OPERATION_COMPLEX (vips_operation_complex_get_type())
|
||||||
|
GType vips_operation_complex2_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_OPERATION_COMPLEX2 (vips_operation_complex2_get_type())
|
||||||
|
GType vips_operation_complexget_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_OPERATION_COMPLEXGET (vips_operation_complexget_get_type())
|
||||||
|
/* enumerations from "../../../libvips/include/vips/conversion.h" */
|
||||||
|
GType vips_extend_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_EXTEND (vips_extend_get_type())
|
||||||
|
GType vips_direction_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_DIRECTION (vips_direction_get_type())
|
||||||
|
GType vips_align_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_ALIGN (vips_align_get_type())
|
||||||
|
GType vips_angle_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_ANGLE (vips_angle_get_type())
|
||||||
|
GType vips_angle45_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_ANGLE45 (vips_angle45_get_type())
|
||||||
|
GType vips_interesting_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_INTERESTING (vips_interesting_get_type())
|
||||||
|
/* enumerations from "../../../libvips/include/vips/util.h" */
|
||||||
|
GType vips_token_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_TOKEN (vips_token_get_type())
|
||||||
/* enumerations from "../../../libvips/include/vips/image.h" */
|
/* enumerations from "../../../libvips/include/vips/image.h" */
|
||||||
GType vips_demand_style_get_type (void) G_GNUC_CONST;
|
GType vips_demand_style_get_type (void) G_GNUC_CONST;
|
||||||
#define VIPS_TYPE_DEMAND_STYLE (vips_demand_style_get_type())
|
#define VIPS_TYPE_DEMAND_STYLE (vips_demand_style_get_type())
|
||||||
@ -84,23 +81,29 @@ GType vips_coding_get_type (void) G_GNUC_CONST;
|
|||||||
#define VIPS_TYPE_CODING (vips_coding_get_type())
|
#define VIPS_TYPE_CODING (vips_coding_get_type())
|
||||||
GType vips_access_get_type (void) G_GNUC_CONST;
|
GType vips_access_get_type (void) G_GNUC_CONST;
|
||||||
#define VIPS_TYPE_ACCESS (vips_access_get_type())
|
#define VIPS_TYPE_ACCESS (vips_access_get_type())
|
||||||
/* enumerations from "../../../libvips/include/vips/morphology.h" */
|
/* enumerations from "../../../libvips/include/vips/colour.h" */
|
||||||
GType vips_operation_morphology_get_type (void) G_GNUC_CONST;
|
GType vips_intent_get_type (void) G_GNUC_CONST;
|
||||||
#define VIPS_TYPE_OPERATION_MORPHOLOGY (vips_operation_morphology_get_type())
|
#define VIPS_TYPE_INTENT (vips_intent_get_type())
|
||||||
/* enumerations from "../../../libvips/include/vips/object.h" */
|
GType vips_pcs_get_type (void) G_GNUC_CONST;
|
||||||
GType vips_argument_flags_get_type (void) G_GNUC_CONST;
|
#define VIPS_TYPE_PCS (vips_pcs_get_type())
|
||||||
#define VIPS_TYPE_ARGUMENT_FLAGS (vips_argument_flags_get_type())
|
|
||||||
/* enumerations from "../../../libvips/include/vips/operation.h" */
|
/* enumerations from "../../../libvips/include/vips/operation.h" */
|
||||||
GType vips_operation_flags_get_type (void) G_GNUC_CONST;
|
GType vips_operation_flags_get_type (void) G_GNUC_CONST;
|
||||||
#define VIPS_TYPE_OPERATION_FLAGS (vips_operation_flags_get_type())
|
#define VIPS_TYPE_OPERATION_FLAGS (vips_operation_flags_get_type())
|
||||||
/* enumerations from "../../../libvips/include/vips/resample.h" */
|
/* enumerations from "../../../libvips/include/vips/convolution.h" */
|
||||||
GType vips_kernel_get_type (void) G_GNUC_CONST;
|
GType vips_combine_get_type (void) G_GNUC_CONST;
|
||||||
#define VIPS_TYPE_KERNEL (vips_kernel_get_type())
|
#define VIPS_TYPE_COMBINE (vips_combine_get_type())
|
||||||
GType vips_size_get_type (void) G_GNUC_CONST;
|
/* enumerations from "../../../libvips/include/vips/morphology.h" */
|
||||||
#define VIPS_TYPE_SIZE (vips_size_get_type())
|
GType vips_operation_morphology_get_type (void) G_GNUC_CONST;
|
||||||
/* enumerations from "../../../libvips/include/vips/util.h" */
|
#define VIPS_TYPE_OPERATION_MORPHOLOGY (vips_operation_morphology_get_type())
|
||||||
GType vips_token_get_type (void) G_GNUC_CONST;
|
/* enumerations from "../../../libvips/include/vips/draw.h" */
|
||||||
#define VIPS_TYPE_TOKEN (vips_token_get_type())
|
GType vips_combine_mode_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_COMBINE_MODE (vips_combine_mode_get_type())
|
||||||
|
/* enumerations from "../../../libvips/include/vips/basic.h" */
|
||||||
|
GType vips_precision_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_PRECISION (vips_precision_get_type())
|
||||||
|
/* enumerations from "../../../libvips/include/vips/object.h" */
|
||||||
|
GType vips_argument_flags_get_type (void) G_GNUC_CONST;
|
||||||
|
#define VIPS_TYPE_ARGUMENT_FLAGS (vips_argument_flags_get_type())
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /*VIPS_ENUM_TYPES_H*/
|
#endif /*VIPS_ENUM_TYPES_H*/
|
||||||
|
@ -4,384 +4,69 @@
|
|||||||
/* auto-generated enums for vips introspection */
|
/* auto-generated enums for vips introspection */
|
||||||
|
|
||||||
#include <vips/vips.h>
|
#include <vips/vips.h>
|
||||||
/* enumerations from "../../libvips/include/vips/arithmetic.h" */
|
/* enumerations from "../../libvips/include/vips/resample.h" */
|
||||||
GType
|
GType
|
||||||
vips_operation_math_get_type( void )
|
vips_kernel_get_type( void )
|
||||||
{
|
{
|
||||||
static GType etype = 0;
|
static GType etype = 0;
|
||||||
|
|
||||||
if( etype == 0 ) {
|
if( etype == 0 ) {
|
||||||
static const GEnumValue values[] = {
|
static const GEnumValue values[] = {
|
||||||
{VIPS_OPERATION_MATH_SIN, "VIPS_OPERATION_MATH_SIN", "sin"},
|
{VIPS_KERNEL_NEAREST, "VIPS_KERNEL_NEAREST", "nearest"},
|
||||||
{VIPS_OPERATION_MATH_COS, "VIPS_OPERATION_MATH_COS", "cos"},
|
{VIPS_KERNEL_LINEAR, "VIPS_KERNEL_LINEAR", "linear"},
|
||||||
{VIPS_OPERATION_MATH_TAN, "VIPS_OPERATION_MATH_TAN", "tan"},
|
{VIPS_KERNEL_CUBIC, "VIPS_KERNEL_CUBIC", "cubic"},
|
||||||
{VIPS_OPERATION_MATH_ASIN, "VIPS_OPERATION_MATH_ASIN", "asin"},
|
{VIPS_KERNEL_LANCZOS2, "VIPS_KERNEL_LANCZOS2", "lanczos2"},
|
||||||
{VIPS_OPERATION_MATH_ACOS, "VIPS_OPERATION_MATH_ACOS", "acos"},
|
{VIPS_KERNEL_LANCZOS3, "VIPS_KERNEL_LANCZOS3", "lanczos3"},
|
||||||
{VIPS_OPERATION_MATH_ATAN, "VIPS_OPERATION_MATH_ATAN", "atan"},
|
{VIPS_KERNEL_LAST, "VIPS_KERNEL_LAST", "last"},
|
||||||
{VIPS_OPERATION_MATH_LOG, "VIPS_OPERATION_MATH_LOG", "log"},
|
|
||||||
{VIPS_OPERATION_MATH_LOG10, "VIPS_OPERATION_MATH_LOG10", "log10"},
|
|
||||||
{VIPS_OPERATION_MATH_EXP, "VIPS_OPERATION_MATH_EXP", "exp"},
|
|
||||||
{VIPS_OPERATION_MATH_EXP10, "VIPS_OPERATION_MATH_EXP10", "exp10"},
|
|
||||||
{VIPS_OPERATION_MATH_LAST, "VIPS_OPERATION_MATH_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
{0, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsOperationMath", values );
|
etype = g_enum_register_static( "VipsKernel", values );
|
||||||
}
|
}
|
||||||
|
|
||||||
return( etype );
|
return( etype );
|
||||||
}
|
}
|
||||||
GType
|
GType
|
||||||
vips_operation_math2_get_type( void )
|
vips_size_get_type( void )
|
||||||
{
|
{
|
||||||
static GType etype = 0;
|
static GType etype = 0;
|
||||||
|
|
||||||
if( etype == 0 ) {
|
if( etype == 0 ) {
|
||||||
static const GEnumValue values[] = {
|
static const GEnumValue values[] = {
|
||||||
{VIPS_OPERATION_MATH2_POW, "VIPS_OPERATION_MATH2_POW", "pow"},
|
{VIPS_SIZE_BOTH, "VIPS_SIZE_BOTH", "both"},
|
||||||
{VIPS_OPERATION_MATH2_WOP, "VIPS_OPERATION_MATH2_WOP", "wop"},
|
{VIPS_SIZE_UP, "VIPS_SIZE_UP", "up"},
|
||||||
{VIPS_OPERATION_MATH2_LAST, "VIPS_OPERATION_MATH2_LAST", "last"},
|
{VIPS_SIZE_DOWN, "VIPS_SIZE_DOWN", "down"},
|
||||||
|
{VIPS_SIZE_FORCE, "VIPS_SIZE_FORCE", "force"},
|
||||||
|
{VIPS_SIZE_LAST, "VIPS_SIZE_LAST", "last"},
|
||||||
{0, NULL, NULL}
|
{0, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsOperationMath2", values );
|
etype = g_enum_register_static( "VipsSize", values );
|
||||||
}
|
}
|
||||||
|
|
||||||
return( etype );
|
return( etype );
|
||||||
}
|
}
|
||||||
|
/* enumerations from "../../libvips/include/vips/create.h" */
|
||||||
GType
|
GType
|
||||||
vips_operation_round_get_type( void )
|
vips_gravity_get_type( void )
|
||||||
{
|
{
|
||||||
static GType etype = 0;
|
static GType etype = 0;
|
||||||
|
|
||||||
if( etype == 0 ) {
|
if( etype == 0 ) {
|
||||||
static const GEnumValue values[] = {
|
static const GEnumValue values[] = {
|
||||||
{VIPS_OPERATION_ROUND_RINT, "VIPS_OPERATION_ROUND_RINT", "rint"},
|
{VIPS_GRAVITY_CENTER, "VIPS_GRAVITY_CENTER", "center"},
|
||||||
{VIPS_OPERATION_ROUND_CEIL, "VIPS_OPERATION_ROUND_CEIL", "ceil"},
|
{VIPS_GRAVITY_NORTH, "VIPS_GRAVITY_NORTH", "north"},
|
||||||
{VIPS_OPERATION_ROUND_FLOOR, "VIPS_OPERATION_ROUND_FLOOR", "floor"},
|
{VIPS_GRAVITY_EAST, "VIPS_GRAVITY_EAST", "east"},
|
||||||
{VIPS_OPERATION_ROUND_LAST, "VIPS_OPERATION_ROUND_LAST", "last"},
|
{VIPS_GRAVITY_SOUTH, "VIPS_GRAVITY_SOUTH", "south"},
|
||||||
|
{VIPS_GRAVITY_WEST, "VIPS_GRAVITY_WEST", "west"},
|
||||||
|
{VIPS_GRAVITY_NORTH_EAST, "VIPS_GRAVITY_NORTH_EAST", "north-east"},
|
||||||
|
{VIPS_GRAVITY_SOUTH_EAST, "VIPS_GRAVITY_SOUTH_EAST", "south-east"},
|
||||||
|
{VIPS_GRAVITY_SOUTH_WEST, "VIPS_GRAVITY_SOUTH_WEST", "south-west"},
|
||||||
|
{VIPS_GRAVITY_NORTH_WEST, "VIPS_GRAVITY_NORTH_WEST", "north-west"},
|
||||||
{0, NULL, NULL}
|
{0, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsOperationRound", values );
|
etype = g_enum_register_static( "VipsGravity", values );
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_operation_relational_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_OPERATION_RELATIONAL_EQUAL, "VIPS_OPERATION_RELATIONAL_EQUAL", "equal"},
|
|
||||||
{VIPS_OPERATION_RELATIONAL_NOTEQ, "VIPS_OPERATION_RELATIONAL_NOTEQ", "noteq"},
|
|
||||||
{VIPS_OPERATION_RELATIONAL_LESS, "VIPS_OPERATION_RELATIONAL_LESS", "less"},
|
|
||||||
{VIPS_OPERATION_RELATIONAL_LESSEQ, "VIPS_OPERATION_RELATIONAL_LESSEQ", "lesseq"},
|
|
||||||
{VIPS_OPERATION_RELATIONAL_MORE, "VIPS_OPERATION_RELATIONAL_MORE", "more"},
|
|
||||||
{VIPS_OPERATION_RELATIONAL_MOREEQ, "VIPS_OPERATION_RELATIONAL_MOREEQ", "moreeq"},
|
|
||||||
{VIPS_OPERATION_RELATIONAL_LAST, "VIPS_OPERATION_RELATIONAL_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsOperationRelational", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_operation_boolean_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_OPERATION_BOOLEAN_AND, "VIPS_OPERATION_BOOLEAN_AND", "and"},
|
|
||||||
{VIPS_OPERATION_BOOLEAN_OR, "VIPS_OPERATION_BOOLEAN_OR", "or"},
|
|
||||||
{VIPS_OPERATION_BOOLEAN_EOR, "VIPS_OPERATION_BOOLEAN_EOR", "eor"},
|
|
||||||
{VIPS_OPERATION_BOOLEAN_LSHIFT, "VIPS_OPERATION_BOOLEAN_LSHIFT", "lshift"},
|
|
||||||
{VIPS_OPERATION_BOOLEAN_RSHIFT, "VIPS_OPERATION_BOOLEAN_RSHIFT", "rshift"},
|
|
||||||
{VIPS_OPERATION_BOOLEAN_LAST, "VIPS_OPERATION_BOOLEAN_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsOperationBoolean", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_operation_complex_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_OPERATION_COMPLEX_POLAR, "VIPS_OPERATION_COMPLEX_POLAR", "polar"},
|
|
||||||
{VIPS_OPERATION_COMPLEX_RECT, "VIPS_OPERATION_COMPLEX_RECT", "rect"},
|
|
||||||
{VIPS_OPERATION_COMPLEX_CONJ, "VIPS_OPERATION_COMPLEX_CONJ", "conj"},
|
|
||||||
{VIPS_OPERATION_COMPLEX_LAST, "VIPS_OPERATION_COMPLEX_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsOperationComplex", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_operation_complex2_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_OPERATION_COMPLEX2_CROSS_PHASE, "VIPS_OPERATION_COMPLEX2_CROSS_PHASE", "cross-phase"},
|
|
||||||
{VIPS_OPERATION_COMPLEX2_LAST, "VIPS_OPERATION_COMPLEX2_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsOperationComplex2", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_operation_complexget_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_OPERATION_COMPLEXGET_REAL, "VIPS_OPERATION_COMPLEXGET_REAL", "real"},
|
|
||||||
{VIPS_OPERATION_COMPLEXGET_IMAG, "VIPS_OPERATION_COMPLEXGET_IMAG", "imag"},
|
|
||||||
{VIPS_OPERATION_COMPLEXGET_LAST, "VIPS_OPERATION_COMPLEXGET_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsOperationComplexget", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
/* enumerations from "../../libvips/include/vips/basic.h" */
|
|
||||||
GType
|
|
||||||
vips_precision_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_PRECISION_INTEGER, "VIPS_PRECISION_INTEGER", "integer"},
|
|
||||||
{VIPS_PRECISION_FLOAT, "VIPS_PRECISION_FLOAT", "float"},
|
|
||||||
{VIPS_PRECISION_APPROXIMATE, "VIPS_PRECISION_APPROXIMATE", "approximate"},
|
|
||||||
{VIPS_PRECISION_LAST, "VIPS_PRECISION_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsPrecision", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
/* enumerations from "../../libvips/include/vips/colour.h" */
|
|
||||||
GType
|
|
||||||
vips_intent_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_INTENT_PERCEPTUAL, "VIPS_INTENT_PERCEPTUAL", "perceptual"},
|
|
||||||
{VIPS_INTENT_RELATIVE, "VIPS_INTENT_RELATIVE", "relative"},
|
|
||||||
{VIPS_INTENT_SATURATION, "VIPS_INTENT_SATURATION", "saturation"},
|
|
||||||
{VIPS_INTENT_ABSOLUTE, "VIPS_INTENT_ABSOLUTE", "absolute"},
|
|
||||||
{VIPS_INTENT_LAST, "VIPS_INTENT_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsIntent", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_pcs_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_PCS_LAB, "VIPS_PCS_LAB", "lab"},
|
|
||||||
{VIPS_PCS_XYZ, "VIPS_PCS_XYZ", "xyz"},
|
|
||||||
{VIPS_PCS_LAST, "VIPS_PCS_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsPCS", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
/* enumerations from "../../libvips/include/vips/conversion.h" */
|
|
||||||
GType
|
|
||||||
vips_extend_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_EXTEND_BLACK, "VIPS_EXTEND_BLACK", "black"},
|
|
||||||
{VIPS_EXTEND_COPY, "VIPS_EXTEND_COPY", "copy"},
|
|
||||||
{VIPS_EXTEND_REPEAT, "VIPS_EXTEND_REPEAT", "repeat"},
|
|
||||||
{VIPS_EXTEND_MIRROR, "VIPS_EXTEND_MIRROR", "mirror"},
|
|
||||||
{VIPS_EXTEND_WHITE, "VIPS_EXTEND_WHITE", "white"},
|
|
||||||
{VIPS_EXTEND_BACKGROUND, "VIPS_EXTEND_BACKGROUND", "background"},
|
|
||||||
{VIPS_EXTEND_LAST, "VIPS_EXTEND_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsExtend", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_direction_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_DIRECTION_HORIZONTAL, "VIPS_DIRECTION_HORIZONTAL", "horizontal"},
|
|
||||||
{VIPS_DIRECTION_VERTICAL, "VIPS_DIRECTION_VERTICAL", "vertical"},
|
|
||||||
{VIPS_DIRECTION_LAST, "VIPS_DIRECTION_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsDirection", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_align_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_ALIGN_LOW, "VIPS_ALIGN_LOW", "low"},
|
|
||||||
{VIPS_ALIGN_CENTRE, "VIPS_ALIGN_CENTRE", "centre"},
|
|
||||||
{VIPS_ALIGN_HIGH, "VIPS_ALIGN_HIGH", "high"},
|
|
||||||
{VIPS_ALIGN_LAST, "VIPS_ALIGN_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsAlign", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_angle_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_ANGLE_D0, "VIPS_ANGLE_D0", "d0"},
|
|
||||||
{VIPS_ANGLE_D90, "VIPS_ANGLE_D90", "d90"},
|
|
||||||
{VIPS_ANGLE_D180, "VIPS_ANGLE_D180", "d180"},
|
|
||||||
{VIPS_ANGLE_D270, "VIPS_ANGLE_D270", "d270"},
|
|
||||||
{VIPS_ANGLE_LAST, "VIPS_ANGLE_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsAngle", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_angle45_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_ANGLE45_D0, "VIPS_ANGLE45_D0", "d0"},
|
|
||||||
{VIPS_ANGLE45_D45, "VIPS_ANGLE45_D45", "d45"},
|
|
||||||
{VIPS_ANGLE45_D90, "VIPS_ANGLE45_D90", "d90"},
|
|
||||||
{VIPS_ANGLE45_D135, "VIPS_ANGLE45_D135", "d135"},
|
|
||||||
{VIPS_ANGLE45_D180, "VIPS_ANGLE45_D180", "d180"},
|
|
||||||
{VIPS_ANGLE45_D225, "VIPS_ANGLE45_D225", "d225"},
|
|
||||||
{VIPS_ANGLE45_D270, "VIPS_ANGLE45_D270", "d270"},
|
|
||||||
{VIPS_ANGLE45_D315, "VIPS_ANGLE45_D315", "d315"},
|
|
||||||
{VIPS_ANGLE45_LAST, "VIPS_ANGLE45_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsAngle45", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_interesting_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_INTERESTING_NONE, "VIPS_INTERESTING_NONE", "none"},
|
|
||||||
{VIPS_INTERESTING_CENTRE, "VIPS_INTERESTING_CENTRE", "centre"},
|
|
||||||
{VIPS_INTERESTING_ENTROPY, "VIPS_INTERESTING_ENTROPY", "entropy"},
|
|
||||||
{VIPS_INTERESTING_ATTENTION, "VIPS_INTERESTING_ATTENTION", "attention"},
|
|
||||||
{VIPS_INTERESTING_LAST, "VIPS_INTERESTING_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsInteresting", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
/* enumerations from "../../libvips/include/vips/convolution.h" */
|
|
||||||
GType
|
|
||||||
vips_combine_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_COMBINE_MAX, "VIPS_COMBINE_MAX", "max"},
|
|
||||||
{VIPS_COMBINE_SUM, "VIPS_COMBINE_SUM", "sum"},
|
|
||||||
{VIPS_COMBINE_LAST, "VIPS_COMBINE_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsCombine", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
/* enumerations from "../../libvips/include/vips/draw.h" */
|
|
||||||
GType
|
|
||||||
vips_combine_mode_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_COMBINE_MODE_SET, "VIPS_COMBINE_MODE_SET", "set"},
|
|
||||||
{VIPS_COMBINE_MODE_ADD, "VIPS_COMBINE_MODE_ADD", "add"},
|
|
||||||
{VIPS_COMBINE_MODE_LAST, "VIPS_COMBINE_MODE_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsCombineMode", values );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return( etype );
|
return( etype );
|
||||||
@ -587,6 +272,312 @@ vips_foreign_dz_container_get_type( void )
|
|||||||
|
|
||||||
return( etype );
|
return( etype );
|
||||||
}
|
}
|
||||||
|
/* enumerations from "../../libvips/include/vips/conversion.h" */
|
||||||
|
GType
|
||||||
|
vips_extend_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_EXTEND_BLACK, "VIPS_EXTEND_BLACK", "black"},
|
||||||
|
{VIPS_EXTEND_COPY, "VIPS_EXTEND_COPY", "copy"},
|
||||||
|
{VIPS_EXTEND_REPEAT, "VIPS_EXTEND_REPEAT", "repeat"},
|
||||||
|
{VIPS_EXTEND_MIRROR, "VIPS_EXTEND_MIRROR", "mirror"},
|
||||||
|
{VIPS_EXTEND_WHITE, "VIPS_EXTEND_WHITE", "white"},
|
||||||
|
{VIPS_EXTEND_BACKGROUND, "VIPS_EXTEND_BACKGROUND", "background"},
|
||||||
|
{VIPS_EXTEND_LAST, "VIPS_EXTEND_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsExtend", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_direction_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_DIRECTION_HORIZONTAL, "VIPS_DIRECTION_HORIZONTAL", "horizontal"},
|
||||||
|
{VIPS_DIRECTION_VERTICAL, "VIPS_DIRECTION_VERTICAL", "vertical"},
|
||||||
|
{VIPS_DIRECTION_LAST, "VIPS_DIRECTION_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsDirection", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_align_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_ALIGN_LOW, "VIPS_ALIGN_LOW", "low"},
|
||||||
|
{VIPS_ALIGN_CENTRE, "VIPS_ALIGN_CENTRE", "centre"},
|
||||||
|
{VIPS_ALIGN_HIGH, "VIPS_ALIGN_HIGH", "high"},
|
||||||
|
{VIPS_ALIGN_LAST, "VIPS_ALIGN_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsAlign", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_angle_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_ANGLE_D0, "VIPS_ANGLE_D0", "d0"},
|
||||||
|
{VIPS_ANGLE_D90, "VIPS_ANGLE_D90", "d90"},
|
||||||
|
{VIPS_ANGLE_D180, "VIPS_ANGLE_D180", "d180"},
|
||||||
|
{VIPS_ANGLE_D270, "VIPS_ANGLE_D270", "d270"},
|
||||||
|
{VIPS_ANGLE_LAST, "VIPS_ANGLE_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsAngle", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_angle45_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_ANGLE45_D0, "VIPS_ANGLE45_D0", "d0"},
|
||||||
|
{VIPS_ANGLE45_D45, "VIPS_ANGLE45_D45", "d45"},
|
||||||
|
{VIPS_ANGLE45_D90, "VIPS_ANGLE45_D90", "d90"},
|
||||||
|
{VIPS_ANGLE45_D135, "VIPS_ANGLE45_D135", "d135"},
|
||||||
|
{VIPS_ANGLE45_D180, "VIPS_ANGLE45_D180", "d180"},
|
||||||
|
{VIPS_ANGLE45_D225, "VIPS_ANGLE45_D225", "d225"},
|
||||||
|
{VIPS_ANGLE45_D270, "VIPS_ANGLE45_D270", "d270"},
|
||||||
|
{VIPS_ANGLE45_D315, "VIPS_ANGLE45_D315", "d315"},
|
||||||
|
{VIPS_ANGLE45_LAST, "VIPS_ANGLE45_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsAngle45", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_interesting_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_INTERESTING_NONE, "VIPS_INTERESTING_NONE", "none"},
|
||||||
|
{VIPS_INTERESTING_CENTRE, "VIPS_INTERESTING_CENTRE", "centre"},
|
||||||
|
{VIPS_INTERESTING_ENTROPY, "VIPS_INTERESTING_ENTROPY", "entropy"},
|
||||||
|
{VIPS_INTERESTING_ATTENTION, "VIPS_INTERESTING_ATTENTION", "attention"},
|
||||||
|
{VIPS_INTERESTING_LAST, "VIPS_INTERESTING_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsInteresting", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
/* enumerations from "../../libvips/include/vips/arithmetic.h" */
|
||||||
|
GType
|
||||||
|
vips_operation_math_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_OPERATION_MATH_SIN, "VIPS_OPERATION_MATH_SIN", "sin"},
|
||||||
|
{VIPS_OPERATION_MATH_COS, "VIPS_OPERATION_MATH_COS", "cos"},
|
||||||
|
{VIPS_OPERATION_MATH_TAN, "VIPS_OPERATION_MATH_TAN", "tan"},
|
||||||
|
{VIPS_OPERATION_MATH_ASIN, "VIPS_OPERATION_MATH_ASIN", "asin"},
|
||||||
|
{VIPS_OPERATION_MATH_ACOS, "VIPS_OPERATION_MATH_ACOS", "acos"},
|
||||||
|
{VIPS_OPERATION_MATH_ATAN, "VIPS_OPERATION_MATH_ATAN", "atan"},
|
||||||
|
{VIPS_OPERATION_MATH_LOG, "VIPS_OPERATION_MATH_LOG", "log"},
|
||||||
|
{VIPS_OPERATION_MATH_LOG10, "VIPS_OPERATION_MATH_LOG10", "log10"},
|
||||||
|
{VIPS_OPERATION_MATH_EXP, "VIPS_OPERATION_MATH_EXP", "exp"},
|
||||||
|
{VIPS_OPERATION_MATH_EXP10, "VIPS_OPERATION_MATH_EXP10", "exp10"},
|
||||||
|
{VIPS_OPERATION_MATH_LAST, "VIPS_OPERATION_MATH_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsOperationMath", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_operation_math2_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_OPERATION_MATH2_POW, "VIPS_OPERATION_MATH2_POW", "pow"},
|
||||||
|
{VIPS_OPERATION_MATH2_WOP, "VIPS_OPERATION_MATH2_WOP", "wop"},
|
||||||
|
{VIPS_OPERATION_MATH2_LAST, "VIPS_OPERATION_MATH2_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsOperationMath2", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_operation_round_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_OPERATION_ROUND_RINT, "VIPS_OPERATION_ROUND_RINT", "rint"},
|
||||||
|
{VIPS_OPERATION_ROUND_CEIL, "VIPS_OPERATION_ROUND_CEIL", "ceil"},
|
||||||
|
{VIPS_OPERATION_ROUND_FLOOR, "VIPS_OPERATION_ROUND_FLOOR", "floor"},
|
||||||
|
{VIPS_OPERATION_ROUND_LAST, "VIPS_OPERATION_ROUND_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsOperationRound", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_operation_relational_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_OPERATION_RELATIONAL_EQUAL, "VIPS_OPERATION_RELATIONAL_EQUAL", "equal"},
|
||||||
|
{VIPS_OPERATION_RELATIONAL_NOTEQ, "VIPS_OPERATION_RELATIONAL_NOTEQ", "noteq"},
|
||||||
|
{VIPS_OPERATION_RELATIONAL_LESS, "VIPS_OPERATION_RELATIONAL_LESS", "less"},
|
||||||
|
{VIPS_OPERATION_RELATIONAL_LESSEQ, "VIPS_OPERATION_RELATIONAL_LESSEQ", "lesseq"},
|
||||||
|
{VIPS_OPERATION_RELATIONAL_MORE, "VIPS_OPERATION_RELATIONAL_MORE", "more"},
|
||||||
|
{VIPS_OPERATION_RELATIONAL_MOREEQ, "VIPS_OPERATION_RELATIONAL_MOREEQ", "moreeq"},
|
||||||
|
{VIPS_OPERATION_RELATIONAL_LAST, "VIPS_OPERATION_RELATIONAL_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsOperationRelational", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_operation_boolean_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_OPERATION_BOOLEAN_AND, "VIPS_OPERATION_BOOLEAN_AND", "and"},
|
||||||
|
{VIPS_OPERATION_BOOLEAN_OR, "VIPS_OPERATION_BOOLEAN_OR", "or"},
|
||||||
|
{VIPS_OPERATION_BOOLEAN_EOR, "VIPS_OPERATION_BOOLEAN_EOR", "eor"},
|
||||||
|
{VIPS_OPERATION_BOOLEAN_LSHIFT, "VIPS_OPERATION_BOOLEAN_LSHIFT", "lshift"},
|
||||||
|
{VIPS_OPERATION_BOOLEAN_RSHIFT, "VIPS_OPERATION_BOOLEAN_RSHIFT", "rshift"},
|
||||||
|
{VIPS_OPERATION_BOOLEAN_LAST, "VIPS_OPERATION_BOOLEAN_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsOperationBoolean", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_operation_complex_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_OPERATION_COMPLEX_POLAR, "VIPS_OPERATION_COMPLEX_POLAR", "polar"},
|
||||||
|
{VIPS_OPERATION_COMPLEX_RECT, "VIPS_OPERATION_COMPLEX_RECT", "rect"},
|
||||||
|
{VIPS_OPERATION_COMPLEX_CONJ, "VIPS_OPERATION_COMPLEX_CONJ", "conj"},
|
||||||
|
{VIPS_OPERATION_COMPLEX_LAST, "VIPS_OPERATION_COMPLEX_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsOperationComplex", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_operation_complex2_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_OPERATION_COMPLEX2_CROSS_PHASE, "VIPS_OPERATION_COMPLEX2_CROSS_PHASE", "cross-phase"},
|
||||||
|
{VIPS_OPERATION_COMPLEX2_LAST, "VIPS_OPERATION_COMPLEX2_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsOperationComplex2", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_operation_complexget_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_OPERATION_COMPLEXGET_REAL, "VIPS_OPERATION_COMPLEXGET_REAL", "real"},
|
||||||
|
{VIPS_OPERATION_COMPLEXGET_IMAG, "VIPS_OPERATION_COMPLEXGET_IMAG", "imag"},
|
||||||
|
{VIPS_OPERATION_COMPLEXGET_LAST, "VIPS_OPERATION_COMPLEXGET_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsOperationComplexget", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
/* enumerations from "../../libvips/include/vips/util.h" */
|
||||||
|
GType
|
||||||
|
vips_token_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_TOKEN_LEFT, "VIPS_TOKEN_LEFT", "left"},
|
||||||
|
{VIPS_TOKEN_RIGHT, "VIPS_TOKEN_RIGHT", "right"},
|
||||||
|
{VIPS_TOKEN_STRING, "VIPS_TOKEN_STRING", "string"},
|
||||||
|
{VIPS_TOKEN_EQUALS, "VIPS_TOKEN_EQUALS", "equals"},
|
||||||
|
{VIPS_TOKEN_COMMA, "VIPS_TOKEN_COMMA", "comma"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsToken", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
/* enumerations from "../../libvips/include/vips/image.h" */
|
/* enumerations from "../../libvips/include/vips/image.h" */
|
||||||
GType
|
GType
|
||||||
vips_demand_style_get_type( void )
|
vips_demand_style_get_type( void )
|
||||||
@ -734,6 +725,85 @@ vips_access_get_type( void )
|
|||||||
|
|
||||||
return( etype );
|
return( etype );
|
||||||
}
|
}
|
||||||
|
/* enumerations from "../../libvips/include/vips/colour.h" */
|
||||||
|
GType
|
||||||
|
vips_intent_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_INTENT_PERCEPTUAL, "VIPS_INTENT_PERCEPTUAL", "perceptual"},
|
||||||
|
{VIPS_INTENT_RELATIVE, "VIPS_INTENT_RELATIVE", "relative"},
|
||||||
|
{VIPS_INTENT_SATURATION, "VIPS_INTENT_SATURATION", "saturation"},
|
||||||
|
{VIPS_INTENT_ABSOLUTE, "VIPS_INTENT_ABSOLUTE", "absolute"},
|
||||||
|
{VIPS_INTENT_LAST, "VIPS_INTENT_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsIntent", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
GType
|
||||||
|
vips_pcs_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_PCS_LAB, "VIPS_PCS_LAB", "lab"},
|
||||||
|
{VIPS_PCS_XYZ, "VIPS_PCS_XYZ", "xyz"},
|
||||||
|
{VIPS_PCS_LAST, "VIPS_PCS_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsPCS", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
/* enumerations from "../../libvips/include/vips/operation.h" */
|
||||||
|
GType
|
||||||
|
vips_operation_flags_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GFlagsValue values[] = {
|
||||||
|
{VIPS_OPERATION_NONE, "VIPS_OPERATION_NONE", "none"},
|
||||||
|
{VIPS_OPERATION_SEQUENTIAL, "VIPS_OPERATION_SEQUENTIAL", "sequential"},
|
||||||
|
{VIPS_OPERATION_SEQUENTIAL_UNBUFFERED, "VIPS_OPERATION_SEQUENTIAL_UNBUFFERED", "sequential-unbuffered"},
|
||||||
|
{VIPS_OPERATION_NOCACHE, "VIPS_OPERATION_NOCACHE", "nocache"},
|
||||||
|
{VIPS_OPERATION_DEPRECATED, "VIPS_OPERATION_DEPRECATED", "deprecated"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_flags_register_static( "VipsOperationFlags", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
/* enumerations from "../../libvips/include/vips/convolution.h" */
|
||||||
|
GType
|
||||||
|
vips_combine_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_COMBINE_MAX, "VIPS_COMBINE_MAX", "max"},
|
||||||
|
{VIPS_COMBINE_SUM, "VIPS_COMBINE_SUM", "sum"},
|
||||||
|
{VIPS_COMBINE_LAST, "VIPS_COMBINE_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsCombine", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
/* enumerations from "../../libvips/include/vips/morphology.h" */
|
/* enumerations from "../../libvips/include/vips/morphology.h" */
|
||||||
GType
|
GType
|
||||||
vips_operation_morphology_get_type( void )
|
vips_operation_morphology_get_type( void )
|
||||||
@ -753,6 +823,45 @@ vips_operation_morphology_get_type( void )
|
|||||||
|
|
||||||
return( etype );
|
return( etype );
|
||||||
}
|
}
|
||||||
|
/* enumerations from "../../libvips/include/vips/draw.h" */
|
||||||
|
GType
|
||||||
|
vips_combine_mode_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_COMBINE_MODE_SET, "VIPS_COMBINE_MODE_SET", "set"},
|
||||||
|
{VIPS_COMBINE_MODE_ADD, "VIPS_COMBINE_MODE_ADD", "add"},
|
||||||
|
{VIPS_COMBINE_MODE_LAST, "VIPS_COMBINE_MODE_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsCombineMode", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
|
/* enumerations from "../../libvips/include/vips/basic.h" */
|
||||||
|
GType
|
||||||
|
vips_precision_get_type( void )
|
||||||
|
{
|
||||||
|
static GType etype = 0;
|
||||||
|
|
||||||
|
if( etype == 0 ) {
|
||||||
|
static const GEnumValue values[] = {
|
||||||
|
{VIPS_PRECISION_INTEGER, "VIPS_PRECISION_INTEGER", "integer"},
|
||||||
|
{VIPS_PRECISION_FLOAT, "VIPS_PRECISION_FLOAT", "float"},
|
||||||
|
{VIPS_PRECISION_APPROXIMATE, "VIPS_PRECISION_APPROXIMATE", "approximate"},
|
||||||
|
{VIPS_PRECISION_LAST, "VIPS_PRECISION_LAST", "last"},
|
||||||
|
{0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
etype = g_enum_register_static( "VipsPrecision", values );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( etype );
|
||||||
|
}
|
||||||
/* enumerations from "../../libvips/include/vips/object.h" */
|
/* enumerations from "../../libvips/include/vips/object.h" */
|
||||||
GType
|
GType
|
||||||
vips_argument_flags_get_type( void )
|
vips_argument_flags_get_type( void )
|
||||||
@ -778,90 +887,6 @@ vips_argument_flags_get_type( void )
|
|||||||
|
|
||||||
return( etype );
|
return( etype );
|
||||||
}
|
}
|
||||||
/* enumerations from "../../libvips/include/vips/operation.h" */
|
|
||||||
GType
|
|
||||||
vips_operation_flags_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GFlagsValue values[] = {
|
|
||||||
{VIPS_OPERATION_NONE, "VIPS_OPERATION_NONE", "none"},
|
|
||||||
{VIPS_OPERATION_SEQUENTIAL, "VIPS_OPERATION_SEQUENTIAL", "sequential"},
|
|
||||||
{VIPS_OPERATION_SEQUENTIAL_UNBUFFERED, "VIPS_OPERATION_SEQUENTIAL_UNBUFFERED", "sequential-unbuffered"},
|
|
||||||
{VIPS_OPERATION_NOCACHE, "VIPS_OPERATION_NOCACHE", "nocache"},
|
|
||||||
{VIPS_OPERATION_DEPRECATED, "VIPS_OPERATION_DEPRECATED", "deprecated"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_flags_register_static( "VipsOperationFlags", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
/* enumerations from "../../libvips/include/vips/resample.h" */
|
|
||||||
GType
|
|
||||||
vips_kernel_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_KERNEL_NEAREST, "VIPS_KERNEL_NEAREST", "nearest"},
|
|
||||||
{VIPS_KERNEL_LINEAR, "VIPS_KERNEL_LINEAR", "linear"},
|
|
||||||
{VIPS_KERNEL_CUBIC, "VIPS_KERNEL_CUBIC", "cubic"},
|
|
||||||
{VIPS_KERNEL_LANCZOS2, "VIPS_KERNEL_LANCZOS2", "lanczos2"},
|
|
||||||
{VIPS_KERNEL_LANCZOS3, "VIPS_KERNEL_LANCZOS3", "lanczos3"},
|
|
||||||
{VIPS_KERNEL_LAST, "VIPS_KERNEL_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsKernel", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
GType
|
|
||||||
vips_size_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_SIZE_BOTH, "VIPS_SIZE_BOTH", "both"},
|
|
||||||
{VIPS_SIZE_UP, "VIPS_SIZE_UP", "up"},
|
|
||||||
{VIPS_SIZE_DOWN, "VIPS_SIZE_DOWN", "down"},
|
|
||||||
{VIPS_SIZE_FORCE, "VIPS_SIZE_FORCE", "force"},
|
|
||||||
{VIPS_SIZE_LAST, "VIPS_SIZE_LAST", "last"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsSize", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
/* enumerations from "../../libvips/include/vips/util.h" */
|
|
||||||
GType
|
|
||||||
vips_token_get_type( void )
|
|
||||||
{
|
|
||||||
static GType etype = 0;
|
|
||||||
|
|
||||||
if( etype == 0 ) {
|
|
||||||
static const GEnumValue values[] = {
|
|
||||||
{VIPS_TOKEN_LEFT, "VIPS_TOKEN_LEFT", "left"},
|
|
||||||
{VIPS_TOKEN_RIGHT, "VIPS_TOKEN_RIGHT", "right"},
|
|
||||||
{VIPS_TOKEN_STRING, "VIPS_TOKEN_STRING", "string"},
|
|
||||||
{VIPS_TOKEN_EQUALS, "VIPS_TOKEN_EQUALS", "equals"},
|
|
||||||
{VIPS_TOKEN_COMMA, "VIPS_TOKEN_COMMA", "comma"},
|
|
||||||
{0, NULL, NULL}
|
|
||||||
};
|
|
||||||
|
|
||||||
etype = g_enum_register_static( "VipsToken", values );
|
|
||||||
}
|
|
||||||
|
|
||||||
return( etype );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Generated data ends here */
|
/* Generated data ends here */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user