Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
13 changes: 12 additions & 1 deletion .github/workflows/build-and-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,25 @@ jobs:
- name: Checkout project
uses: actions/checkout@v3

- name: Get latest release info
id: query_release_info
uses: release-flow/keep-a-changelog-action@v2
with:
command: query
version: latest

- name: Write release notes
run: |
echo "echo {{ steps.query-release-info.outputs.release-notes }} >notes.txt"

- name: Create Release
id: create_release
uses: ncipollo/release-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref_name }}
name: Release ${{ github.ref_name }}
generateReleaseNotes: true
bodyFile: notes.txt
draft: false
prerelease: false

Expand Down
226 changes: 102 additions & 124 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,189 +1,167 @@
## 2.0.5
# Changelog

### [Fixed]
Tous les changements sont consignés dans ce fichier.

* `LibtiffImage` : Gestion des tiff jpeg de photometrie YCbCr avec les tiffs palettes dans le _getline (élargissement du test)
Le format est basé sur [Keep a Changelog](https://keepachangelog.com/) et ce projet respecte le [Semantic Versioning](https://semver.org/).

## 2.0.4
## [Unreleased]

### [Fixed]
### Added

* `Merge` : correction du nombre de méthode
- `S3Context` et `SwiftContext` : possibilité de définir un timeout via la variable d'environnement `ROK4_NETWORK_TIMEOUT` (valeur à fournir en seconde)

## 2.0.3
### Changed

### [Added]
- Refonte du CHANGELOG au format [Keep a Changelog](https://keepachangelog.com/)

* `TiffHeader` : la valeur de nodata est ajoutée dans le header des Geotiff
## [2.0.5] - 2025-07-23

### [Fixed]
### Fixed

* `Style` : gestion d'une valeur par défaut pour la demande de nodata, en entrée et en sortie
- `LibtiffImage` : Gestion des tiff jpeg de photometrie YCbCr avec les tiffs palettes dans le _getline (élargissement du test)
- `Merge` : correction du nombre de méthode

## 2.0.2
## [2.0.3] - 2025-04-08

### [Fixed]
### Added

* `TiffDeflateEncoder` : l'encodage du résultat final n'est pas en deflate (seule la donnée dans le tiff l'est, et non le résultat complet)
* `S3Context` : on retourne bien false lorsqu'une erreur est rencontrée lors du flush (close_to_write)
- `TiffHeader` : la valeur de nodata est ajoutée dans le header des Geotiff

### Fixed

## 2.0.1
- `Style` : gestion d'une valeur par défaut pour la demande de nodata, en entrée et en sortie

### [Added]
## [2.0.2] - 2025-02-17

* `Keyword` : ajout d'un exporteur JSON (API Tiles)
* `TileMatrixLimits` : ajout d'un exporteur JSON (API Tiles)
### Fixed

## 2.0.0
- `TiffDeflateEncoder` : l'encodage du résultat final n'est pas en deflate (seule la donnée dans le tiff l'est, et non le résultat complet)
- `S3Context` : on retourne bien false lorsqu'une erreur est rencontrée lors du flush (close_to_write)

### [Added]
## [2.0.1] - 2024-10-01

* Internalisation de la lib json
* Ajout d'exporteur XML (via la lib boost) pour les entités Style, BoundingBox, Keyword, LegendURL, TileMatrixLimit et Style
* Création d'un annuaire pour les CRS pour éviter les créations en double
### Added

### [Changed]
- `Keyword` : ajout d'un exporteur JSON (API Tiles)
- `TileMatrixLimits` : ajout d'un exporteur JSON (API Tiles)
- Internalisation de la lib json
- Ajout d'exporteur XML (via la lib boost) pour les entités Style, BoundingBox, Keyword, LegendURL, TileMatrixLimit et Style
- Création d'un annuaire pour les CRS pour éviter les créations en double

* Passage complet en snake case
* Le format de canal contient le nombre de bits d'encodage
* Renommage StyledImage -> PaletteImage
* Renommage lzwEncoder -> LzwCompressor
* Renommage lzwDecoder -> LzwUncompressor
* Renommage pkbEncoder -> PkbCompressor
* Renommage pkbDecoder -> PkbUncompressor
### Changed

### [Deprecated]
- Passage complet en snake case
- Le format de canal contient le nombre de bits d'encodage
- Renommage StyledImage -> PaletteImage
- Renommage lzwEncoder -> LzwCompressor
- Renommage lzwDecoder -> LzwUncompressor
- Renommage pkbEncoder -> PkbCompressor
- Renommage pkbDecoder -> PkbUncompressor

Liste de fonctionnalités dépréciées.
### Removed

### [Removed]
- Suppression de la notion 'inspire' dans la gestion des styles
- Suppression de la classe ConvertedChannelsImage
- Suppression de la gestion de la compilation avec la librairie Kakadu
- Suppression des factory pour les classes filles de Image
- Suppression de la fonctionnalité de crop dans Rok4Image

* Suppression de la notion 'inspire' dans la gestion des styles
* Suppression de la classe ConvertedChannelsImage
* Suppression de la gestion de la compilation avec la librairie Kakadu
* Suppression des factory pour les classes filles de Image
* Suppression de la fonctionnalité de crop dans Rok4Image
### Fixed

### [Fixed]
- Correction du nettoyage des annuaires de TMS et styles

* Correction du nettoyage des annuaires de TMS et styles
## [1.4.0] - 2024-03-21

### Added

## 1.4.0

### [Added]

* Stockage objet (S3, Swift et Ceph)
* Possibilité de définir un nombre de tentatives pour les lectures (1 par défaut) : variable d'environnement `ROK4_OBJECT_READ_ATTEMPTS`
* Possibilité de définir un nombre de tentatives pour les écritures (1 par défaut) : variable d'environnement `ROK4_OBJECT_WRITE_ATTEMPTS`
- Stockage objet (S3, Swift et Ceph)
* Possibilité de définir un nombre de tentatives pour les lectures (1 par défaut) : variable d'environnement `ROK4_OBJECT_READ_ATTEMPTS`
* Possibilité de définir un nombre de tentatives pour les écritures (1 par défaut) : variable d'environnement `ROK4_OBJECT_WRITE_ATTEMPTS`
* Possibilité de définir un temps d'attente, en secondes, entre les tentatives (5 par défaut) : variable d'environnement `ROK4_OBJECT_ATTEMPTS_WAIT`

## 1.3.1

### [Fixed]

* `S3Context` : pour éviter des conflits dans une utilisation multithreadée, la sortie de la fonction HMAC (openssl) est dédiée.
## [1.3.1] - 2024-03-14

## 1.3.0
### Added

### [Added]

* Gestion du multi cluster S3 :
- Gestion du multi cluster S3 :
* nom du cluster = hôte du cluster avec le port (pas de protocole)
* Pour préciser le cluster auquel on s'adresse, le nom du bucket aura la forme `<nom du bucker>@<nom du cluster>`
* Les variables d'environnement `ROK4_S3_URL`, `ROK4_S3_KEY` et `ROK4_S3_SECRETKEY` peuvent contenir une liste de valeurs séparées par des virgules
* **Dans** les descripteurs de pyramide et leur liste ou les objets symboliques, on peut ne pas préciser le nom du cluster : on sait alors qu'on travaille sur le même cluster que celui de l'objet d'origine

### [Fixed]

* Attribute : dans les valeurs des attributs, on échappe les éventuelles back quotes

## 1.2.4

### [Fixed]

* `Cache` : les modifications dans le cache quand il n'est pas par thread (index des dalles, TMS et styles) se font en exclusion mutuelle (mutex lock et unlock)

## 1.2.3

### [Fixed]

* `Level` : Ajout de pixels de marge lors de la reprojection des données d'un niveau de pyramide

## 1.2.2

### [Fixed]

* `LibopenjpegImage` : la lecture des images JPEG 2000 tuilées recharge l'image à la lecture de chaque tuile

## 1.2.1
### Fixed

### [Fixed]
- `S3Context` : pour éviter des conflits dans une utilisation multithreadée, la sortie de la fonction HMAC (openssl) est dédiée.
- Attribute : dans les valeurs des attributs, on échappe les éventuelles back quotes

* `LegendURL` : la fonction de copie d'une instance recopie bien le format et le href
* `LibtiffImage` : correction du calcul de nombre de tuile dans la largeur lors de la lecture d'une image dont la largeur est un multiple de la taille de la tuile
* `BoundingBox` : lorsque l'on met en phase une bbox, les 4 bords doivent être traités indépendemment les uns des autres (avec un calcul de phase pour chacun)
## [1.2.4] - 2023-12-06

### [Changed]
### Changed

* La variable d'environnement `ROK4_TMS_NO_CACHE` permet de désactiver le cache de chargement des TMS
* La variable d'environnement `ROK4_STYLES_NO_CACHE` permet de désactiver le cache de chargement des styles
- La variable d'environnement `ROK4_TMS_NO_CACHE` permet de désactiver le cache de chargement des TMS
- La variable d'environnement `ROK4_STYLES_NO_CACHE` permet de désactiver le cache de chargement des styles

## 1.1.2
### Fixed

### [Changed]
- `Cache` : les modifications dans le cache quand il n'est pas par thread (index des dalles, TMS et styles) se font en exclusion mutuelle (mutex lock et unlock)
- `Level` : Ajout de pixels de marge lors de la reprojection des données d'un niveau de pyramide
- `LibopenjpegImage` : la lecture des images JPEG 2000 tuilées recharge l'image à la lecture de chaque tuile
- `LegendURL` : la fonction de copie d'une instance recopie bien le format et le href
- `LibtiffImage` : correction du calcul de nombre de tuile dans la largeur lors de la lecture d'une image dont la largeur est un multiple de la taille de la tuile
- `BoundingBox` : lorsque l'on met en phase une bbox, les 4 bords doivent être traités indépendemment les uns des autres (avec un calcul de phase pour chacun)

* Le test d'existence d'un objet ou d'un fichier n'est plus une lecture de 1 octet mais une implémentation spécifique à chaque type
* Les TMS et les styles sont cherchés sur le stockage avec et sans extension JSON
## [1.1.2] - 2023-09-14

### [Fixed]
### Added

* Table
* Correction d'une typo dans l'écriture du metadata.json : filedsCount -> fieldsCount
* Style
* La valeur de nodata en sortie d'un style est la première valeur de la palette (et non la couleur pour la valeur 0)

## 1.1.1

### [Fixed]

* LibopenjpegImage
* Fixe sur la lecture des images à tuile unique suite au zonage

## 1.1.0

### [Added]

* LibtiffImage
- LibtiffImage
* Capacité à lire des images tuilées
* Capacité à lire des images avec palette

### [Changed]
### Changed

* LibopenjpegImage
- Le test d'existence d'un objet ou d'un fichier n'est plus une lecture de 1 octet mais une implémentation spécifique à chaque type
- Les TMS et les styles sont cherchés sur le stockage avec et sans extension JSON
- LibopenjpegImage
* Lecture des images à tuile unique par paquet de 256 lignes
* Lecture des images tuilées par tuile

### Fixed

## 1.0.3
- Table
* Correction d'une typo dans l'écriture du metadata.json : filedsCount -> fieldsCount
- Style
* La valeur de nodata en sortie d'un style est la première valeur de la palette (et non la couleur pour la valeur 0)
- LibopenjpegImage
* Fixe sur la lecture des images à tuile unique suite au zonage

## [1.0.3] - 2023-03-14

Les librairies sont gérées de manière indépendantes, conditionnées pour être installées en tant que dépendance dynamique. Le projet a son propre site, avec toutes les versions et leur documentation.

### [Added]
### Added

* Librairie, partie `utils` :
- Librairie, partie `utils` :
* Styles et TMS sont chargés dans un annuaire, qui connait le dossier de stockage des fichiers / objets les définissant
* Les pyramide sont chargées depuis leur descripteur, fichier ou objet
* Librairie, partie `storage` : gère un annuaire de contextes de stockages, fichier, Swift, S3 ou Ceph
* Librairie, partie `image` : permet la lecture et le calcul ligne par ligne
* Librairie, partie `datasource` : permet la lecture en une fois d'un buffer de donnée
* Librairie, partie `datasource` : permet la lecture par morceau d'un buffer de donnée
* Librairie, partie `processors` : gère plusieurs noyaux d'interpolation et la conversion de pixel

* Intégration continue :
- Librairie, partie `storage` : gère un annuaire de contextes de stockages, fichier, Swift, S3 ou Ceph
- Librairie, partie `image` : permet la lecture et le calcul ligne par ligne
- Librairie, partie `datasource` : permet la lecture en une fois d'un buffer de donnée
- Librairie, partie `datasource` : permet la lecture par morceau d'un buffer de donnée
- Librairie, partie `processors` : gère plusieurs noyaux d'interpolation et la conversion de pixel
- Intégration continue :
* Compilation du fichier librok4.so et conditionnement dans des paquets debian avec les headers, avec et sans la prise en charge du stockage ceph
* Jeu des tests unitaires
* Compilation de la documentation et publication sur la branche gh-pages

* Ajout du mode DEBUG à la compilation
- Ajout du mode DEBUG à la compilation

[Unreleased]: https://github.com/rok4/core-cpp/compare/v2.0.5...HEAD
[2.0.5]: https://github.com/rok4/core-cpp/compare/v2.0.3...v2.0.5
[2.0.3]: https://github.com/rok4/core-cpp/compare/v2.0.2...v2.0.3
[2.0.2]: https://github.com/rok4/core-cpp/compare/v2.0.1...v2.0.2
[2.0.1]: https://github.com/rok4/core-cpp/compare/v1.4.0...v2.0.1
[1.4.0]: https://github.com/rok4/core-cpp/compare/v1.3.1...v1.4.0
[1.3.1]: https://github.com/rok4/core-cpp/compare/v1.2.4...v1.3.1
[1.2.4]: https://github.com/rok4/core-cpp/compare/v1.1.2...v1.2.4
[1.1.2]: https://github.com/rok4/core-cpp/compare/v1.0.3...v1.1.2
[1.0.3]: https://github.com/rok4/core-cpp/releases/tag/v1.0.3
16 changes: 7 additions & 9 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,30 @@ Merci d'envisager de contribuer à ce projet !

## Pull request

Le titre de la PR est utilisé pour constituer automatiquement les notes de release. Vous pouvez préciser en commentaire de votre PR des détails qui seront ajoutés dans le fichier `CHANGELOG.md` par les mainteneurs du projet.

Le formalisme du changelog est le suivant, en markdown :
Complétez le fichier `CHANGELOG.md`, dans la partie `[Unreleased]`, en précisant les modifications fonctionnelles apportées. Celles ci seront utilisées pour rédiger le message de release sur GitHub. Le format est basé sur [Keep a Changelog](https://keepachangelog.com/). Les sections sont les suivantes :

```md
### [Added]
### Added

Liste de nouvelles fonctionnalités.

### [Changed]
### Changed

Liste de fonctionnalités existantes modifiées.

### [Deprecated]
### Deprecated

Liste de fonctionnalités dépréciées.

### [Removed]
### Removed

Liste de foncitonnalités retirées.

### [Fixed]
### Fixed

Liste de corrections fonctionnelles.

### [Security]
### Security

Liste de corrections de sécurité.
```
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ Leur définition est contrôlée à l'usage.
- `ROK4_SWIFT_TOKEN_FILE` afin de sauvegarder le token d'accès, et ne pas le demander si ce fichier en contient un
* Pour configurer l'usage de libcurl (intéraction SWIFT et S3)
- `ROK4_SSL_NO_VERIFY`
- `ROK4_NETWORK_TIMEOUT` : temps en secondes d'inactivité d'une requête avant de la stopper. Aucun temps défini côté client si aucune valeur fournie
- `HTTP_PROXY`
- `HTTPS_PROXY`
- `NO_PROXY`
Expand Down
1 change: 1 addition & 0 deletions include/rok4/storage/Context.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
#define ROK4_OBJECT_READ_ATTEMPTS "ROK4_OBJECT_READ_ATTEMPTS"
#define ROK4_OBJECT_WRITE_ATTEMPTS "ROK4_OBJECT_WRITE_ATTEMPTS"
#define ROK4_OBJECT_ATTEMPTS_WAIT "ROK4_OBJECT_ATTEMPTS_WAIT"
#define ROK4_NETWORK_TIMEOUT "ROK4_NETWORK_TIMEOUT"

/**
* \author Institut national de l'information géographique et forestière
Expand Down
Loading