Commit Graph

694 Commits

Author SHA1 Message Date
John Cupitt
463058c149 note and use res unit on jpg load/save
previously, jpeg save always used pixels/inch and jpeg load converted to
vips pixels/mm

now on jpg load the image's res unit is recorded in
VIPS_META_RESOLUTION_UNIT, and on jpg save the res unit is set from
VIPS_META_RESOLUTION_UNIT (or defaults to inches).

you can now copy a cm-preferring tiff to a jpg and the unit is preserved
2012-08-07 14:10:19 +01:00
John Cupitt
757e93364c Merge remote-tracking branch 'origin/7.30' 2012-08-07 13:50:43 +01:00
John Cupitt
8214d15982 more improvements to dzsave
now writes x_files and x.dzi, as per spec (thanks Benjamin)

deprecate tile_width and tile_height, just have tile_size now
2012-08-07 13:29:03 +01:00
John Cupitt
a9c7a36670 be more cautious enabling tiff ycbcr
we were turning on ycbcr for all jpeg tiffs and relying on the jpeg
compressor to only use it when possible ... now just turn on ycbcr for
8-bit RGB images
2012-08-07 12:17:25 +01:00
John Cupitt
4cb63cf1ba update the C++ binding
and the Python one
2012-08-06 22:02:34 +01:00
John Cupitt
6a6f33af1f Merge remote-tracking branch 'origin/7.30' 2012-08-06 15:22:56 +01:00
John Cupitt
9cffb5f939 Merge remote-tracking branch 'origin/master'
Conflicts:
	ChangeLog
	configure.in
2012-08-06 15:22:25 +01:00
John Cupitt
392b59e261 version bump 2012-08-06 15:14:31 +01:00
John Cupitt
3033fea933 add --vips-fatal flag
--vips-fatal causes an abort() on the first warning or error, handy for
debugging
2012-07-21 17:01:17 +01:00
John Cupitt
133ee84794 fix --without-magick etc.
the vips7 compat readers like im_exr2vips() were not guarded with ifdefs
in case their read library was missing
2012-07-20 17:18:49 +01:00
John Cupitt
7df7bb85bb add --vips-version cmdline arg
print version of libvips that a program is running against
2012-07-20 13:34:05 +01:00
John Cupitt
a71fe51d2d support "rs" mode in im_open()
vips7 compat mode now supports "rs" mode --- sequential read

ruby-vips uses this to get :sequetial=>true working
2012-07-20 13:07:49 +01:00
John Cupitt
41be00d5dd version bump for new stable 2012-07-20 10:32:20 +01:00
John Cupitt
17f6489c0e Merge remote-tracking branch 'origin/7.28'
Conflicts:
	ChangeLog
	configure.in
	libvips/deprecated/im_csv2vips.c
2012-07-18 10:39:29 +01:00
John Cupitt
4af1dabb5a don't cache write operations
we want writes to happen every time, in case the file has been deleted
by someone
2012-07-18 10:13:03 +01:00
John Cupitt
c51204e0f0 Merge remote-tracking branch 'origin/7.28'
Conflicts:
	ChangeLog
	configure.in
	libvips/deprecated/im_csv2vips.c
2012-07-17 12:16:47 +01:00
John Cupitt
467a78f32b save as ppm from vips7 with options was broken
it wrote a file with the options still in the name
2012-07-17 10:00:59 +01:00
John Cupitt
5363aace39 wopconst was wrong
struct offset astray meant that wopconst didn't work
2012-07-17 09:46:16 +01:00
John Cupitt
73f8263286 sequential can now skip ahead
vips_sequential() no longer bans all non-seq access, it just bans
rewinding --- if you ask for something some way ahead, it reads and
throws away pixels

this means VipsExtract and VipsInsert can now be seq: they will read and
throw away any stuff they don't need
2012-07-14 12:13:58 +01:00
John Cupitt
25ad2b7a53 turn off seq mode in vips7
the new sequential mode readers for tiff/jpg/png were not working well
from the vips7 command-line: they either decompressed twice, or handed
over a sequential mode image

it should now work as well as it did pre-seq.
2012-07-12 09:05:14 +01:00
John Cupitt
643dc28950 turn on seq mode automatically in cli
cli operations turn on seq mode automatically when they can

vips_operation_get_flags() added: lets you attach a set of flags to an
operation

flags for now are "nocache" (replacing the old nocache system) and "seqential"

if vips_object_set_argument_from_string() from string sees "seq" flag on the
object for which it is setting the arg, it enables sequential mode

all operations which can run sequentially have been tagged

the operation printer knows about flags and can display them
2012-07-10 10:51:40 +01:00
John Cupitt
af1f2b47c1 add "rs" image open mode 2012-07-09 21:35:53 +01:00
John Cupitt
87e37e83e2 Merge remote-tracking branch 'origin/7.28'
Conflicts:
	libvips/iofuncs/generate.c
	libvips/iofuncs/init.c
	po/vips7.pot
2012-07-09 14:09:25 +01:00
John Cupitt
8582e40307 improve use from many threads
lock around the operation cache and the upstrea/downstream link system
so vips works when used from many threads: you can now create an image
in one thread and process it in another
2012-07-09 13:47:09 +01:00
John Cupitt
89527b80eb fix odd tile height + no overlap
dzsave with zero overlap and odd height was broken

also, fix cache init
2012-07-08 10:37:35 +01:00
John Cupitt
4cfae3c4d0 Merge remote-tracking branch 'origin/7.28'
Conflicts:
	libvips/iofuncs/image.c
	po/vips7.pot
2012-07-05 16:40:33 +01:00
John Cupitt
34f25dabd5 fix tmp file handling on Windows
it wasnt working, breaking handling of non-vips files over 100mb on
Windows
2012-07-05 09:54:59 +01:00
John Cupitt
a94ce8957e Merge remote-tracking branch 'origin/7.28' 2012-07-01 11:08:02 +01:00
John Cupitt
ec53b1af74 remove refs to bicubic in docs 2012-07-01 11:06:42 +01:00
John Cupitt
3694a2edc5 add sequential mode to vips7
the tiff and jpg readers let you give :seq as well
2012-06-24 09:44:50 +01:00
John Cupitt
daac11b01c add "minimise" signal
on end of an image loop, send a "minimise" signal down the pipeline

tilecache listens for this signal on its output and drops the cache

helps reduce ruby memuse
2012-06-23 11:51:57 +01:00
John Cupitt
49fbfdd454 Merge remote-tracking branch 'origin/7.28'
Conflicts:
	ChangeLog
	configure.in
2012-06-23 10:32:36 +01:00
John Cupitt
2427b2896c slightly more memory debugging output
regions now say if they have attached memory, images say what type (eg.
partial etc) they are
2012-06-23 10:30:48 +01:00
John Cupitt
213b44894e Merge remote-tracking branch 'origin/7.28'
Conflicts:
	libvips/iofuncs/cache.c
2012-06-21 13:32:47 +01:00
John Cupitt
5243f334e1 Merge remote-tracking branch 'origin/7.28'
Conflicts:
	ChangeLog
	configure.in
	po/vips7.pot
2012-06-21 09:23:42 +01:00
John Cupitt
9bb9f59091 fixes to help centos5 2012-06-20 22:10:10 +01:00
John Cupitt
8b290ac58e changelog update 2012-06-20 09:06:54 +01:00
John Cupitt
4aa24358d8 Merge remote-tracking branch 'origin/7.28'
Conflicts:
	ChangeLog
	configure.in
	tools/vipsthumbnail.c
2012-06-19 17:24:43 +01:00
John Cupitt
2f897315ad fix a crash with corrupted jpg files
three was a double-free crash with a scrambled jpg file, thanks Grigoriy
2012-06-19 08:52:06 +01:00
John Cupitt
70b14c2f1d add vips_flatten()
... background arg not quite working
2012-06-18 14:49:39 +01:00
John Cupitt
f07fb25ab5 fix write RGBA as JPG
it was saving RGBA as CMYK JPG, with comical results (thanks Tobias)
2012-06-17 22:16:20 +01:00
John Cupitt
fdd3b0a387 remove im_rightshift_size()
there's a deprecated wrapper now
2012-06-15 18:21:25 +01:00
John Cupitt
0e9b2e3168 Merge remote-tracking branch 'origin/7.28' 2012-06-09 10:37:30 +01:00
John Cupitt
7a79b1fb6b remove G_DEFINE_BOXED_TYPE() use
was glib-2.26+ only argh, thanks Jake
2012-06-09 10:31:01 +01:00
John Cupitt
2dde7ce256 Merge remote-tracking branch 'origin/7.28'
Conflicts:
	libvips/foreign/vips2tiff.c
	po/vips7.pot
2012-06-08 19:37:03 +01:00
John Cupitt
75a68100bd fix a crash in the tiff reader
some tiffs have HUGE values for RowsPerStrip ... clip these down to
avoid confusing later bits of vips

also, a better error msg for non-contig images
2012-06-07 13:54:05 +01:00
John Cupitt
1ee48e4cd6 add nocache flag, use for sequential file ops
stop it caching sequential file read (eg. sequential tiff read), since
you can only read sequentially once
2012-06-06 19:33:11 +01:00
John Cupitt
fc3d4192d7 tiff loader always offers thinstrip
the tiff loader now always offers thinstrip ... later stages can then
pick any demand style they like (thanks Diuming)
2012-06-03 11:44:03 +01:00
John Cupitt
f65f9088f6 make jpeg pyr write work with tiff4
there was a problem with sizing tiles in chrominance subsample mode
2012-06-02 17:42:42 +01:00
John Cupitt
3de5ec9078 Merge remote-tracking branch 'origin/7.28'
Conflicts:
	libvips/iofuncs/object.c
2012-06-01 14:22:10 +01:00
John Cupitt
2cf57c123d much faster vips_argument_map()
improve the way we handle looping over args, gets us back to 7.26 speed
for example workspaces
2012-06-01 14:20:20 +01:00
John Cupitt
31eaeb5ad9 Merge remote-tracking branch 'origin/7.28' 2012-05-25 08:59:36 +01:00
John Cupitt
faa2f820c6 use TIFF_CFLAGS
the new pkg-config tiff4 tester outputs TOFF_CFLAGS ... use it (thanks
Jay)
2012-05-25 08:58:40 +01:00
John Cupitt
f19a9d9d6b Merge remote-tracking branch 'origin/7.28'
Conflicts:
	ChangeLog
	configure.in
2012-05-17 14:08:57 +01:00
John Cupitt
5cbb049ec2 version bump 2012-05-17 11:16:46 +01:00
John Cupitt
bb1dcb97ee Merge remote-tracking branch 'origin/7.28'
Conflicts:
	ChangeLog
2012-05-06 12:28:02 +01:00
John Cupitt
2bb7902ace add libtiff-4 test 2012-05-06 11:55:59 +01:00
John Cupitt
f3dd9da50a Merge remote-tracking branch 'origin/7.28'
Conflicts:
	ChangeLog
	configure.in
2012-04-19 21:39:25 +01:00
John Cupitt
2352ac1220 fix blend mode for ifthenelse
and a small blend speedup
2012-04-19 21:38:04 +01:00
John Cupitt
8e019730ba Merge remote-tracking branch 'origin/7.28'
Conflicts:
	ChangeLog
	configure.in
	po/vips7.pot
2012-04-17 21:22:35 +01:00
John Cupitt
abe43f3068 up max buf size
allows larger defs in nip2
2012-04-17 21:16:05 +01:00
John Cupitt
04c7f97cf4 prepare for release 2012-04-17 11:28:40 +01:00
John Cupitt
d3f9d0fd7d Merge remote-tracking branch 'origin/7.28' 2012-04-12 10:24:11 +01:00
John Cupitt
0290eb009d more accurate progress reporting
computation progress used to be done incrementally based on the number
of tiles allocated. This did not take account of half tiles at image
edges, so you could sometimes see "110% complete"

it's now calculated based on the absolute number of pixels processed, so
it should always report 100% at the end.
2012-04-12 10:01:17 +01:00
John Cupitt
b47ad26f50 make vips8 cache smaller 2012-04-12 08:41:40 +01:00
John Cupitt
668bf1759b Merge remote-tracking branch 'origin/7.28' 2012-04-11 12:53:33 +01:00
John Cupitt
3540e3ef09 support :level,associated in the vips7 openslide
the vips7 stub for openslide now supports :level,associated mode
options, eg:

$ header CMU-2.svs
CMU-2.svs: 19500x7615 uchar, 4 bands, rgb VipsImage (0x236a060)
$ header CMU-2.svs:2
CMU-2.svs:2: 4875x1903 uchar, 4 bands, rgb VipsImage (0x244c060)
$ header CMU-2.svs:,label
CMU-2.svs:,label: 387x463 uchar, 4 bands, rgb VipsImage (0xa2d060)
$ header CMU-2.svs:2,label
CMU-2.svs:2,label: 387x463 uchar, 4 bands, rgb VipsImage (0x1b23060)
2012-04-11 12:48:41 +01:00
John Cupitt
5ab6e2d1aa Merge remote-tracking branch 'origin/7.28' 2012-04-10 16:53:03 +01:00
John Cupitt
7af1fb34d7 cast to unsigned int did not remove <0
previously cast to uint did nothing (since the positive range of uint is
greater than int), now it changes <0 values to 0
2012-04-10 14:26:41 +01:00
John Cupitt
57cf9011e7 fix openslide read
previously it returned Cairo-style pre-multiplied argb, now it always
unpacks to png-style rgba for you

there was no real use for the coded form and it was annoying to have to
call im_argb2rgba() explicitly
2012-04-09 18:03:17 +01:00
John Cupitt
63be2e1a08 fix warning for unused vips7 gvalue arg
this fixes this warning:

$ vips im_copy_set_meta
GLib-GObject-CRITICAL **: g_value_unset: assertion `G_IS_VALUE (value)'
failed
2012-04-08 10:13:10 +01:00
John Cupitt
2b67f3e6c4 Merge remote-tracking branch 'origin/7.28'
Conflicts:
	ChangeLog
	configure.in
2012-04-06 12:15:52 +01:00
John Cupitt
d338d0fae6 fix vips_divide() for int args 2012-04-06 12:09:53 +01:00
John Cupitt
0231cdf134 Revert "add ARGB coding"
This reverts commit 78b5ad5883.

Conflicts:

	libvips/colour/im_rad2float.c
2012-04-04 17:18:32 +01:00
John Cupitt
78b5ad5883 add ARGB coding 2012-04-02 11:12:40 +01:00
John Cupitt
d930b69161 Merge remote-tracking branch 'origin/dzsave'
Conflicts:
	ChangeLog
2012-03-26 22:12:19 +01:00
John Cupitt
a2d512af73 works! 2012-03-26 22:08:59 +01:00
John Cupitt
ffb34c943c nearest0neighbor now rounds to nearest
before it just truncated x/y downs, now it rounds to nearest ... this
removes a 0.5 shift compared to the other interpolators

thanks Nicolas
2012-03-26 09:35:22 +01:00
John Cupitt
ea19e964be sort out changelog 2012-03-19 11:47:00 +00:00
John Cupitt
3f850b5f8b Merge remote-tracking branch 'origin/master'
Conflicts:
	ChangeLog
2012-03-19 11:42:31 +00:00
John Cupitt
d8000bb1b5 tiffsave xres/yres args broken
the declarations for xres/yres tiff args were all wrong
2012-03-17 17:57:46 +00:00
John Cupitt
2e7f4b2900 sanity-check PNG read line size 2012-03-15 12:53:38 +00:00
John Cupitt
78ddd55611 version bump 2012-03-15 09:54:16 +00:00
John Cupitt
922bbf0cfe version bump 2012-03-13 14:26:24 +00:00
John Cupitt
4595413e0d add ICC profile read/write for png 2012-03-13 14:22:13 +00:00
John Cupitt
3297400952 disable debug in production builds
by default all debug (including assert and cast checks) is disabled in
production builds
2012-03-02 14:19:32 +00:00
John Cupitt
5771be4186 xres/yres become double
we had them as float before to make load/save easier, but that means we
need lots of hacks to make properties work correctly

instead, convert to/from float on read/write and have them as double
internally
2012-03-02 12:54:50 +00:00
John Cupitt
58439e31fb fix filename display in "header" and friends 2012-02-29 13:49:48 +00:00
John Cupitt
9fc3c381ba require openslide 3.2.5 or greater
3.2.4 and earlier have a horrible performance problem
2012-02-24 14:31:12 +00:00
John Cupitt
8af5522a96 sequential support for the jpg reader 2012-02-19 22:17:20 +00:00
John Cupitt
fa03bfb4cd tiff reader supports new sequential mode
good speedup for large tiffs

$ time ~/vips-7.26/bin/vips-7.26 vips im_copy wtc.tif x.v
real	0m12.728s
user	0m0.220s
sys	0m1.032s

$ time vips copy wtc.tif[sequential] x.v
real	0m4.328s
user	0m0.584s
sys	0m0.764s

new one was compiled with DEBUG, hence (partly) larger user time
2012-02-18 13:17:21 +00:00
John Cupitt
3dcd3729a0 fix interlaced png read
also remove old sinkmemory
2012-02-17 17:59:09 +00:00
John Cupitt
7f94fb3597 break vips_sequential() out 2012-02-15 15:47:43 +00:00
John Cupitt
aee2999259 generic sequential read mode
moved sequential read stuff into VipsForeignLoad
2012-02-15 13:55:34 +00:00
John Cupitt
24e86ae458 better im_shrink()
faster, lower memuse, simpler
2012-02-10 10:00:39 +00:00
John Cupitt
b52785eef7 add a sequential read mode to pngload
helpful for thumbnailing
2012-02-07 14:30:54 +00:00
John Cupitt
b51faee8ca support many-returns ops in Python
add various %apply rules to move values returned via args into the result
2012-02-06 14:54:54 +00:00
John Cupitt
d38e7bea57 fix delayed write to foreign via "w"
also added vips_foreign_find_save_options()/
vips_foreign_find_load_options()
2012-02-02 15:08:57 +00:00
John Cupitt
ef2d7024bd version number bump
starting to stabilise 7.28, hopefully
2012-01-30 11:27:28 +00:00
John Cupitt
d621cd1f38 remove old fftw2 path, reduce mem use 2012-01-28 11:27:16 +00:00
John Cupitt
7330c244a4 remove the fft fallbacks
libvips had a set of fallback fft routines in case fftw was not
detected at configure time ... but they were terrible

remove them! we are fftw-only now
2012-01-27 14:48:28 +00:00
John Cupitt
56bab17678 Merge remote-tracking branch 'origin/7.26'
Conflicts:
	ChangeLog
	TODO
	configure.in
	libvips/deprecated/dispatch_types.c
	libvips/foreign/tiff2vips.c
	libvips/include/vips/image.h
	libvips/iofuncs/header.c
	libvips/iofuncs/operation.c
	po/vips7.pot
2012-01-14 14:00:41 +00:00
John Cupitt
b210d34192 interpolation CLI args were broken
thanks to speckins, broken since 7.26.4, embarassingly

I've added another test to make check to stop this happening again
2012-01-14 11:19:50 +00:00
John Cupitt
a5b3eb2040 amke vips_cache() a vips8 operation 2012-01-13 13:15:56 +00:00
John Cupitt
ae46447f5e silently truncate long strings in arg handling
we were assert()ing out before
2012-01-08 13:57:43 +00:00
John Cupitt
c190c8e660 new Python binding
just a test thing for now, but seems to work OK

some small tweaks to help gobject-introspction
2012-01-05 13:26:25 +00:00
John Cupitt
405b89b000 get goi try.py going 2012-01-02 11:06:04 +00:00
John Cupitt
49d3542cc7 remove outchecks, again 2011-12-21 19:00:32 +00:00
John Cupitt
14734596a1 move VipsFormat to deprecated 2011-12-20 15:29:33 +00:00
John Cupitt
3e45e2cd6b move rad over to the new thing 2011-12-20 14:57:05 +00:00
John Cupitt
70bde4a90d move ppm read/write to new-style 2011-12-20 09:37:07 +00:00
John Cupitt
0377920764 mvoe png load/save over 2011-12-19 21:40:08 +00:00
John Cupitt
8653913654 add new-style raw load/save 2011-12-15 10:59:05 +00:00
John Cupitt
65ed140ae3 move im_raw2vips() to a class 2011-12-14 22:51:14 +00:00
John Cupitt
25e42d1625 fix up new-style analyze load 2011-12-14 18:02:46 +00:00
John Cupitt
0137186205 move fits read/write to new-style 2011-12-13 17:50:55 +00:00
John Cupitt
a2ed2edb5d fix --without-tiff etc. 2011-12-13 13:19:20 +00:00
John Cupitt
5bc26b0b65 clean up options in image filenames
allow new-style options everywhere with the addition and use of
vips_foreign_write_options() and friends everywhere
2011-12-12 14:51:41 +00:00
John Cupitt
05fbb6b3bc fix up openslideload
there was a problem with the tile cache ... plus some small tidies
2011-12-12 11:34:28 +00:00
John Cupitt
7fe4843250 Merge remote-tracking branch 'origin/master' into format-hacking
also, start adding openslide.c to foreign

Conflicts:
	ChangeLog
	TODO
	libvips/iofuncs/image.c
2011-12-11 15:54:08 +00:00
John Cupitt
e34b6b92e9 small cleanups
minor changed to openslide.c, use PEL everywhere as the pixel pointer
type
2011-12-09 14:30:45 +00:00
John Cupitt
a43241a4e7 fix pixel addressing on 32-bit platforms
there was a size_t where there should have been a guint64, causing
addressing problems on very large images on 32-bit platforms (like
win32)

looks like this had been broken since March 2011
2011-12-08 21:38:07 +00:00
John Cupitt
7adddf7074 remove optional args to vips_call*()
Optional args to vips_call*() were broken. This is fixed correctly in
master. These are not actually used in 7.26, so we just comment the broken
code out.
2011-12-08 10:48:47 +00:00
John Cupitt
3e3c66fc32 lazy read from tiled tiff was broken 2011-12-05 22:00:01 +00:00
John Cupitt
5e037e4c68 foreign uses the cache 2011-12-02 13:15:05 +00:00
John Cupitt
878edcf4ea copy swap uses glib byte order macros
2x faster byte swapping by using the glib byte swap macros
2011-12-01 18:47:36 +00:00
John Cupitt
dd14948652 new-style jpeg save works 2011-11-25 14:34:17 +00:00
John Cupitt
173576259e move im_ri2c() to a class 2011-11-21 14:51:34 +00:00
John Cupitt
0addd7fb6d c2real(), c2imag() -> classes 2011-11-21 14:38:11 +00:00
John Cupitt
f944742c2a bandmean as a class
also moved recomb over to conversion, other small fixes
2011-11-20 09:56:02 +00:00
John Cupitt
187212768d add class for complex ops
and it does conj as well
2011-11-19 11:24:04 +00:00
John Cupitt
2f7de7f8d0 redone ifthenelse/blend as classes
relational/ can now go, woo
2011-11-15 21:49:49 +00:00
John Cupitt
a31c7d8caf added math2, various 2ary math ops 2011-11-13 17:45:27 +00:00
John Cupitt
5b133145a7 move im_shift*( to a class, remove bool package 2011-11-12 17:18:13 +00:00
John Cupitt
2d30264840 redo boolean as a class 2011-11-12 14:11:46 +00:00
John Cupitt
3c608233e5 moved remainder over to a class 2011-11-12 13:29:32 +00:00
John Cupitt
827e5311c1 finish unaryconst, move relational to it 2011-11-11 21:54:45 +00:00
John Cupitt
26ae049d91 redo binary relational as a class 2011-11-11 13:45:12 +00:00
John Cupitt
cc85f3dfe7 try to stop vips-n-xxx.v files being left in tmp
On Windows, set _O_TEMPORARY. On *nix, unlink after rewind.
2011-11-10 17:48:09 +00:00
John Cupitt
786eca0d3e use atexit() to call vips_shutdown() 2011-11-10 14:10:24 +00:00
John Cupitt
8fe50220d5 move mask/ to deprecated, add VipsRound 2011-11-10 13:53:58 +00:00
John Cupitt
f79bb525f5 rewrite im_recomb() as a class 2011-11-09 14:48:38 +00:00
John Cupitt
62859facd4 VipsStats tracks minpos/maxpos
plus some small bugfixes
2011-11-08 21:50:19 +00:00
John Cupitt
1129d897ca turn default disc thresh back to 100mb
only make temp disc files for very large (>100mb) images since they are
so often left lying around
2011-11-08 19:32:26 +00:00
John Cupitt
ff2e7b26de im_stats() redone as a class 2011-11-08 18:18:42 +00:00
John Cupitt
c80a19747f im_multiply() redone, fixes to max/min 2011-11-07 09:42:44 +00:00
John Cupitt
e5b5bed428 im_divide() -> VipsDivide 2011-11-06 22:24:42 +00:00
John Cupitt
1fd1559bb5 redo im_deviate() as a class 2011-11-06 17:59:07 +00:00
John Cupitt
77d386cdaf redo im_max()/im_maxpos() as classes 2011-11-06 17:00:44 +00:00
John Cupitt
18a969c2f8 redo im_sign() as a class 2011-11-06 12:57:13 +00:00