Commit Graph

42 Commits

Author SHA1 Message Date
Lovell Fuller
de199fe59c
Silence C++ missing sentinel warning (#2563) 2021-11-29 14:20:26 +00:00
Kleis Auke Wolthuizen
fc92290bb9
Try the new target API first in VImage::write_to_buffer (#2511)
Needed after PR #2499.
2021-11-02 13:36:27 +00:00
John Cupitt
ab464e7b31 add clang-tidy rule
with a few rules
2021-10-29 19:04:42 +01:00
Rosen Penev
fde53df4da use reserve instead of constructor
The constructor 0 initializes. reserve does not.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-07-11 17:31:17 -07:00
Rosen Penev
63f64c5055 cplusplus: fix for loop sizes
Array indeces are pointers and should use pointer sizes.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-07-11 17:31:11 -07:00
Rosen Penev
3f57c0a515 VImage: reserve vector before push_back loop
Avoids unnecessary resizes.

Found with clang-tidy's performance-inefficient-vector-operation

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2021-07-11 00:58:56 -07:00
John Cupitt
fd0a0905ff note VImage::new_from_memory_steal() in ChangeLog
plus doxy commnets etc., see https://github.com/libvips/libvips/pull/1758/
2020-09-24 10:44:49 +01:00
John Cupitt
5faf9a6326 typo in recent cpp API improvements
We had G_VALUE_TYPE instead of G_OBJECT_TYPE, oops. Thanks @lovell.

see https://github.com/libvips/libvips/pull/1812
2020-09-14 13:10:00 +01:00
John Cupitt
b42f72cd56 add a README.md for cpp 2020-09-06 17:47:46 +01:00
John Cupitt
409301a200 improve C++ API
Make VObject inheritance public, so we can have a single set() for all
VObject-derived types.
2020-08-19 15:08:28 +01:00
John Cupitt
99313edb68 fix some unknown types
We were missing VipsInterpolate and guint64. Add guint64 set() as well.

see 636e265477 (commitcomment-41589463)
2020-08-19 14:36:50 +01:00
John Cupitt
9ea91810bb revise docs for _inplace
We call vips_image_inplace() automatically now, so there's no need for
clients to use this.

see https://github.com/libvips/libvips/issues/1610
2020-04-16 12:09:07 +01:00
John Cupitt
95444d0849 rename stuff in the C++ API for stream -> source 2019-12-30 17:49:41 +00:00
John Cupitt
4c5873809f experiment with renaming stream
rename as VipsConnection, VipsSource, VipsTarget etc.

see https://github.com/libvips/libvips/issues/1494#issuecomment-569498619

renamed with this script:

```

set -e

edit() {
        sed -i -E "$1" rename
}

for i in $*; do
        cp $i rename

        edit s/VIPS_STREAMOU/VIPS_TARGET_CUSTOM/g
        edit s/VIPS_STREAMO/VIPS_TARGET/g
        edit s/VIPS_STREAMIU/VIPS_SOURCE_CUSTOM/g
        edit s/VIPS_STREAMI/VIPS_SOURCE/g
        edit s/VIPS_STREAM/VIPS_CONNECTION/g

        edit s/vips_streamou/vips_target_custom/g
        edit s/vips_streamo/vips_target/g
        edit s/vips_streamiu/vips_source_custom/g
        edit s/vips_streami/vips_source/g
        edit s/vips_stream/vips_connection/g

        edit s/VipsStreamou/VipsTargetCustom/g
        edit s/VipsStreamo/VipsTarget/g
        edit s/VipsStreamiu/VipsSourceCustom/g
        edit s/VipsStreami/VipsSource/g
        edit s/VipsStream/VipsConnection/g

        # eg. VIPS_TYPE_STREAM or VIPS_IS_STREAM
        edit "s/VIPS_([A-Z]+)_STREAMOU/VIPS_\1_TARGET_CUSTOM/g"
        edit "s/VIPS_([A-Z]+)_STREAMO/VIPS_\1_TARGET/g"
        edit "s/VIPS_([A-Z]+)_STREAMIU/VIPS_\1_SOURCE_CUSTOM/g"
        edit "s/VIPS_([A-Z]+)_STREAMI/VIPS_\1_SOURCE/g"
        edit "s/VIPS_([A-Z]+)_STREAM/VIPS_\1_CONNECTION/g"

        edit s/streamou/target_custom/g
        edit s/streamo/target/g
        edit s/streamiu/source_custom/g
        edit s/streami/source/g

        # various identifiers which also change
        edit s/is_a_stream/is_a_source/g
        edit s/find_load_stream/find_load_source/g
        edit s/find_save_stream/find_save_target/g
        edit s/new_from_stream/new_from_source/g
        edit s/write_to_stream/write_to_target/g
        edit s/vips_thumbnail_stream/vips_thumbnail_source/g

        # eg. vips_webpload_stream
        edit "s/vips_([a-z]+)load_stream/vips_\1load_source/g"

        # eg. vips_webpsave_stream
        edit "s/vips_([a-z]+)save_stream/vips_\1save_target/g"

        mv rename $i
done
```
2019-12-29 21:40:21 +00:00
John Cupitt
e236f19f97 add fallbacks to new_from_stream
If the stream-based loaders fail, vips_image_new_from_stream() now falls
back to the old file and buffer loaders.

The file and buffer loaders already try the stream loaders first.
2019-12-10 17:19:12 +00:00
Kleis Auke Wolthuizen
2499b38403 Update C++ binding and function list
The generators use the new Introspect class of pyvips.
2019-11-29 14:51:03 +01:00
John Cupitt
123c52be70 revert to call-by-value for c++ API 2019-11-13 08:44:59 +00:00
John Cupitt
42b4474356 stray decl 2019-11-10 18:03:38 +00:00
Kleis Auke Wolthuizen
b49910d270 Add support for streaming in the C++ binding
See: libvips/libvips#1443.
2019-11-10 13:46:29 +01:00
Kleis Auke Wolthuizen
c397543c8e Add a std::string overload function for new_from_buffer 2019-01-11 13:53:09 +01:00
John Cupitt
0e3cac1a72 make cpp overloads const
all overloads are declared const now, where possible

also revised cpp examples and ran them to check

see https://github.com/jcupitt/libvips/issues/983
2018-06-11 15:24:11 +01:00
John Cupitt
ca6410e1a6 make members and getters "const" in cpp api
eg. VImage::width() is now

	int VImage::width() const;

ie. it does not alter the image objects. In factr we can mark almost all
members const.

see https://github.com/jcupitt/libvips/issues/983
2018-06-11 14:30:17 +01:00
John Cupitt
e52d2c9f7f add composite shortcut to cpp
two composite just two images
2017-10-06 16:56:20 +01:00
John Cupitt
d601c5ee19 remmove extra null check
see https://github.com/jcupitt/libvips/issues/761
2017-10-01 19:08:51 +01:00
John Cupitt
7882602dfe C/C++ done
python next
2017-04-26 14:52:28 +01:00
John Cupitt
8062a4b1e6 update cpp API for arg order changes
hopefully user code won't see this
2017-03-13 13:28:37 +00:00
John Cupitt
b140c18a37 various tweaks to calm coverity
passes cleanly now
2017-01-20 08:55:13 +00:00
John Cupitt
2be0b97dce switch to g_warning()_/g_info()
we had vips_warn() and vips_info(), but they are a bit crappy ... switch
to g_warning() and g_info() instead

see https://github.com/jcupitt/libvips/issues/544
2017-01-03 15:52:27 +00:00
Lovell Fuller
e1aef0445b MSVC requires __declspec first for return by reference
Ensure consistent modifier order across all exported functions
Move assignment operators to be "outside" definitions to aid export
2016-10-15 22:02:24 +01:00
John Cupitt
0c7053bae1 Merge branch 'master' of github.com:jcupitt/libvips 2016-08-04 12:38:04 +01:00
John Cupitt
ad046680f7 tiny polish to cpp 2016-08-04 12:37:48 +01:00
John Cupitt
d78f87702d missing unref in cpp binding
operation was not unreffed if build failed
2016-07-29 15:09:53 +01:00
John Cupitt
bd9cc25278 tiny 2016-07-29 10:16:33 +01:00
John Cupitt
28efdf1695 working! 2016-06-11 17:36:06 +01:00
John Cupitt
ad56c57830 add implementation for VImage::write()
oops, it was missing

also, change the return type from void to VImage. This makes chaining
possible, eg.:

   VImage memory = im.write( Viameg::new_memory() );
2016-06-10 14:22:08 +01:00
John Cupitt
da43a4041f move cpp overloads outside class
so they are true functions and we can take their address

see https://github.com/jcupitt/libvips/issues/409
2016-03-25 06:09:07 +00:00
Lovell Fuller
20ae80397d Enable compilation of vips8 C++ bindings with MSVC
Add VIPS_CPLUSPLUS_API macro to allow DLL creation
2016-01-11 17:56:02 +00:00
John Cupitt
66373e9b41 remove exception specs from vips8 C++ interface
We had exception specs on the C++ interface, but C++11 does not support
them and some compilers have never honoured them. Remove all specs.
Thanks Lovell.

See https://github.com/jcupitt/libvips/issues/362
2016-01-09 14:52:05 +00:00
John Cupitt
01025328da fix some cppcheck warnings
try:

$ cppcheck -f --enable=warning,performance,portability -j4 . 2> err.txt

there are still some left, see:

see https://github.com/jcupitt/libvips/issues/331
2015-09-28 22:01:15 +01:00
John Cupitt
db4ee8d6b6 fix a ref leak in the C++ API
see https://github.com/jcupitt/libvips/issues/290

thanks huskier

added a write-to-buffer example as well
2015-05-04 19:44:56 +01:00
John Cupitt
32625146db cpp can set enums from strings
eg.

	set("extend", "copy")->
2014-12-30 11:27:04 +00:00
John Cupitt
8267dd2621 naming improvements
and test_overloads.cpp has started working
2014-11-05 14:04:46 +00:00