Commit Graph

49 Commits

Author SHA1 Message Date
John Cupitt cb1927e1b7 make C and vector path for composite match
one was <, one was <= for HARD_LIGHT
no effect on result, but it's better if they are consistent
2022-06-03 16:15:51 +01:00
Kleis Auke Wolthuizen 0337c09700
Cleanup gettext handling (#2695)
Use GLib's i18n support instead of copying and pasting that
logic into its own header. This deprecates the vips/intl.h
header in favour of glib/gi18n.h.
2022-02-27 15:27:28 +00:00
John Cupitt c5f2fea8bf fix a gcc warning with clang pragmas 2022-02-22 10:06:43 +00:00
John Cupitt f39e2e271d don't invalidate in sinkscreen
it was called from a bg thread and could race when under heavy load, eg.
vipsdisp displaying animated jpg images
2021-06-06 16:53:00 +01:00
Kleis Auke Wolthuizen 305714c978 Move max_band_vec to first position 2021-03-23 16:47:53 +01:00
Kleis Auke Wolthuizen e7faebf6af Tell the compiler that v4f is aligned
It's guaranteed that this is now aligned on a 16-byte boundary.
2021-03-20 11:33:37 +01:00
Kleis Auke Wolthuizen 5ef9c84f97 Use cross-platform functions for allocating aligned memory
A malloc library is expected to provide a better implementation.
2021-03-15 11:10:16 +01:00
Kleis Auke Wolthuizen a55513a194 Ensure max_band vector is aligned on a 16-byte boundary
See https://github.com/mstorsjo/llvm-mingw/issues/190
2021-03-12 14:27:19 +01:00
John Cupitt c9af99c2f7 add CMYK as a compositing space
might work!
2020-06-27 12:08:25 +01:00
John Cupitt 73c1331439 swap abs() for fabs() in composite
The non-vector fallback path had abs(double). Thanks brcarp.

See https://github.com/libvips/libvips/issues/1572
2020-03-11 09:08:39 +00:00
John Cupitt 8b1817ddd0 fix a couple of clang warnings 2019-08-09 15:22:56 +01:00
John Cupitt ad98222073 better behaviour for vips_region_fetch()
we weren't clipping the fetch area against region valid, so in some
cases we could return many more pixels than expected

see https://github.com/libvips/pyvips/issues/103
2019-06-09 20:38:13 +01:00
John Cupitt 5657099223 fix composite for some combinations of blend modes
composite could get mixed up blend modes if:

- many images being composited
- some small and positioned with x/y
- at least one unskippable blend mode

phew!
2019-06-04 15:24:54 +01:00
John Cupitt d5ca1ddfd4 all tested and working
revised formula for in/out/dest-in/dest-out, for vector and scalar paths

see https://github.com/libvips/libvips/issues/1301
2019-05-08 18:16:40 +01:00
John Cupitt b100f5a025 start revising composite again
we can get ugly sparkles in transparent areas in some cases ... start
reworking some modes

see https://github.com/libvips/libvips/issues/1301
2019-04-29 07:43:14 +01:00
John Cupitt 6bc564a1e1 turn on smalltile
2D locality helps a lot with many subimages
2018-12-07 16:43:44 +00:00
John Cupitt 2a32a95be9 new subimage code for composite done!
seems to work, passes all tests
2018-12-07 16:11:58 +00:00
John Cupitt 7b19ad8dc1 composite subimage positioning almost done
--x fails though? odd

vips composite2 Gugg_coloured.jpg PNG_transparency.png x.jpg over --x 600 --y 100

--x causes the dice to clip, but not translate
2018-12-06 18:28:55 +00:00
John Cupitt 2c26c23163 composite in scanlines, not pixels
try compositing a scanline at a time, should improve cache locality for
deep image stacks

seems to work, needs benchmarking
2018-11-27 18:27:38 +00:00
John Cupitt e6f271df10 remove stop-at-solid feature
We used to stop compositing when we reached the first solid image, but
that only works for modes like OVER.

Instead, composite all images, regardless of transparency.

See https://github.com/libvips/libvips/issues/928
2018-11-27 14:51:56 +00:00
Lovell Fuller ec2ad85279 Silence 'missing sentinel' warnings in GCC v6+ 2018-09-04 11:00:39 +01:00
John Cupitt 3b1e3e1841 add Mitchell kernel
see https://github.com/jcupitt/libvips/issues/966
2018-06-12 12:55:10 +01:00
John Cupitt cc29a13cc7 revise composite position code slightly
- move x/y into composite and out of composite base, have separate x/y int
params for composite2
- upsize later for a small speed improvement
- doc comment
- note in changelog

see https://github.com/jcupitt/libvips/pull/934
2018-06-11 17:04:29 +01:00
John Cupitt 8693179ef2
Merge pull request #934 from medakk/compositexy
Adding x,y arguments to vips_composite
2018-06-11 16:00:29 +01:00
Angel Sánchez 7125608904 WinSDK stdlib.h has only abs function for int, long, long long and __int64 parameteres, cstdlib has the abs function with a double parameter 2018-05-31 14:00:35 +02:00
Karthik Karanth 8d04dab0db remove unnecessary args in composite2 2018-04-09 13:14:03 +05:30
Karthik Karanth d06f420763 use vips_embed to position images 2018-04-09 12:57:21 +05:30
Karthik Karanth e406015fe8 add args 2018-04-07 13:57:27 +05:30
John Cupitt 421f659d33 allow 1 mode in composite
reused for all joins

see https://github.com/jcupitt/pyvips/issues/30
2018-01-30 10:12:03 +00:00
John Cupitt 5fd2ecf81d remove limit on n image in composite
composite was limited to a max of 64 images ... remove the limit

see https://github.com/jcupitt/pyvips/issues/30
2018-01-30 09:48:34 +00:00
John Cupitt 97a4ed2ca9 fix a c++ warning
see https://github.com/jcupitt/libvips/pull/864
2018-01-26 07:56:43 +00:00
John Cupitt 94f458ed04 fix some compiler warnings 2017-12-13 15:49:12 +00:00
John Cupitt c5139a0e50 doc fixups
various small things; fix the docs for composite, reduceh and reducev
2017-12-04 13:42:31 +00:00
John Cupitt b876f1d904 try to fix composite docs 2017-12-04 10:40:43 +00:00
John Cupitt 14fd2af396 add composite2 class
so we have a nice CLI interface to the new operator
2017-11-30 12:47:56 +00:00
John Cupitt 61fc94946a reverse order of arrays in composite
base first now ... makes a better API for bindings
2017-10-08 12:27:49 +01:00
John Cupitt f0aeed1c64 regenerate cpp binding for new methods 2017-10-06 16:39:52 +01:00
John Cupitt 95c8a1915b all doneo
seems to work!
2017-10-06 16:00:54 +01:00
John Cupitt f430209a47 more getting ready 2017-10-06 08:19:44 +01:00
John Cupitt df8a2f4802 move to a prescale / unprescale model
our own prescale / unprescale loops
2017-10-05 15:42:44 +01:00
John Cupitt 07d6424a3e fix compositing space
typo
2017-10-03 17:51:35 +01:00
John Cupitt ce4a3bc5f6 speedups, add missing paths, docs 2017-10-02 15:34:49 +01:00
John Cupitt 9f62b963b9 test for C++ vector arithmetic
clang seems to have shuffle but not mixed vector and scalar
2017-10-02 10:23:06 +01:00
John Cupitt 7b9c969e39 test for vector shuffle 2017-10-02 09:22:06 +01:00
John Cupitt 99568356ab add a configure test for vector_size 2017-10-02 08:17:11 +01:00
John Cupitt 645618592c off by one error 2017-10-01 19:52:54 +01:00
John Cupitt 3a43fd4057 vectorize 3 band case
needs to test for gcc though
2017-10-01 19:07:02 +01:00
John Cupitt 37ef9c2074 whitespace 2017-09-29 12:44:37 +01:00
John Cupitt 7dda5810f9 rewrite composite in c++
easier to read, will be easier to add PDF operators
2017-09-29 11:54:42 +01:00