Téléchargé 28 fois
Vote des utilisateurs
1
0
Détails
Licence : Non renseignée
Mise en ligne le 13 mars 2023
Plate-forme :
Windows
Langue : Français
Référencé dans
Navigation
Imager - afficheur d'images, y compris *. WEBP
Imager - afficheur d'images, y compris *. WEBP
Nouvelle version qui permet, en plus d'afficher de nombreuses images, de les rechercher dans les dossiers disque grâce à une liste de fichiers comprenant le décompte par types d'images possibles.
Le programme Imager permet de visualiser toutes les images disponibles sur l'ordinateur. Il est codé en cpp avec une architecture MFC pour fonctionner sous Windows 10 et être compilée avec Visual Studio Community 2019.
Généralités
L’architecture du programme est un très classique document-vue avec la classe CImagerApp, dérivée de CWinApp pour l’application, contenue dans les fichiers Imager.h et Imager.cpp et la classe CMainFrame dérivée de CFrameWnd contenue dans les fichiers MainFrm.h et MainFrm.cpp. C’est facile de retrouver les autres éléments dans les différents fichiers source, car d’une manière générale, les noms ont un rapport avec les classes contenues. Une exception est faite pour les classes de l'architecture *doc et *view où ce terme est déplacé au début du nom pour les grouper ensemble et éviter de les éparpiller dans toute la liste classée par ordre alphabétique.
La structure multivues utilise 14 groupes de classes pour gérer les différents types de fichiers images affichés. Ces groupes sont gérés par la classe CMultiDocTemplate avec les arguments suivants :
Le détail des 14 groupes est donné en annexe.
Cette disposition permet de localiser et identifier facilement les programmes gérant les différentes fonctions. Elles utilisent largement Gdiplus pour la lecture, l'écriture et l'affichage. Les fichiers BitmapUtil.h, BitmapUtil.cpp, IconCurs.h, IconCurs.cpp, ResourceUtil.h, et ResourceUtil.cpp fournissent aussi les procédures nécessaires pour gérer les bitmaps, traiter les icônes et les curseurs et accéder aux ressources des fichiers de programme. Ils complètent les lacunes de Gdiplus qui n'est pas capable d'écrire certains fichiers. Les fichiers ListUtil.h et ListUtil.cpp assurent la gestion et le classement de la liste de fichiers.
Une complexité est ajoutée dans le traitement des icônes Windows pour les extraire au format 24 bits par pixel au lieu du 32 bits d'origine, ce dernier format non standard n'étant pas trop 'apprécié' par certains utilitaires y compris de Visual Studio. Bien sûr, la dimension du pixel pourrait être encore plus réduite pour certaines icônes, mais était-ce nécessaire car la taille mémoire n'est plus un problème ! Avec l'avantage pour ces deux formats sans palette de couleurs de privilégier la vitesse d'exécution.
Ce programme Traite aussi le nouveau format *.WEBP grâce au codec que Google met à disposition. Le programme est compilé avec l'option x64 pour permettre d'utiliser telle qu'elle la librairie fournie libwebp.lib, ce qui est aussi intéressant d'une manière générale pour la vitesse d'exécution du programme. Renseignement à http://groups.google.com/a/webmproject.org/group/webp-discuss.
Help
Les Classes CHelpDlg et CTreeView assurent l’affichage d’un mode d’emploi avec l’aide des fichiers *.htm contenus dans le dossier Help ; le fichier HMenu.h contient le noyau initial du menu de l'aide. Cette partie peut facilement être transportée dans une autre application elle mets en œuvre ces 3 fichiers HelpDlg.h, HelpDlg.cpp et HMenu.h ; ce dernier assurant la liaison avec l’application. Pour l'exemple, la mise en ouvre de cette fonction est complètement contenue dans la Classe d’application CImagerApp.
Nouvelle commande "Ouvrir Dossier
Cette commande est accessible par une entrée du menu Fichier, Ouvrir dossier mais il est possible de l'utiliser en copiant par un drag/drop une liste de fichiers et/ou dossiers sélectée sur l'Explorateur de fichiers Windows. Cette opération utilise la requète ON_WM_DROPFILES autorisée par DragAcceptFiles() implémentés dans la classe CMainFrame. Un 'bricolage' des entrées et réalisé dans la classe CImagerApp pour gérer correctement les entrées issues de Ouvrir fichiers, Ouvrir dossiers, Fichiers récentsdrag/drop sans modifier la classe CDocManager.
Le programme Imager permet de visualiser toutes les images disponibles sur l'ordinateur. Il est codé en cpp avec une architecture MFC pour fonctionner sous Windows 10 et être compilée avec Visual Studio Community 2019.
Généralités
L’architecture du programme est un très classique document-vue avec la classe CImagerApp, dérivée de CWinApp pour l’application, contenue dans les fichiers Imager.h et Imager.cpp et la classe CMainFrame dérivée de CFrameWnd contenue dans les fichiers MainFrm.h et MainFrm.cpp. C’est facile de retrouver les autres éléments dans les différents fichiers source, car d’une manière générale, les noms ont un rapport avec les classes contenues. Une exception est faite pour les classes de l'architecture *doc et *view où ce terme est déplacé au début du nom pour les grouper ensemble et éviter de les éparpiller dans toute la liste classée par ordre alphabétique.
La structure multivues utilise 14 groupes de classes pour gérer les différents types de fichiers images affichés. Ces groupes sont gérés par la classe CMultiDocTemplate avec les arguments suivants :
- UINT nIDResource, spécifie l'ID de la ressource utilisée avec ce type de document,
- CRuntimeClass* pDocClass, pointe l'objet d'une classe CDocument indiquant les opérations liées à ce type de document,
- CRuntimeClass* pFrameClass, pointe l'objet d'une classe CFrameClass indiquant les opérations support de la fenêtre propre à ce type de documents,
- CRuntimeClass* pViewClass pointe l'objet d'une classe CViewClass indiquant les fonctions nécessaires à l'affichage de ce type de document.
Le détail des 14 groupes est donné en annexe.
Cette disposition permet de localiser et identifier facilement les programmes gérant les différentes fonctions. Elles utilisent largement Gdiplus pour la lecture, l'écriture et l'affichage. Les fichiers BitmapUtil.h, BitmapUtil.cpp, IconCurs.h, IconCurs.cpp, ResourceUtil.h, et ResourceUtil.cpp fournissent aussi les procédures nécessaires pour gérer les bitmaps, traiter les icônes et les curseurs et accéder aux ressources des fichiers de programme. Ils complètent les lacunes de Gdiplus qui n'est pas capable d'écrire certains fichiers. Les fichiers ListUtil.h et ListUtil.cpp assurent la gestion et le classement de la liste de fichiers.
Une complexité est ajoutée dans le traitement des icônes Windows pour les extraire au format 24 bits par pixel au lieu du 32 bits d'origine, ce dernier format non standard n'étant pas trop 'apprécié' par certains utilitaires y compris de Visual Studio. Bien sûr, la dimension du pixel pourrait être encore plus réduite pour certaines icônes, mais était-ce nécessaire car la taille mémoire n'est plus un problème ! Avec l'avantage pour ces deux formats sans palette de couleurs de privilégier la vitesse d'exécution.
Ce programme Traite aussi le nouveau format *.WEBP grâce au codec que Google met à disposition. Le programme est compilé avec l'option x64 pour permettre d'utiliser telle qu'elle la librairie fournie libwebp.lib, ce qui est aussi intéressant d'une manière générale pour la vitesse d'exécution du programme. Renseignement à http://groups.google.com/a/webmproject.org/group/webp-discuss.
Help
Les Classes CHelpDlg et CTreeView assurent l’affichage d’un mode d’emploi avec l’aide des fichiers *.htm contenus dans le dossier Help ; le fichier HMenu.h contient le noyau initial du menu de l'aide. Cette partie peut facilement être transportée dans une autre application elle mets en œuvre ces 3 fichiers HelpDlg.h, HelpDlg.cpp et HMenu.h ; ce dernier assurant la liaison avec l’application. Pour l'exemple, la mise en ouvre de cette fonction est complètement contenue dans la Classe d’application CImagerApp.
Nouvelle commande "Ouvrir Dossier
Cette commande est accessible par une entrée du menu Fichier, Ouvrir dossier mais il est possible de l'utiliser en copiant par un drag/drop une liste de fichiers et/ou dossiers sélectée sur l'Explorateur de fichiers Windows. Cette opération utilise la requète ON_WM_DROPFILES autorisée par DragAcceptFiles() implémentés dans la classe CMainFrame. Un 'bricolage' des entrées et réalisé dans la classe CImagerApp pour gérer correctement les entrées issues de Ouvrir fichiers, Ouvrir dossiers, Fichiers récentsdrag/drop sans modifier la classe CDocManager.
Nos ressources disponibles
Type fichier | IDResource | DocClass | FrameClass | ViewClass |
*.bmp | IDR_IMAGER_BMP | CImagerDoc | CChildFrame | CImageView |
*.gif | IDR_IMAGER_GIF | CImagerDoc | CCHildFrame | CGIFFView |
*.jpg | IDR_IMAGER_JPG | CImagerDoc | CChildFrame | CImagerView |
*.png | IDR_IMAGER_PNG | CImagerDoc | CChildFrame | CImagerView |
*.tif | IDR_IMAGER_TIF | CImagerDoc | CChildFrame | CTIFFView |
*.webp | IDR_IMAGER_WEB | CImagerDoc | CChildFrame | CImagerView |
*.cur | IDR_IMAGER_CUR | CIconCurDoc | CChildFrame | CIconCurView |
*.ico | IDR_IMAGER_ICO | CIconCurDoc | CChildFrame | CIconCurView |
*.wmf | IDR_IMAGER_WMF | CImagerDoc | CChildFrame | CImagerView |
*.emf | IDR_IMAGER_EMF | CImagerDoc | CChildFrame | CImagerView |
*.exe | IDR_IMAGER_EXE | CResourceDoc | CChildFrame | CResourceView |
*.dll | IDR_IMAGER_DLL | CResourceDoc | CChildFrame | CResourceView |
Icônes Windows | IDR_IMAGER_WIC | CIconCurDoc | CChildFrame | CWinIconView |
Icônes Windows | IDR_IMAGER_WIC | CIconCurDoc | CChildFrame | CWinIconView |
Liste Fichiers | IDR_IMAGER_DIR | CDirectoryDoc | CChildFrame | CDirectoryView |
A remarquer que les quatre dernières structures n'affichent pas directement les images mais présentent une liste d'affichettes ou de noms permettant la sélection de l'image présentée par l'une des autres structures adaptées.
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.