Opérations sur les fichiers d'un dossier d'assets, sans dépendance Qt/GPU.
More...
#include <AssetFileOperations.h>
|
| | AssetFileOperations (std::filesystem::path assetsDirectory) |
| std::vector< std::filesystem::path > | list () const |
| FileOperationResult | import (const std::filesystem::path &sourceFile, AssetFamily family, int decodedWidth, int decodedHeight) const |
| | Copie un fichier externe dans le dossier géré, après validation de son contrat.
|
| FileOperationResult | rename (const std::filesystem::path &source, const std::string &newStem) const |
| | Renomme le fichier source en newStem, en conservant son extension d'origine.
|
| FileOperationResult | duplicate (const std::filesystem::path &source) const |
| | Duplique source sous un nom unique (« … (copie) », « … (copie 2) », …).
|
|
| std::filesystem::path | pathForStem (const std::string &stem, const std::filesystem::path &extension) const |
| | Chemin d'un nom de fichier (sans extension) dans le dossier géré, avec l'extension donnée.
|
Opérations sur les fichiers d'un dossier d'assets, sans dépendance Qt/GPU.
Pendant exact de hmi::LevelFileOperations, dont elle réutilise le type de résultat (hmi::FileOperationResult) : même contrat, jamais d'exception vers l'appelant (EX-NFR-040), chaque opération renvoie un résultat exploitable (EX-NFR-010).
Deux différences avec les niveaux justifient une classe séparée plutôt qu'une réutilisation directe :
- un import copie un fichier externe (hors du dossier géré), après validation de ses dimensions contre le contrat de sa famille (EX-REN-007) — un niveau n'a pas d'équivalent ;
- un renommage conserve l'extension d'origine (.png), alors qu'un niveau n'en a pas côté utilisateur (LevelFileOperations l'ajoute elle-même).
◆ AssetFileOperations()
| hmi::AssetFileOperations::AssetFileOperations |
( |
std::filesystem::path | assetsDirectory | ) |
|
|
explicit |
◆ duplicate()
| FileOperationResult hmi::AssetFileOperations::duplicate |
( |
const std::filesystem::path & | source | ) |
const |
|
nodiscard |
Duplique source sous un nom unique (« … (copie) », « … (copie 2) », …).
◆ import()
| FileOperationResult hmi::AssetFileOperations::import |
( |
const std::filesystem::path & | sourceFile, |
|
|
AssetFamily | family, |
|
|
int | decodedWidth, |
|
|
int | decodedHeight ) const |
|
nodiscard |
Copie un fichier externe dans le dossier géré, après validation de son contrat.
Copie, jamais déplacement : le fichier source appartient à l'utilisateur (point d'attention LOT-43 TACHE-02). Les dimensions sont vérifiées avant la copie : importer un asset invalide pour le découvrir en jeu serait une régression par rapport à la validation au chargement (hmi::TextureCache).
Le décodage de l'image (hmi::decodeImageFile, dépendance Qt) reste à la charge de l'appelant, qui fournit les dimensions déjà lues : cette classe reste ainsi pure (std::filesystem seul), comme hmi::LevelFileOperations, et testable sans Qt (EX-NFR-010).
- Parameters
-
| sourceFile | Fichier externe à copier. |
| family | Famille de l'asset, qui fixe les dimensions attendues. |
| decodedWidth | Largeur de l'image déjà décodée, en pixels. |
| decodedHeight | Hauteur de l'image déjà décodée, en pixels. |
- Returns
- Le résultat, avec le chemin copié en cas de succès.
◆ list()
| std::vector< std::filesystem::path > hmi::AssetFileOperations::list |
( |
| ) |
const |
|
nodiscard |
- Returns
- Les fichiers du dossier, triés par nom (vide si le dossier n'existe pas).
◆ pathForStem()
| std::filesystem::path hmi::AssetFileOperations::pathForStem |
( |
const std::string & | stem, |
|
|
const std::filesystem::path & | extension ) const |
|
nodiscardprivate |
Chemin d'un nom de fichier (sans extension) dans le dossier géré, avec l'extension donnée.
◆ remove()
Supprime le fichier source.
◆ rename()
| FileOperationResult hmi::AssetFileOperations::rename |
( |
const std::filesystem::path & | source, |
|
|
const std::string & | newStem ) const |
|
nodiscard |
Renomme le fichier source en newStem, en conservant son extension d'origine.
◆ _directory
| std::filesystem::path hmi::AssetFileOperations::_directory |
|
private |
The documentation for this class was generated from the following files: