From aa783514cf5a3f592173aff7b0f9c95ff38cc1e0 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Mon, 25 Nov 2019 17:48:44 +0000 Subject: [PATCH] update TOC for docs and update translation files --- TODO | 439 ---------------------------------------- doc/libvips-docs.xml.in | 2 + po/POTFILES.in | 21 +- 3 files changed, 22 insertions(+), 440 deletions(-) delete mode 100644 TODO diff --git a/TODO b/TODO deleted file mode 100644 index 967dcc6b..00000000 --- a/TODO +++ /dev/null @@ -1,439 +0,0 @@ -- try - - $ vips gaussmat x.mat 0.1 0.1 - (vips:28376): GLib-GObject-WARNING **: value "-1" of type 'gint' is invalid or out of range for property 'width' of type 'gint' - (vips:28376): GLib-GObject-WARNING **: value "-1" of type 'gint' is invalid or out of range for property 'height' of type 'gint' - $ more x.mat - 1 1 0 0 - 5.55604e+180 - - check numeric range of SIGMA args, we should standardize - -- rewind should break more things ... does it remove upsteam/downstream? does it - just need to remove reorder links? - - perhaps reorder should use upstream/downstream, then it will be broken anyway - -- not sure about utf8 error messages on win - -- strange: - - $ vips similarity --scale 0.33 k2.jpg x.v - $ vipsheader k2.jpg - k2.jpg: 1450x2048 uchar, 3 bands, srgb, jpegload - $ vipsheader x.v - x.v: 478x676 uchar, 3 bands, srgb, jpegload - - 1450 * 0.33 = 478.5 ... this was rounded down - 2048 * 0.33 = 675.84 ... this was rounded up - -- add APPROX convsep test? - -- add more webp tests to py suite - -- try moving some more of the CLI tests to py - -- colour needs to split _build() into preprocess / process / postprocess - phases - - in icc_import, for example, we want to check that the supplied profile is - compatible with the input image as it will be when unpacked and ready for - process_line - - see vips_image_expected_bands() in icc_transform.c for the current hacky - solution - - - -- use the incremental webp decoding api to support seq for webp images - - https://developers.google.com/speed/webp/docs/api#decodingadvancedapi - - doesn't seem to be possible - -- does ruby need to unpack RefString as well? what about C++? - -- are the mosaic functions calling vips_fastcor()? it must be very slow - - add vips_fastcor_direct() - - nope .. it's im_chkpair.c:im_correl() - - im_extract_area(main) - im_extract_area(sub) - im_extract_band(main) - im_extract_band(sub) - im_spcor(sub) - im_maxpos(sub) - - then im__chkpair() runs that 20 times, then loops ... oh dear - -- perhaps im_maxpos_subpel() / im_minpos_subpel() should be undeprecated, - useful with vips_fastcor() - - - -- why can't we do - - im = Vips.Image.new_from_file("/data/john/pics/k2.jpg", access = "sequential") - - no idea ... this works fine: - - im.embed(10, 10, 100, 100, extend = "copy") - - test: - - op = Vips.Operation.new("embed") - op.props.__setattr__("extend", "copy") - op = Vips.Operation.new("jpegload") - op.props.__setattr__("access", "sequential") - - first setattr works fine, second fails with invalid literal - - - - -- test other cpp arg types - - input int works - input double - input enum works - input image works - input doublevec - input imagevec - input blob - - output int - output double works - output enum - output image works - output doublevec - output imagevec - output blob - - we probably need to unpack the ink back to double before blending - - - -- ink to vec etc must have a way to give a complex constant - - eg. drawink needs a --ink_imag option with the imaginary components of the - ink - - look for uses of vips__vector_to_ink() and add extra params to other places - too, eg. vips_embed(), vips_insert() etc. - -- vips__ink_to_vector() needs an optional imag return - -- vips_getpoint() needs an optional imag return - -- add porter-duff compositing, see - - https://github.com/libvips/ruby-vips/issues/28 - -- now vips_linear() has uchar output, can we do something with orc? - -- do restrict on some more packages, we've just done arithmetic so far - - also resample, colour, some of conversion, create, - -- maybe avg? - - but avg doesn't subclass arithmetic, so we can't - -- for interpolate, we'd need to be able to unroll the vector, so the - interpolator would need to be built for the bands / stride / type of the - image - - need new API For this since interpolators currently work for any image - -- vips_gaussblur() should switch to float prec if given a float image? - - same for vips_conv()? - - maybe precision is a dumb thing - -- support --strip for other writers - -- vipsthumbnail could shrink-on-load openslide and pyr tiff as well? - - we have "shrink" for jpegload, move this into the base loader - - support it for tiff and openslide as well - - use it from nip2 for zooming? only if the partial flag is set though, we - don't want to use it on jpg files - - - -- quadratic doesn't work for order 3 - - start to get jaggies on lines --- the 3rd differential isn't being - initialised correctly for the sub-region? - - seems fine vertically, only get errors on horizontal tile boundaries - - because we step across tiles left to right: y doesn't change, only x does - - not sure it works for order 2 either, we are seeing interpolation errors - on image edges - - -mosaic -====== - -- balance should use new meta stuff - -- histogram balance option? - - -resample -======== - -- check mosaic1, global_balance, similarity etc. use of im__affine - - how can we move them to im_affinei ? - -- perspective transform with a matrix ... base it on the Lenz transformer, but - partial - - -foreign -======= - -- magick2vips should spot ICC profiles and attach them as meta - -- interlaced jpg needs massive memory, we should have two jpg read modes, like - png - -- add more sequential mode readers - - $ grep -l write_line *.c - csv.c - matlab.c - openexr2vips.c - ppm.c - radiance.c - -- foreign docs come up as "VipsForeignSave", annoying, why? - -- add nifti support - - http://niftilib.sourceforge.net/ - -- add matlab write - -- im_exr2vips can now use c++ api - - see TODO notes in openexr read (though they all need more openexr C API) - - consider openexr write - -- magick should set some header field for n_frames and frame_height? see also - analyze - -- im_csv2vips() could use "-" for filename to mean stdin - - but then we'd have to read to a malloced buffer of some sort rather than an - image, since we might need to grow it during the read, since we couldn't - then seek - - -packaging -========= - -- test _O_TEMPORARY thing on Windows - - -convolution -=========== - -- revisit orc conv - - use an 8.8 accumulator ... build the scale into the 8.8 coeffs ... no div at - the end, just a shift - - need 8 x 8.8 -> 8.8 for each coeff though - -- im_conv()/im_morph() could have more than 10 programs? try 20 and see if we - still have a speedup - - make a base class for vector area operations with a matrix with three vfuncs - for init / generate code for one element / end and a gslist of programs, use - that as the base for morph and conv - - wait for vipsobject for this - -- we have aconv and aconvsep - - test timing, make sure it;s worth having a separate aconvsep version - - if it is, make im_aconvsep an optimisation: call im_aconvsep_raw() from - vips_conv() if mask width or height == 1 and prec == APPROX - - now we can get rid of im_aconvsep() since it's just vips_convsep() with prec - set to approx - - aconv needs some more work, get it going at least with gaussian - - -arithmetic -========== - -- HAVE_HYPOT could define a hypot() macro? - -- fix a better NaN policy - - should we not generate images containing NaN (eg. divide tries to avoid /0), - or should vips_max() etc. try to avoid NaN in images (eg. vips_max() takes a - lot a care to skip NaN, though vips_stats() does not)? - - -iofuncs -======= - -- need vips_image_invalidate_area() - -- look at libpeas for plugin support - - http://live.gnome.org/Libpeas - -- how about - - vips max add[babe.jpg,babe2.jpg] - - does that make any sense? - - vips copy add[babe.jpg,add[babe2.jpg,babe3.jpg]] sum.v - - perhaps use curly brackets for code? - - vips max add{babe.jpg,babe2.jpg} - - no brackets or square brackets for options - -- transform_g_string_array_image() can't handle quoted strings, so filenames - with spaces will break - - is there an easy fix? can we reuse code from the csv parser? - - the csv parser just parses FILE* streams, we'd need to break it out - -- note member free stuff in vipsobject docs - - should boxed get freed in finalise rather than dispose? - - vipsobject has few docs atm :( - -- vips_object_set_argument_from_string() needs more arg types - - must be some way to make this more automatic - -- generate the code for vips_add() etc. automatically? it might be - nice to have them all in one place at least - -- what does G_UNLIKELY() do? can we use it? - -- look into G_GNUC_DEPRECATED for back compat in vips8 - -- should im_rwcheck() copy to disc? - - maybe im_rwcheck_disc() copies to im->filename and maps that - - rather awkward to do atm with the way check.c is structured - - -swig -==== - -- swig is not wrapping im_project() correctly ... returns an extra VImage via - a param - -- doc strings would be nice, read the SWIG notes on this - - -new bindings -============ - -- new binding is still missing constants - - how do boxed types work? confusing - - we need to be able to make a VipsArrayDouble - -- Vips.Image has members like chain, __subclasshook__ etc etc, are we - really subclassing it correctly? - -- add __add__ etc overloads - - -freq_filt -========= - -- fft with odd width or height is broken ... DC ends up in the wrong place - - -libvipsCC -========= - -- need new C++ API - -- need an im_init_world() for C++ which does cmd-line args too, so C++ progs - can get --vips-progress and stuff automatically - - -tools -===== - -- need a way to make the vips.1 etc. man pages - - gtk has things like docs/reference/gtk/gtk-update-icon-cache.xml and man - pages are made from that with xslt - -- get rid of a lot of the command-line programs, who wants to write a man page - for batch_image_convert etc yuk - -- can we make man pages for the API as well? probably not from googling a bit - -- rename header, edvips as vipsheader, vipsedit - - maybe have back compat links? - - -new operations -============== - -- bilateral filtering, see: - - http://en.wikipedia.org/wiki/Bilateral_filter - http://www.shellandslate.com/fastmedian.html - http://people.csail.mit.edu/sparis/bf_course/ - - also a mail from Martin Breidt has links to several fast free C - implementations - -- http://en.wikipedia.org/wiki/Otsu%27s_method - -- non-linear sharpen: replace each pixel by the lightest or darkest neighbour - depending on which is closer in value - -- look at - - There is an order 1 algorithm for doing medians over boxes (truly O(1) - per pixel: I checked it carefully; it's like doing means over boxes in - order 1 per pixel) in OpenCV since February 2012 I think, due to - Perreault (and Hebert). - - It appears to be well respected, at least for 8-bit medians. Very - memory intensive. Simple and elegant. No clue if it fits VIPS well - (probably not?). - - Article: nomis80.org/ctmf.pdf - -- see - - http://www.dentistry.bham.ac.uk/landinig/software/cdeconv/cdeconv.html - - http://www.nature.com/srep/2015/150730/srep12096/full/srep12096.html - - sounds useful for BM? diff --git a/doc/libvips-docs.xml.in b/doc/libvips-docs.xml.in index 3bbcc671..26226f54 100644 --- a/doc/libvips-docs.xml.in +++ b/doc/libvips-docs.xml.in @@ -61,6 +61,8 @@ + + diff --git a/po/POTFILES.in b/po/POTFILES.in index 756d0e31..def0d58e 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -74,6 +74,7 @@ libvips/conversion/bandjoin.c libvips/conversion/wrap.c libvips/conversion/arrayjoin.c libvips/conversion/premultiply.c +libvips/conversion/switch.c libvips/conversion/scale.c libvips/conversion/flatten.c libvips/conversion/conversion.c @@ -196,7 +197,6 @@ libvips/foreign/openslide2vips.c libvips/foreign/matrixsave.c libvips/foreign/tiffsave.c libvips/foreign/magickload.c -libvips/foreign/ppm.c libvips/foreign/jpegsave.c libvips/foreign/webpload.c libvips/foreign/gifload.c @@ -241,18 +241,23 @@ libvips/histogram/hist_ismonotonic.c libvips/histogram/hist_equal.c libvips/histogram/maplut.c libvips/histogram/hist_unary.c +libvips/histogram/case.c libvips/histogram/hist_local.c libvips/introspect.c +libvips/iofuncs/streamo.c libvips/iofuncs/sinkscreen.c libvips/iofuncs/vipsmarshal.c libvips/iofuncs/init.c libvips/iofuncs/dbuf.c libvips/iofuncs/buffer.c libvips/iofuncs/operation.c +libvips/iofuncs/bufis.c libvips/iofuncs/sinkmemory.c libvips/iofuncs/window.c libvips/iofuncs/reorder.c +libvips/iofuncs/streamou.c libvips/iofuncs/base64.c +libvips/iofuncs/streami.c libvips/iofuncs/memory.c libvips/iofuncs/sinkdisc.c libvips/iofuncs/region.c @@ -263,6 +268,7 @@ libvips/iofuncs/cache.c libvips/iofuncs/type.c libvips/iofuncs/semaphore.c libvips/iofuncs/gate.c +libvips/iofuncs/streamiu.c libvips/iofuncs/mapfile.c libvips/iofuncs/sink.c libvips/iofuncs/enumtypes.c @@ -271,6 +277,7 @@ libvips/iofuncs/header.c libvips/iofuncs/error.c libvips/iofuncs/generate.c libvips/iofuncs/image.c +libvips/iofuncs/stream.c libvips/iofuncs/threadpool.c libvips/iofuncs/buf.c libvips/iofuncs/system.c @@ -319,6 +326,7 @@ tools/vipsheader.c tools/vipsthumbnail.c cplusplus/include/vips/VError8.h cplusplus/include/vips/vips-operators.h +cplusplus/include/vips/VStream8.h cplusplus/include/vips/VImage8.h cplusplus/include/vips/VInterpolate8.h libvips/arithmetic/binary.h @@ -372,6 +380,8 @@ libvips/include/vips/vector.h libvips/include/vips/cimg_funcs.h libvips/include/vips/dbuf.h libvips/include/vips/error.h +libvips/include/vips/stream.h +libvips/include/vips/bufis.h libvips/include/vips/type.h libvips/include/vips/create.h libvips/include/vips/generate.h @@ -404,10 +414,19 @@ libvips/mosaicing/pmosaicing.h libvips/mosaicing/global_balance.h libvips/resample/presample.h libvips/resample/templates.h +cplusplus/examples/invert.cpp +cplusplus/examples/avg.cpp +cplusplus/examples/test.cpp +cplusplus/examples/resize.cpp +cplusplus/examples/buffer.cpp +cplusplus/examples/embed.cpp +cplusplus/examples/profile.cpp +cplusplus/examples/test_overloads.cpp cplusplus/VError.cpp cplusplus/VImage.cpp cplusplus/VInterpolate.cpp cplusplus/vips-operators.cpp +cplusplus/VStream.cpp libvips/conversion/composite.cpp libvips/resample/reduceh.cpp libvips/resample/vsqbs.cpp