libvips/TODO

236 lines
6.3 KiB
Plaintext
Raw Normal View History

2008-08-21 10:32:24 +02:00
- have vips -> gvalue and gvalue -> vips methods in type struct
converters need arg flags too, so they know whether it's read or write
is this enough? maybe
2008-08-19 10:01:23 +02:00
- do we need init functions? maybe for arrays I guess
should gvalues be inited to a specific type?
2008-08-21 10:32:24 +02:00
2008-08-19 18:54:55 +02:00
- we need init functions which are parameterizied for the specific value
2008-08-19 10:01:23 +02:00
2008-08-19 18:54:55 +02:00
im_value_double_init( value, 12.3 )
2008-08-19 10:01:23 +02:00
2008-08-19 18:54:55 +02:00
im_value_array_init( value, 4, arrayptr )
2008-08-19 10:01:23 +02:00
2008-08-19 18:54:55 +02:00
im_value_image_init( value, im_open( "poop", "r" ) )
the problem is that init will generally be done by the app: the app needs to
do the build-vips-value-from-my-data conversion, and since it is doing that
build, it needs to do the free as well
alternative: init from a GValue?
then we do GValue -> vips build, so we can free as well
apps need to do internal -> GValue, then call vips to dispatch
no point :( and slower
move all init/free stuff out of type, just have malloc/free with a sizeof
and perhaps some utility functions to build vips format structures and free
them
2008-08-19 16:06:09 +02:00
2008-08-17 13:28:52 +02:00
- needs docs in vips manual for format stuff I guess
2008-08-16 19:03:45 +02:00
2008-08-15 23:45:18 +02:00
- operations and jesper's types should all use the new register/unregister
model
support backwards compat by calling im_operation_register() automatically
if we see a package_table symbol
2008-08-16 19:03:45 +02:00
have new structs with new fields under new names? eg. jesper wants something
to write to a string
2008-08-17 13:28:52 +02:00
though we have to pass (almost) the same structs to UIs argh and we can't
change them
2008-08-16 19:03:45 +02:00
2008-08-17 13:28:52 +02:00
jesper wants to add another field to im_type_desc ... so, keep im_type_desc
as is and define a new struct im_type_t with the extra fields
2008-08-16 19:03:45 +02:00
2008-08-17 13:28:52 +02:00
when we load a package, call im_type_register with the known fields
2008-08-15 23:45:18 +02:00
2008-08-17 13:28:52 +02:00
check other use cases eg. nip2, python, c++, vips.c
2008-08-15 23:45:18 +02:00
2008-08-17 13:28:52 +02:00
reread the plugin section in the vipsmanual and think about compat
2008-08-15 23:45:18 +02:00
2008-08-17 13:28:52 +02:00
- junk package system?
2008-08-15 10:40:05 +02:00
2008-08-17 13:28:52 +02:00
plugin init
2008-08-15 10:40:05 +02:00
2008-08-17 13:28:52 +02:00
const char *g_module_check_init (GModule *)
2008-08-15 10:40:05 +02:00
2008-08-17 13:28:52 +02:00
null for success, or errormsg
2008-08-15 10:40:05 +02:00
- more cleanups to the handling of vips format images, esp. we have vips write
spread across many files atm
- could remove a lot of crappy old API
- it'd be nice to handle vips format images in the same im_format system, but
it's not clear if this is possible
- we sometimes name types with a trailing _t, but only sometimes, argh
should im_format become im_format_t? what's the current naming convention?
should be add _t variants for all types?
2008-08-17 13:28:52 +02:00
add new type names, eg. im_region_t, im_image_t etc. and deprecate old
names?
sigh or maybe VipsRegion, VipsImage
2008-08-15 10:40:05 +02:00
- when we open with a mmap window and later do im_incheck(), do we remap the
whole file?
2008-08-09 15:30:35 +02:00
2008-05-12 20:16:38 +02:00
- try
libsrc/convolution$ grep -l offsets *.c
could we do the don't calc offsets thing unless bpl; changes thing in more
places?
2008-05-14 20:08:30 +02:00
- docs include figures twice! yuk
fixed? not sure, check again
2008-01-23 18:16:30 +01:00
2008-06-24 12:37:54 +02:00
- unsharp should work on GREY16? should be easy to add GREY16->LABS
2008-02-29 19:37:05 +01:00
no, labs is signed short, ranges are all differrent, and the scaling will be
wrong anyway
correct: import with ICC to labs, then process, then export to RGB, take
green?
yuk, can we add a 16bit path to vips's lab <--> rgb converter?
2008-04-02 20:19:35 +02:00
use TIFF RGB16 as the 16bit RGB target
im_XYZ2disp() would be easy to 16bit ... just need the 1,500 element table
table->t_Yr2r[i] expanded
im_disp2XYZ() uses im_col_rgb2XYZ() in a loop ... again, need
the 1,500 element table table->t_r2Yr[i] expanded
usually these three tables (t_r2Yr, t_g2Yg, t_b2Yb) will be identical, can
we common them up? same for t_Yr2r etc.
how big should the table be for 16 bits? 256 times larger? too big!
2008-04-23 14:17:26 +02:00
we really just need a LUT for pow() with the right exponent, eg. 2.4 for
2008-04-02 20:19:35 +02:00
sRGBs, and one for 1/2.4 ... see what calcul_tables does:
table->t_r2Yr[i] = yo + a * pow( i * table->ristep / f + c, ga );
see
- test maxpos_avg, quite a few changes
2008-02-17 08:53:02 +01:00
- HAVE_HYPOT could define a hypot() macro?
2007-10-31 18:13:22 +01:00
2008-02-17 08:53:02 +01:00
- im_exr2vips can now use c++ api
2007-08-29 18:23:50 +02:00
- python startup fails with plugins in vipslib:
Fatal Python error: can't initialise module vips
plugin: unable to open plugin "/home/john/vips/lib/resample.plg"
plugin: /home/john/vips/lib/resample.plg: undefined symbol: im_start_one
do we need to build plugins with -rpath etc. and more libs?
or do we need to make sure our python modules export all their im_ symbols?
2008-01-16 16:18:21 +01:00
check:
http://www.swig.org/Doc1.3/SWIGDocumentation.html#Python_nn8
http://docs.python.org/dist/dist.html
2008-02-17 08:53:02 +01:00
- write our own python extension to call a vips operation by name
result = vips_call ("name", args)
then call that from VImage_method
- do we really need VImage_method? Can't we write
__getattr__ (self, name) = lambda (obj_to_call, arguments):
or something like that?
2007-08-29 18:23:50 +02:00
- TIFF load/save should use meta system for unknown tags
- balance should use new meta stuff
- magick2vips should spot ICC profiles and attach them as meta
2008-03-31 19:51:24 +02:00
- also png2vips?
2007-08-29 18:23:50 +02:00
- magick should set some header field for n_frames and frame_height? see also
analyze
- see TODO notes in openexr read (though they all need more openexr C API)
consider openexr write
- 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
- add erode/dilate 3x3 special case using a 512-bit LUT
... nope, actually slower :-( we end up doing an inner loop like
for( i = 0; i < 9; i++ )
bits |= (p[o[i]] != 0) << i;
which is horrible. Maybe if we had a one band true 1 bit image it'd be
quicker since we could get bits out in parallel and wouldn't have to worry
about converting non-zero to 1
could have a Coding type for bitpack? eg. relational produces a bitpack
image by default, boolean & morph can work on bitpack etc
maybe something for vips8 ... we could have a flag on operations for the
coding types they can accept, and if they are passed other type, they are
automatically converted
- non-linear sharpen: replace each pixel by the lightest or darkest neighbour
depending on which is closer in value
- can wrap other inplace funcs which use ink now we have vector_to_ink() in
inplace_dispatch.c
see also comments in nip2 TODO ... we could auto-wrap in vips_call.c
cleaner!
- on win32, should not write matrix files in binary mode, we want CR/LF chars
so we can load into excel etc easily
how odd, we're doing
if( !(fp = fopen( name, "w" )) ) {
shouldn't be binary ... hmm