2
0
mirror of https://github.com/boostorg/gil.git synced 2026-02-22 15:32:10 +00:00
Commit Graph

103 Commits

Author SHA1 Message Date
Mateusz Łoskot
77b9da56af [cmake] Keep main function name after switch to executable [ci skip] 2018-12-15 22:48:41 +01:00
Mateusz Łoskot
321bee2b79 [cmake] Fix missing source in add_executable [ci skip] 2018-12-15 21:56:52 +01:00
Mateusz Łoskot
293164e370 [cmake] Build header tests as executable, not OBJECT [ci skip]
Avoid file TOUCH command which requires CMake 3.12+
2018-12-15 21:42:42 +01:00
Mateusz Łoskot
96ae7e28f4 [cmake] Improve headers globbing [ci skip]
Core heades must not be globbed recursively.
2018-12-13 23:11:26 +01:00
Mateusz Łoskot
f300271fa3 [cmake] Add GIL_ENABLE_EXT_* options [ci skip] 2018-12-13 00:57:30 +01:00
Mateusz Łoskot
e99db3d0c4 [cmake] Tidy up [ci skip] 2018-12-12 14:00:13 +01:00
Mateusz Łoskot
36af17b390 [cmake] Add extensions ot all-in-one headers test
Updates #184
2018-12-11 23:22:19 +01:00
Mateusz Loskot
021e4b9d4c [cmake] Add test with all headers included in one TU (#184) [ci skip]
Rename target test_compile_headers to test_headers_self_contained.
Add target test_headers_all_in_one
- Currently tests headers of core, concepts and io.
2018-12-11 23:17:27 +01:00
Mateusz Loskot
78110fc89c Apply clang-tidy modernize-use-override (#182)
Used clang-tidy 7.0 with the command:

run-clang-tidy.py \
    -header-filter='boost\/gil\/.*'
    -checks='-*,modernize-use-override' -fix
2018-12-10 23:10:22 +01:00
Mateusz Łoskot
41dac11d0a [cmake] Tidy up variable reuse [ci skip] 2018-12-09 16:12:59 +01:00
Mateusz Łoskot
1c7e26ab93 [cmake] Rename target test_all_headers to test_compile_headers [ci skip] 2018-12-09 13:57:11 +01:00
Mateusz Łoskot
92cddb3f71 [cmake] Bundle all Boost and IO libraries in gil_dependencies target
Simplify generating of IO tests targets, remove lots of duplicate cruft.
Tidy up CMake scripts.
2018-12-08 23:20:54 +01:00
Mateusz Łoskot
b6e8dbbf8f [cmake] Explain Boost regression not supposed to run headers tests [ci skip] 2018-12-08 15:59:04 +01:00
Mateusz Łoskot
ec58e31fa7 [cmake] Rename main to specific name in headers tests [ci skip]
Rename test_headers target to test_all_headers.
Rationalise use of CMake variables.
2018-12-08 12:16:32 +01:00
Mateusz Łoskot
d017298440 [cmake] Make test/headers directory is redundant or incorrect [ci skip] 2018-12-08 12:00:52 +01:00
Mateusz Łoskot
2957351f57 Add self-contained header tests to CMake configuration [ci skip]
Similarly to the tests defined in Boost.Build configuration, those do
not run on CI builds or regression builds.
2018-12-08 02:40:45 +01:00
Mateusz Łoskot
63c450c2a9 Modernize CMake configuration
Replace global compile options and definitions with interface targets.
Remove globing for headers.
Set project version based on GIL version.
Remove GIL_BUILD_TESTS option as redundant - there is no point in
using CMake for development of header-only library if no tests
are to be built.
2018-12-08 01:05:47 +01:00
Mateusz Łoskot
1075967712 Move self-contained headers test to test/headers
Modify Boost.Jam script generating tests to support targets per the library
directories/modules.
2018-12-06 22:35:39 +01:00
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