IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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 :

  • 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
    Détails des 14 groupes :

    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.