Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
74ffdcb
chore: fix some typos (#751)
striezel Jul 8, 2024
32eabbc
chore: fix more typos (#753)
striezel Jul 23, 2024
91e2dcc
ci: update codecov/codecov-action in GitHub Actions workflow to v4 (#…
striezel Jul 23, 2024
f56c4c6
tests: add test cases for wide character path conversions (#754)
striezel Jul 23, 2024
8fd5cc5
Add support for modular build structure. (#752)
grafikrobot Aug 20, 2024
e5f5bce
Fix dynamic transposed_view (#756)
sdebionne Sep 18, 2024
eb142a3
Fix node 20 issue on GHA CI (#758)
Flamefire Dec 8, 2024
7c554ac
docs: modify logo variable (#759) [ci skip]
sdarwin Dec 9, 2024
f018ebf
chore: Remove executable bit from .cpp files [ci skip]
mloskot Jan 7, 2025
dc07bca
fix is_floating_point: symbol is not a class template
sdebionne Apr 4, 2025
49d9276
Merge pull request #761 from sdebionne/fix-boost-type-traits
mloskot Apr 4, 2025
dc89ecd
ci: move Ubuntu 20.04 builds to container or newer Ubuntu version
striezel Apr 4, 2025
688acf7
Merge pull request #762 from striezel-stash/ci-ubuntu.20.04-deprecation
mloskot Apr 4, 2025
dcce964
Propose repair for issue 763
ckormanyos Apr 18, 2025
6583e8b
Merge pull request #764 from ckormanyos/issue763
mloskot Apr 18, 2025
2956a0e
fix compile error on clang
Jul 2, 2025
fcfce66
Merge pull request #767 from AnonymousPC/develop
mloskot Jul 3, 2025
b438f7e
ci: move GitHub Action's Windows builds to supported OS version
striezel Jul 31, 2025
df5f3f8
ci: add jobs for newer GCC versions
striezel Jul 31, 2025
00d7e40
Merge pull request #768 from striezel-stash/ci-windows-runner-update
mloskot Aug 3, 2025
6fbc2c0
Merge pull request #769 from striezel-stash/ci-test-on-newer-gcc
mloskot Aug 3, 2025
c343531
ci: add newer Clang versions
striezel Aug 3, 2025
4daecc0
Merge pull request #770 from striezel-stash/ci-test-on-newer-clang
mloskot Aug 4, 2025
06c421a
Update Link to regression test matrix in README
Flamefire Aug 25, 2025
23e08bc
Merge pull request #772 from Flamefire/test-link-update
mloskot Aug 25, 2025
e2882c3
Update installation.rst
ivanpanch Aug 26, 2025
817f039
Update histogram.rst
ivanpanch Aug 26, 2025
8994e3c
Update gradient.rst
ivanpanch Aug 26, 2025
a528644
Update naming.rst
ivanpanch Aug 26, 2025
f31aab3
Update channel.rst
ivanpanch Aug 26, 2025
5a66d23
Update pixel_locator.rst
ivanpanch Aug 26, 2025
9af3cc5
Update image_view.rst
ivanpanch Aug 26, 2025
9aafcd3
Update image.rst
ivanpanch Aug 26, 2025
f7e2634
Update metafunctions.rst
ivanpanch Aug 26, 2025
c2b27ce
Update examples.rst
ivanpanch Aug 26, 2025
fa2cbf4
Update extending.rst
ivanpanch Aug 26, 2025
3851f76
Update basics.rst
ivanpanch Aug 26, 2025
b262e06
Update affine-region-detectors.rst
ivanpanch Aug 26, 2025
f2ede74
Update overview.rst
ivanpanch Aug 26, 2025
bc9307b
Update overview.rst
ivanpanch Aug 26, 2025
aaab5fe
Update overview.rst
ivanpanch Aug 26, 2025
30441b5
Update extend.rst
ivanpanch Aug 26, 2025
ba1b528
Update io.rst
ivanpanch Aug 26, 2025
eff1fba
Update io.rst
ivanpanch Aug 26, 2025
d8c5635
Merge pull request #773 from ivanpanch/patch-1
mloskot Aug 27, 2025
9d25fc0
ci: drop clang++=5 stdcxx=1z build variant
sdebionne Nov 25, 2025
3d8dcb6
Omit pmr image tests on apple clang 15
sdebionne Nov 25, 2025
82fb089
ci: drop deprecated macos 13 and add macos 14 and 15
sdebionne Nov 25, 2025
dd9ce1c
Merge pull request #778 from sdebionne/sde/fix-ci
sdebionne Nov 26, 2025
8dc4f65
Fix cases when png reader ended up in an infinite loop. #774
Oct 10, 2025
6281653
Provide testcase that shows the fix in action
Dec 5, 2025
50e0b5b
Merge pull request #780 from Processor228/fix-reading-png-images
mloskot Dec 5, 2025
942196b
docs: logo was removed since Sphinx 6 and replaced by logo_url
sdebionne Nov 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
139 changes: 117 additions & 22 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@ on:
env:
LIBRARY: gil
UBSAN_OPTIONS: print_stacktrace=1
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true

jobs:
posix:
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
Expand All @@ -27,19 +29,47 @@ jobs:
- toolset: gcc-7
cxxstd: "14,17"
install: g++-7
os: ubuntu-20.04
os: ubuntu-latest
container: ubuntu:20.04
- toolset: gcc-8
cxxstd: "14"
os: ubuntu-20.04
os: ubuntu-latest
container: ubuntu:20.04
install: g++-8
- toolset: gcc-9
cxxstd: "14,17"
os: ubuntu-20.04
os: ubuntu-24.04
install: g++-9
- toolset: gcc-10
cxxstd: "14,17"
os: ubuntu-20.04
os: ubuntu-24.04
install: g++-10
- toolset: gcc
compiler: g++-11
cxxstd: "14,17"
os: ubuntu-24.04
install: g++-11
- toolset: gcc
compiler: g++-12
cxxstd: "14,17,20"
os: ubuntu-24.04
install: g++-12
- toolset: gcc
compiler: g++-13
cxxstd: "14,17,20"
os: ubuntu-24.04
install: g++-13
- toolset: gcc
compiler: g++-14
cxxstd: "14,17,20"
os: ubuntu-24.04
install: g++-14
- toolset: gcc
compiler: g++-15
cxxstd: "14,17,20"
os: ubuntu-latest
container: ubuntu:25.04
install: g++-15
- toolset: clang
compiler: clang++-3.9
cxxstd: "14"
Expand All @@ -54,49 +84,118 @@ jobs:
install: clang-4.0
- toolset: clang
compiler: clang++-5.0
cxxstd: "14,1z"
cxxstd: "14"
os: ubuntu-latest
container: ubuntu:18.04
install: clang-5.0
- toolset: clang
compiler: clang++-6.0
cxxstd: "14,17"
os: ubuntu-20.04
os: ubuntu-latest
container: ubuntu:20.04
install: clang-6.0
- toolset: clang
compiler: clang++-7
cxxstd: "14,17"
os: ubuntu-20.04
os: ubuntu-latest
container: ubuntu:20.04
install: clang-7
- toolset: clang
compiler: clang++-8
cxxstd: "14,17"
os: ubuntu-20.04
os: ubuntu-latest
container: ubuntu:20.04
install: clang-8
- toolset: clang
compiler: clang++-9
cxxstd: "14,17"
os: ubuntu-20.04
os: ubuntu-latest
container: ubuntu:20.04
install: clang-9
- toolset: clang
compiler: clang++-10
cxxstd: "14,17"
os: ubuntu-20.04
os: ubuntu-latest
container: ubuntu:20.04
install: clang-10
- toolset: clang
cxxstd: "14,17"
os: macos-12
compiler: clang++-11
cxxstd: "14,17,20"
os: ubuntu-22.04
install: clang-11
- toolset: clang
compiler: clang++-12
cxxstd: "14,17,20"
os: ubuntu-22.04
install: clang-12
- toolset: clang
compiler: clang++-13
cxxstd: "14,17,20"
os: ubuntu-22.04
install: clang-13
- toolset: clang
compiler: clang++-14
cxxstd: "14,17,20"
os: ubuntu-24.04
install: clang-14
- toolset: clang
compiler: clang++-15
cxxstd: "14,17,20"
os: ubuntu-24.04
install: clang-15
- toolset: clang
compiler: clang++-16
cxxstd: "14,17,20"
os: ubuntu-24.04
install: clang-16
- toolset: clang
compiler: clang++-17
cxxstd: "14,17,20"
os: ubuntu-latest
container: ubuntu:24.04
install: clang-17
- toolset: clang
compiler: clang++-18
cxxstd: "14,17,20,23"
os: ubuntu-24.04
install: clang-18
- toolset: clang
compiler: clang++-19
cxxstd: "14,17,20,23"
os: ubuntu-24.04
install: clang-19
- toolset: clang
compiler: clang++-20
cxxstd: "14,17,20,23"
os: ubuntu-latest
container: ubuntu:25.04
install: clang-20
- toolset: clang
cxxstd: "14,17,20"
os: macos-14
- toolset: clang
cxxstd: "14,17,20"
os: macos-15

runs-on: ${{matrix.os}}
container: ${{matrix.container}}
container:
image: ${{matrix.container}}
volumes:
- /node20217:/node20217:rw,rshared
- ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }}

steps:
- uses: actions/checkout@v3

- name: Setup container environment
if: matrix.container
run: |
apt-get -y update
apt-get -y install sudo python3 git g++
apt-get -y install sudo python3 git g++ curl
if [[ "${{matrix.container}}" == "ubuntu:1"* ]]; then
# Node 20 doesn't work with Ubuntu 16/18 glibc: https://github.com/actions/checkout/issues/1590
curl -sL https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz | tar -xJ --strip-components 1 -C /node20217
fi

- uses: actions/checkout@v4

- name: Install packages
if: matrix.install
Expand Down Expand Up @@ -138,14 +237,10 @@ jobs:
fail-fast: false
matrix:
include:
- toolset: msvc-14.2
cxxstd: "14,17"
addrmd: 32,64
os: windows-2019
- toolset: gcc
cxxstd: "14,17"
addrmd: 64
os: windows-2019
os: windows-2022
- toolset: msvc-14.3
cxxstd: "14,17"
addrmd: 32,64
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,6 @@ jobs:
lcov --list coverage.info

- name: Upload to Codecov
uses: codecov/codecov-action@v1.2.1
uses: codecov/codecov-action@v4
with:
files: ../boost-root/coverage.info
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,5 @@ graph_info.json
# clangd
compile_commands.json
.clangd/

!build.jam
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -465,7 +465,7 @@ Here is an example of such lightweight workflow in Linux environment (Debian-bas
- option `-DBoost_ARCHITECTURE=-x64` to help CMake find Boost 1.66 and above
add an architecture tag to the library file names in versioned build
The option added in CMake 3.13.0.
- option `-DDBoost_ADDITIONAL_VERSIONS=<unreleased Boost version>` is especially usefull
- option `-DDBoost_ADDITIONAL_VERSIONS=<unreleased Boost version>` is especially useful
when testing GIL with staged build of Boost from its `develop` branch.
- if CMake is still failing to find Boost, you may try `-DBoost_DEBUG=ON` to
get detailed diagnostics output from `FindBoost.cmake` module.
Expand Down
11 changes: 0 additions & 11 deletions Jamfile

This file was deleted.

4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@

Documentation | GitHub Actions | AppVeyor | Regression | Codecov
--------------|----------------|----------|------------|----------
[![develop](https://img.shields.io/badge/doc-develop-blue.svg)](https://boostorg.github.io/gil/develop/) | [![GitHub Actions](https://github.com/boostorg/gil/workflows/CI/badge.svg?branch=develop)](https://github.com/boostorg/gil/actions?query=branch:develop) | [![AppVeyor](https://ci.appveyor.com/api/projects/status/w4k19d8io2af168h/branch/develop?svg=true)](https://ci.appveyor.com/project/stefanseefeld/gil/branch/develop) | [![gil](https://img.shields.io/badge/gil-develop-blue.svg)](http://www.boost.org/development/tests/develop/developer/gil.html) | [![codecov](https://codecov.io/gh/boostorg/gil/branch/develop/graphs/badge.svg)](https://app.codecov.io/gh/boostorg/gil/branch/develop)
[![master](https://img.shields.io/badge/doc-master-blue.svg)](https://boostorg.github.io/gil/) | [![GitHub Actions](https://github.com/boostorg/gil/workflows/CI/badge.svg?branch=master)](https://github.com/boostorg/gil/actions?query=branch:master) | [![AppVeyor](https://ci.appveyor.com/api/projects/status/w4k19d8io2af168h?svg=true)](https://ci.appveyor.com/project/stefanseefeld/gil/branch/master) | [![gil](https://img.shields.io/badge/gil-master-blue.svg)](http://www.boost.org/development/tests/master/developer/gil.html) | [![codecov](https://codecov.io/gh/boostorg/gil/branch/master/graphs/badge.svg)](https://app.codecov.io/gh/boostorg/gil/branch/master)
[![develop](https://img.shields.io/badge/doc-develop-blue.svg)](https://boostorg.github.io/gil/develop/) | [![GitHub Actions](https://github.com/boostorg/gil/workflows/CI/badge.svg?branch=develop)](https://github.com/boostorg/gil/actions?query=branch:develop) | [![AppVeyor](https://ci.appveyor.com/api/projects/status/w4k19d8io2af168h/branch/develop?svg=true)](https://ci.appveyor.com/project/stefanseefeld/gil/branch/develop) | [![gil](https://img.shields.io/badge/gil-develop-blue.svg)](https://regression.boost.io/develop/developer/gil.html) | [![codecov](https://codecov.io/gh/boostorg/gil/branch/develop/graphs/badge.svg)](https://app.codecov.io/gh/boostorg/gil/branch/develop)
[![master](https://img.shields.io/badge/doc-master-blue.svg)](https://boostorg.github.io/gil/) | [![GitHub Actions](https://github.com/boostorg/gil/workflows/CI/badge.svg?branch=master)](https://github.com/boostorg/gil/actions?query=branch:master) | [![AppVeyor](https://ci.appveyor.com/api/projects/status/w4k19d8io2af168h?svg=true)](https://ci.appveyor.com/project/stefanseefeld/gil/branch/master) | [![gil](https://img.shields.io/badge/gil-master-blue.svg)](https://regression.boost.io/master/developer/gil.html) | [![codecov](https://codecov.io/gh/boostorg/gil/branch/master/graphs/badge.svg)](https://app.codecov.io/gh/boostorg/gil/branch/master)

# Boost.GIL

Expand Down
2 changes: 1 addition & 1 deletion RELEASES.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

- Fixed convolution in `convolve_2d` ([PR #723](https://github.com/boostorg/gil/pull/723))
- Normalize Gaussian 2D kernel to avoid darkening ([PR #725](https://github.com/boostorg/gil/pull/725))
- Wrong buffer size in path string conversion functionss for `std::wstring` is fixed, avoiding buffer
- Wrong buffer size in path string conversion functions for `std::wstring` is fixed, avoiding buffer
overflows when using I/O-related functions with `std::wstring` paths ([PR #746](https://github.com/boostorg/gil/pull/764)).

### Acknowledgements
Expand Down
34 changes: 34 additions & 0 deletions build.jam
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright René Ferdinand Rivera Morell 2023-2024
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)

require-b2 5.2 ;

constant boost_dependencies :
/boost/assert//boost_assert
/boost/concept_check//boost_concept_check
/boost/config//boost_config
/boost/container_hash//boost_container_hash
/boost/core//boost_core
/boost/filesystem//boost_filesystem
/boost/integer//boost_integer
/boost/iterator//boost_iterator
/boost/mp11//boost_mp11
/boost/preprocessor//boost_preprocessor
/boost/type_traits//boost_type_traits
/boost/variant2//boost_variant2 ;

project /boost/gil
: common-requirements
<include>include
;

explicit
[ alias boost_gil : : : : <library>$(boost_dependencies) ]
[ alias all : boost_gil example test ]
;

call-if : boost-library gil
;

3 changes: 1 addition & 2 deletions doc/_templates/layout.html
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,8 @@
<tr>
<td valign="top" width="300">
<h3><a href="{{ pathto('index') }}"><img
alt="C++ Boost" src="{{ pathto('_static/' + logo, 1) }}" border="0"></a></h3>
alt="C++ Boost" src="{{ pathto(logo_url, 1) }}" border="0"></a></h3>
</td>

<td >
<h1 align="center"><a href="{{ pathto('index') }}"></a></h1>
</td>
Expand Down
4 changes: 2 additions & 2 deletions doc/design/channel.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ value. GIL channels model the following concept:
static const bool is_mutable; // use channel_traits<T>::is_mutable to access it

static T min_value(); // use channel_traits<T>::min_value to access it
static T max_value(); // use channel_traits<T>::min_value to access it
static T max_value(); // use channel_traits<T>::max_value to access it
};

concept MutableChannelConcept<ChannelConcept T> : Swappable<T>, Assignable<T> {};
Expand Down Expand Up @@ -182,7 +182,7 @@ transformation between the ranges of the source and destination channel.
It maps precisely the minimum to the minimum and the maximum to the maximum.
(For example, to convert from uint8_t to uint16_t GIL does not do a bit shift
because it will not properly match the maximum values. Instead GIL multiplies
the source by 257).
the source by 257.)

All channel models that GIL provides are convertible from/to an integral or
floating point type. Thus they support arithmetic operations. Here are the
Expand Down
4 changes: 2 additions & 2 deletions doc/design/examples.rst
Original file line number Diff line number Diff line change
Expand Up @@ -116,15 +116,15 @@ is how to simplify this code using the ``copy_pixels`` algorithm:
}

(Note also that ``image::recreate`` is more efficient than ``operator=``, as
the latter will do an unnecessary copy construction). Not only does the above
the latter will do an unnecessary copy construction.) Not only does the above
example work for planar and interleaved images of any color space and pixel
depth; it is also optimized. GIL overrides ``std::copy`` - when called on two
identical interleaved images with no padding at the end of rows, it simply
does a ``memmove``. For planar images it does ``memmove`` for each channel.
If one of the images has padding, (as in our case) it will try to do
``memmove`` for each row. When an image has no padding, it will use its
lightweight horizontal iterator (as opposed to the more complex 1D image
iterator that has to check for the end of rows). It choses the fastest method,
iterator that has to check for the end of rows). It chooses the fastest method,
taking into account both static and run-time parameters.

Histogram
Expand Down
2 changes: 1 addition & 1 deletion doc/design/extending.rst
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,6 @@ from the source view:

(The actual color convert view transformation is slightly more
complicated, as it takes an optional color conversion object, which
allows users to specify their own color conversion methods). See the
allows users to specify their own color conversion methods.) See the
GIL tutorial for an example of creating a virtual image view that
defines the Mandelbrot set.
2 changes: 1 addition & 1 deletion doc/design/image.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Image
Overview
--------

An image is a container that owns the pixels of a given image view
An image is a container that owns the pixels of a given image view.
It allocates them in its constructor and deletes them in the destructor.
It has a deep assignment operator and copy constructor. Images are used
rarely, just when data ownership is important. Most STL algorithms operate on
Expand Down
6 changes: 3 additions & 3 deletions doc/design/image_view.rst
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ Models
GIL provides a model for ``ImageViewConcept`` called ``image_view``. It is
templated over a model of ``PixelLocatorConcept``. (If instantiated with a
model of ``MutablePixelLocatorConcept``, it models
``MutableImageViewConcept``). Synopsis:
``MutableImageViewConcept``.) Synopsis:

.. code-block:: cpp

Expand All @@ -183,7 +183,7 @@ model of ``MutablePixelLocatorConcept``, it models
};

Image views are lightweight objects. A regular interleaved view is typically
16 bytes long - two integers for the width and height (inside dimensions) one
16 bytes long - two integers for the width and height (inside dimensions), one
for the number of bytes between adjacent rows (inside the locator) and one
pointer to the beginning of the pixel block.

Expand Down Expand Up @@ -253,7 +253,7 @@ to get the derived types:
typedef ... type;
};

GIL Provides the following view transformations:
GIL provides the following view transformations:

.. code-block:: cpp

Expand Down
Loading