2
0
mirror of https://github.com/boostorg/gil.git synced 2026-02-20 02:42:11 +00:00
Commit Graph

85 Commits

Author SHA1 Message Date
Mateusz Łoskot
28df5bc482 Clean up several warnings about unreferenced formal parameters
Add comment to premultiply.hpp:
- FIXME: Is c input paramater not used intentionally?
2018-10-29 15:26:53 +01:00
Mateusz Łoskot
5fd0f7878c [cmake] Prefix status messages with Boost.GIL for source clarity [ci skip]
Remove GIL_USE_BOOST_STAGE as unnecessary.
Download FindBoost.cmake for <3.13 - this module in CMake 3.13
received some important updates.
2018-10-29 14:01:48 +01:00
Mateusz Loskot
a1c966dd9b Fix point<T> divide and multiply to not to hardcode result as point<double> (#157)
The free variants of operator/ and operator* now yield new
type of point<T> with T promoted to type common for both operands.

Add missing member operator*=, for symmetry.
Add template function iround(point<T>) as no-op sink for point
specialisations for T of integer types.
Add explicit casts of arithmetic intermediate results to avoid
compilation warnings.
Replace redundant point<T> construction in return statement with uniform
initialization.
Add static_assert validating range of axis_value integer template parameter.

Update test/point/point.cpp with basic checks of all point<T> members.

Fixes #153
2018-10-24 15:08:39 +02:00
Mateusz Loskot
53dc1a6949 Add basic tests for point<T> (#156) 2018-10-20 16:35:29 +02:00
Mateusz Łoskot
9b89b4fd9d [cmake] Add test/image_view to CMake configuration
[ci skip]
2018-10-20 00:07:56 +02:00
Mateusz Łoskot
9426683651 [cmake] Add CMakeLists.txt for test/algorithm
Do not link lightweight_test-based tests against Boost.Test libraries.
Tidy up.

[ci skip]
2018-10-19 23:50:30 +02:00
Mateusz Loskot
ce82941fa2 Rename point2<T> to point<T> (#155)
Add point2<T> alias template for backward compatibility with Boost <=1.68.
Replace multiple point_t aliases of point<ptrdiff_t> with single defined
in point.hpp. The point_t is common used to represent dimensions.
Replace many uses of point<ptrdiff_t> with point_t.

Apply reformatting around point2 changes to respect the line length limit.

Follows up discussion in #154
2018-10-19 09:32:23 +02:00
Mateusz Łoskot
875136885a Fix conflict with std::fill_n and boost::range::fill_n (Trac 7189)
Add minimal test for the std::fill and boost::array or std::array as
pixel type.
2018-10-12 18:34:28 +02:00
Mateusz Loskot
1f1f8836ca Merge pull request #147 from mloskot/ml/add-headers-compile-test
Add test to verify headers are self-contained
2018-10-05 21:35:16 +02:00
Mateusz Łoskot
9dc67eae1d Add test to verify headers are self-contained
For each header, a translation unit is generated along with
corresponding compile target.
Currently, only boost/gil/*.hpp and boost/gil/io/* headres are included.

On CI services, compile self_contained_headers targets only if
TEST_HEADERS environment variable is set. This is to avoid build
timeouts due to CI services limits.
When running b2 locally, the tests are compiled by default.
2018-10-05 18:11:08 +02:00
Mateusz Łoskot
e4e72b5ee4 Add explicit conversion of arithmetic result to expected result type
Fixes warnings due to implicit promotion of operands, then implicit
conversion.
2018-09-28 23:43:02 +02:00
Mateusz Łoskot
32fec9f05b Refactor library includes to #include <boost/gil/...>
Group include directives, sort within group:
* In headers of GIL core and extensions:
  1. boost/gil/extension/*
  2. boost/gil/*
  3. boost/*
  4. C++ standard library headers
* In programs:
  1. boost/gil/*
  2. boost/*
  3. C++ standard library headers
  4. "xxx.hpp" for local headers
Add basic guidelines to CONTRIBUTING.md.
Add/Remove #include <boost/config.hpp> or std headers un/necessary.
Rename gil_concept.hpp to concepts.hpp.
Remove gil_all.hpp - we already have all-in-one boost/gil.hpp.
Tidy up and unify copyright and license header.
Tidy up formatting and excessive whitespaces in some comments.
Remove Doxygen block with file description, author, date, etc.
Remove dead or commented pragmas and directives.
Trim trailing whitespaces.
2018-09-28 16:26:34 +02:00
Mateusz Łoskot
c3bb2e1a94 Remove gil_config.hpp as unnecessary
Move BOOST_GIL_CONFIG_HAS_UNALIGNED_ACCESS define setting and
documentation comment to channel.hpp where solely used.

Trim trailing whitespaces.
2018-09-27 15:38:40 +02:00
Mateusz Łoskot
609a2d3a49 Add casts to avoid warnings due to implicit integral promotions
The explicit casts help to avoid warnings when integer types
smaller than int are implicitly converted during arithmetic operations.
2018-09-24 11:11:01 +02:00
Mateusz Łoskot
afe0c2415b Fix warning: comparing floating point with == is unsafe
Use >= trick where value is guaranteed to never be greater than comparator
but to avoid warning: comparing floating point with == is unsafe.
2018-09-24 10:42:31 +02:00
Mateusz Loskot
7a5bd6986e Merge pull request #139 from mloskot/ml/trac-ticket-7092
Remove re-assignment of functor from for_each_pixel (Trac 7092)
2018-09-23 21:26:07 +02:00
Mateusz Łoskot
f613cc4088 Remove re-assignment of functor from for_each_pixel (Trac 7092)
The assignment was superfluous in general case and incorrect in specific
case when the algorithm was given a lambda expression.
The copy assignment operator is defined as deleted for lambda
expressions.

Add minimal test for for_each_pixel algorithm to verify it compiles with
lambda expression.
2018-09-21 18:50:40 +02:00
Mateusz Łoskot
ecc19de7c9 Simplify and clean up Jamfiles
Rename Jamfile.v2 to Jamfile - BBV1 is dead.
Remove numeric/test/test.cpp as redundant.
2018-09-21 18:02:37 +02:00
Mateusz Łoskot
b1eaa7ea90 Update image_view to model Collection concept (Trac 2222)
* Applies patch from John Femiani submitted via Trac
  https://svn.boost.org/trac10/ticket/2222 description:
  It would be convenient if GIL views modeled ReversibleCollection concept.
  In fact they almost do already. Without modeling this concept, it is
  hard to use an image view with boost::range algorithms.
* Add related image_view concepts for Collection, ForwardCollection,
  ReversibleCollection.
* Add tests for the new concepts.
* Add run-time tests for the new image_view methods.
2018-08-29 22:10:18 +02:00
Mateusz Łoskot
4c9ba74769 Replace lightweight_test_traits.hpp with lightweight_test.hpp 2018-08-29 18:04:06 +02:00
Mateusz Łoskot
85dbc8c21f Switch image_view tests from Boost.Test to Boost.Core.LightweightTest 2018-08-29 17:55:46 +02:00
Mateusz Łoskot
4500543a74 Add missing template keyword prior to dependent name axis_iterator (Trac 8896)
* Apply patch from https://svn.boost.org/trac10/ticket/8896
* Add compile-time test of RandomAccessNDImageViewConcept
  * Confirms the reported failure (tested with GCC 7.3 and clang 5.0)
  * Verifies correctness of the patch
2018-08-23 16:05:38 +02:00
Mateusz Łoskot
bfb0c15323 [cmake] Update FindBoost.cmake auto-download instructions [ci skip]
Add GIL_DISABLE_FINDBOOST_DOWNLAOD option (default=OFF).
Output values of Boost_INCLUDE_DIRS and BOOST_LIBRARY_DIRS
  - should help to know which Boost we are building GIL against.
Fix add_executable with empty sources list.
2018-06-27 00:02:27 -04:00
Mateusz Łoskot
2658e2059a Replace some of Boost.MPL and Boost.TypeTraits with C++11 equivalents
Non-functional refactoring of promote_integral added in #91
Clean up 128-bit support remains.
2018-06-27 00:02:27 -04:00
Mateusz Łoskot
b8af11db87 Add promote_integral metafunction
Copied from Boost.Geometry, including original tests, with some non-functional
modifications explained in the comments.
The utility can be used where it is important to avoid integer overflow.
2018-06-27 00:02:27 -04:00
Mateusz Loskot
a6795334d3 [test] Verify channel_minmax values against std::numeric_limits 2018-06-27 00:02:27 -04:00
Mateusz Loskot
73ec99e606 Refactor single-program channel test to Boost.Test suites and cases
Motivation:
- state clearly what is covered with tests without reading non-trivial code
- avoid cleverness - tests should be no-brainer
- get closer to one test case targets one feature/beaviour with one check
- replace obscure `throw std::exception` with diagnostics that are actually
  useful to pin-point failure cause and location - makes CI logs useful.
- allow to select and run specific tests
- make tests maintenance easy, quick and fun

Propose new structure of tests that reflects the previous tests hierarchy,
but organizes channel tests in test/channel directory with test programs
each covering specific library feature (or set of closely related features).

The refactored tests cover 100% of checks from the old `channel.cpp`,
plus it refines or adds a bunch more.
NOTE: old test/channel.cpp has not been removed yet.

Common definitions from the single test/channel.cpp moved to
channel_test_fixtures.hpp and namespace boost::gil::test::fixture:
Classes and typedefs:
- `do_test` as `fixture::channel`
- `value_core` as `fixture::channel_value`
- `reference_core` as `fixture::channel_reference`
- `packed_reference_core` as `fixture::packed_channel_reference`
- `packed_dynamic_reference_core` as `fixture::packed_dynamic_channel_reference`
- `channel_archetype` and relatives to `channel_concepts.cpp` which is compile
   test in Jamfile
- `test_packed_channel_reference()` parts as `fixture::packed_channels565`
- `test_packed_dynamic_channel_reference()` parts as `fixture::packed_dynamic_channels565`
Test case functions called from `do_test<T>::test_all`:
- `test_channel_invert()` to `algorithm_channel_invert.cpp` suite
- `test_channel_convert()` to `algorithm_channel_convert.cpp` suite
- `test_channel_multiply()` to `algorithm_channel_multiply.cpp` suite
- `test_channel_math()` split to `algorithm_channel_relation.cpp`
   and `algorithm_channel_arithmetic.cpp`

Add test cases for each channel value type T as used to run from
`test_channel_value_impl<T>`, `test_packed_channel_reference<T>` and
`test_packed_dynamic_channel_reference<T>`.

Add list of possible T-s defined as type-lists `fixture::channel_byte_types`,
`fixture::channel_integer_types`, `channel_float_types` and
`channel_bitfield_types` which used with `BOOST_AUTO_TEST_CASE_TEMPLATE`
generate all possible combination of inputs.

Add new `channel_test_fixture.cpp` is a self-test suite verifying the fixtures.
2018-06-27 00:02:27 -04:00
Mateusz Loskot
ed67f9a571 Replace bitsN[s] aliases with C++11 fixed width integer types
Import the selection of integer types into boost::gil namespace,
  and move from channel.hpp to typedefs.hpp for easier access.
Replace bits32f with float32_t and bits64f with float64_t
  - kept as alias of scoped_channel_value.
Move float64_t (bits64f) to typedefs.hpp.
Replace the four {float|double}_{zero|one} min/max channel values
  with float_point_zero and float_point_one templates.
Replace <boost/cstdint,hpp> with C++11 <cstdint>.

Introduce preference of using declaration instead of typedef.
Reformat typedefs.hpp to take advantage of the using declaration
  - works much better for left-to-right reading, alias name as
    most important detail comes first.
Add some of missing #include typedefs.hpp, sort some headers.
2018-06-27 00:02:27 -04:00
Mateusz Loskot
1e89c764b2 [cmake] Replicate GCC/clang compile flags from Jamfile
Add headers to target sources, so they are included in generate
makefiles, scanned and inspected as regular sources.

[ci skip]
2018-06-27 00:02:27 -04:00
Mateusz Loskot
eee3c526fc Add missing #include <stdexcept>
Fix GCC 4.7 error: 'runtime_error' is not a member of 'std'
2018-06-27 00:02:27 -04:00
Mateusz Loskot
9f028e67ad Replace C++11 std::string::front with indexing operator 2018-06-27 00:02:27 -04:00
Mateusz Loskot
3e612232c2 Restore root Jamfile lost during merge of PR #13 2018-06-27 00:02:27 -04:00
Niklas Angare
acf760719c Take input filename on the command line to test/image.
This enables test runners to copy the file to the target. It also makes
the code that looks for the file in a different path unnecessary since
Boost.Build will pass the proper relative path.
2018-06-27 00:02:27 -04:00
Stefan Seefeld
1f0bc35012 Introduce top-level gil.hpp header. (#70)
Introduce top-level boost/gil.hpp header.
2018-06-27 00:02:27 -04:00
Mateusz Loskot
a37469e3ad Extend GCC and clang cxxflags for detailed warnings
Bump MSVC warning level to W4
Preparing for detailed warnings clean up based on:
https://svn.boost.org/trac10/wiki/Guidelines/WarningsGuidelines
Group compilation flags and defines in common top-level Jamfile
- relies on Boost.Build feature of referring parent Jamfile-s.
2018-06-27 00:02:27 -04:00
Mateusz Loskot
d754d41373 Fix MSVC warning: C4100 unreferenced formal parameter 2018-06-27 00:02:27 -04:00
Mateusz Loskot
862539f6c4 Add AppVeyor jobs for b2 variant=release (#46)
Add AppVeyor jobs for b2 variant=release
2018-06-27 00:02:27 -04:00
Mateusz Loskot
f7d83feb83 Sync gil_reference_checksums.txt with version in master 2018-06-27 00:02:27 -04:00
Mateusz Loskot
bd44e406c2 Revert: Temporarily comment the four checksum cases failing image tests
Reverts commit SHA-1:e80f9d2f4b2c688b3f7a77b9845e28793e4f5d0b

Preparing to verify if fix for overflowing bit-shift operation (UB)
suggested by Andrey Semashev via Boost ML will fix the checksum bug too.
See discussions for #46 and #50 for details.
2018-06-27 00:02:27 -04:00
Mateusz Loskot
fe67000f7e Temporarily comment the four checksum cases failing image tests.
This is to decrease noise of CI builds failures
until #49 issue has been resolved.
2018-06-27 00:02:27 -04:00
Mateusz Loskot
fab99207f2 Add basic CMake configuration for Boost.GIL
First stab at collection of CMakeLists.txt for Boost.GIL
  - Allow building and testing boostorg/gil against Boost from
    cloned superproject or installed distribution.
Add CMakeSettings.json config file for VS2017 integration with CMake
  - Defines build configurations for VS and Ninja generators.
  - Can be used as is or as a template ready to customise.
Add conanfile.txt for Conan package manager (eg. for cmake -DGIL_USE_CONAN=ON).
Add .editignore file to with basic encoding of CMake and CI scripts.
Update .appveyor.yml with two extra CMake-based builds (allowed to fail).
2018-06-27 00:02:27 -04:00
Mateusz Loskot
5a67de8875 Allow test/image.cpp accept checksums file via command line argument
Print calculate checksum in test output and print expected
checksum too in case of test case failure.
2018-06-27 00:02:27 -04:00
Mateusz Loskot
6068807868 Catch std::exception in main of test programs
Refines #37
2018-06-27 00:02:27 -04:00
Mateusz Loskot
2c1af1d420 Remove unused define BOOST_GIL_NO_IO 2018-06-27 00:02:27 -04:00
Mateusz Loskot
93d99f4964 Add try-catch to avoid std::terminate on test program failure 2018-06-27 00:02:27 -04:00
Stefan Seefeld
2ae1c629a1 Add more build options. 2018-06-27 00:02:27 -04:00
Stefan Seefeld
e2c423bb8f Fix file lookup error. 2018-06-27 00:02:27 -04:00
Stefan Seefeld
986f3b999f Add faber support. 2018-06-27 00:02:27 -04:00
Stefan Seefeld
31879b85cb Stop using boost::test 2018-06-27 00:02:27 -04:00
Christian Henning
833e73459b there is no resize() for images. Changing to recreate() 2018-06-27 00:02:27 -04:00