Merge branch '8.2'

This commit is contained in:
John Cupitt 2016-03-24 16:09:44 +00:00
commit ec5cdf4fff
4 changed files with 112 additions and 10 deletions

View File

@ -21,6 +21,9 @@
- switches to disable PPM, Rad and Analyze support
- added VIPS_COUNT_PIXELS(), overcomputation tracking
24/3/16 started 8.2.4
- fix nohalo and vsqbs interpolators, thanks Rafael
27/1/16 started 8.2.3
- fix a crash with SPARC byte-order labq vips images
- fix parsing of filenames containing brackets, thanks shilpi230

99
doc/libvips-docs.xml Normal file
View File

@ -0,0 +1,99 @@
<?xml version="1.0"?>
<!-- vim: set ts=2 sw=2 expandtab: -->
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
[
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
]>
<book id="index">
<bookinfo>
<title>VIPS Reference Manual</title>
<releaseinfo>
For VIPS 8.2.4.
The latest version of this documentation can be found on the
<ulink role="online-location"
url="http://www.vips.ecs.soton.ac.uk/index.php?title=Documentation">VIPS website</ulink>.
</releaseinfo>
</bookinfo>
<chapter>
<title>VIPS Overview</title>
<para>
VIPS is a free image processing system. It is good with large
images (images larger than the amount of RAM you have available), with
many CPUs (speed scales linearly to at least 32 threads), for working
with colour, for scientific analysis and for general research
and development. As well as JPEG, TIFF and PNG images, it also
supports scientific formats like FITS, Matlab, Analyze, PFM,
Radiance and OpenSlide. It works on many UNIX-like platforms,
as well as Windows and OS X. VIPS is released under the GNU Library
General Public License (GNU LGPL).
</para>
<xi:include href="xml/using-command-line.xml"/>
<xi:include href="xml/using-C.xml"/>
<xi:include href="xml/using-python.xml"/>
<xi:include href="xml/using-cpp.xml"/>
<xi:include href="xml/binding.xml"/>
<xi:include href="xml/extending.xml"/>
<xi:include href="xml/function-list.xml"/>
<xi:include href="xml/file-format.xml"/>
<xi:include href="xml/using-threads.xml"/>
</chapter>
<chapter>
<title>Core VIPS API</title>
<xi:include href="xml/vips.xml"/>
<xi:include href="xml/image.xml"/>
<xi:include href="xml/header.xml"/>
<xi:include href="xml/generate.xml"/>
<xi:include href="xml/operation.xml"/>
<xi:include href="xml/error.xml"/>
<xi:include href="xml/memory.xml"/>
<xi:include href="xml/region.xml"/>
<xi:include href="xml/type.xml"/>
<xi:include href="xml/rect.xml"/>
<xi:include href="xml/object.xml"/>
<xi:include href="xml/threadpool.xml"/>
<xi:include href="xml/buf.xml"/>
<xi:include href="xml/basic.xml"/>
</chapter>
<chapter>
<title>VIPS operation API by section</title>
<xi:include href="xml/arithmetic.xml"/>
<xi:include href="xml/colour.xml"/>
<xi:include href="xml/conversion.xml"/>
<xi:include href="xml/convolution.xml"/>
<xi:include href="xml/foreign.xml"/>
<xi:include href="xml/freqfilt.xml"/>
<xi:include href="xml/histogram.xml"/>
<xi:include href="xml/draw.xml"/>
<xi:include href="xml/interpolate.xml"/>
<xi:include href="xml/morphology.xml"/>
<xi:include href="xml/mosaicing.xml"/>
<xi:include href="xml/create.xml"/>
<xi:include href="xml/resample.xml"/>
</chapter>
<chapter>
<title>Other API (no gtkdoc comments yet)</title>
<xi:include href="xml/transform.xml"/>
<xi:include href="xml/util.xml"/>
<xi:include href="xml/version.xml"/>
<xi:include href="xml/semaphore.xml"/>
</chapter>
<chapter id="object-tree">
<title>Object Hierarchy</title>
<xi:include href="xml/tree_index.sgml"/>
</chapter>
<index id="api-index-full">
<title>API Index</title>
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
</index>
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
</book>

View File

@ -1493,8 +1493,8 @@ vips_interpolate_nohalo_interpolate( VipsInterpolate* restrict interpolate,
*
* It's 2 not 0 since we ask for a window_offset of 2 at the bottom.
*/
const int ix = (int) absolute_x;
const int iy = (int) absolute_y;
const int ix = (int) (absolute_x + 0.5);
const int iy = (int) (absolute_y + 0.5);
/*
* Move the pointer to (the first band of) the top/left pixel of the
@ -1523,8 +1523,8 @@ vips_interpolate_nohalo_interpolate( VipsInterpolate* restrict interpolate,
g_assert( ix - 2 >= in->valid.left );
g_assert( iy - 2 >= in->valid.top );
g_assert( ix + 2 < VIPS_RECT_RIGHT( &in->valid ) );
g_assert( iy + 2 < VIPS_RECT_BOTTOM( &in->valid ) );
g_assert( ix + 2 <= VIPS_RECT_RIGHT( &in->valid ) );
g_assert( iy + 2 <= VIPS_RECT_BOTTOM( &in->valid ) );
/* Confirm that absolute_x and absolute_y are >= 2, see above.
*/
@ -1586,7 +1586,7 @@ vips_interpolate_nohalo_class_init( VipsInterpolateNohaloClass *klass )
_( "edge sharpening resampler with halo reduction" );
interpolate_class->interpolate = vips_interpolate_nohalo_interpolate;
interpolate_class->window_size = 5;
interpolate_class->window_size = 6;
interpolate_class->window_offset = 2;
}

View File

@ -313,8 +313,8 @@ vips_interpolate_vsqbs_interpolate( VipsInterpolate* restrict interpolate,
*
* It's 1 not 0 since we ask for a window_offset of 1 at the bottom.
*/
const int ix = (int) absolute_x;
const int iy = (int) absolute_y;
const int ix = (int) (absolute_x + 0.5);
const int iy = (int) (absolute_y + 0.5);
/*
* Move the pointer to (the first band of) the top/left pixel of the
@ -343,8 +343,8 @@ vips_interpolate_vsqbs_interpolate( VipsInterpolate* restrict interpolate,
g_assert( ix - 1 >= in->valid.left );
g_assert( iy - 1 >= in->valid.top );
g_assert( ix + 1 < VIPS_RECT_RIGHT( &in->valid ) );
g_assert( iy + 1 < VIPS_RECT_BOTTOM( &in->valid ) );
g_assert( ix + 1 <= VIPS_RECT_RIGHT( &in->valid ) );
g_assert( iy + 1 <= VIPS_RECT_BOTTOM( &in->valid ) );
/* Confirm that absolute_x and absolute_y are >= 1, see above.
*/
@ -405,7 +405,7 @@ vips_interpolate_vsqbs_class_init( VipsInterpolateVsqbsClass *klass )
object_class->description = _( "B-Splines with antialiasing smoothing" );
interpolate_class->interpolate = vips_interpolate_vsqbs_interpolate;
interpolate_class->window_size = 3;
interpolate_class->window_size = 4;
interpolate_class->window_offset = 1;
}