From 82e4baf8e8c19a6e8aeab92ed8e793e60f466b84 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Fri, 7 Jul 2017 15:57:36 +0000 Subject: [PATCH] EgtGraphics 1.8g1 : - aggiunta gestione immagini (inizialmente solo recupero dimensioni in pixel). --- EgtGraphics.rc | Bin 11604 -> 11604 bytes EgtGraphics.vcxproj | 2 + EgtGraphics.vcxproj.filters | 6 +++ ImageMgr.cpp | 75 ++++++++++++++++++++++++++++++++++++ ImageMgr.h | 29 ++++++++++++++ 5 files changed, 112 insertions(+) create mode 100644 ImageMgr.cpp create mode 100644 ImageMgr.h diff --git a/EgtGraphics.rc b/EgtGraphics.rc index 0a08a5e7f6da9abe86eda86180e19398f62323fc..6e51cab042806dbac0fb8714e50ea3db987d50c9 100644 GIT binary patch delta 105 zcmcZ-btP)UH#SD|&GmA^%*^QwhLaCU>u&xd>BG3WjoXYFEOD4=a)V$FTvA4;fd!lR PAIT<&IJ!Z6%5Gc$cO)Wd delta 105 zcmcZ-btP)UH#SDo&GmA^%*?3_hLaCU>u&xd>BG3WjoXYFEOD4=a)V$FTvA4;fd!lR PAIT<&IJ!Z6%5Gc$bEqO& diff --git a/EgtGraphics.vcxproj b/EgtGraphics.vcxproj index 1f8b019..82dd418 100644 --- a/EgtGraphics.vcxproj +++ b/EgtGraphics.vcxproj @@ -226,6 +226,7 @@ copy $(TargetPath) \EgtProg\Dll64 + @@ -240,6 +241,7 @@ copy $(TargetPath) \EgtProg\Dll64 + diff --git a/EgtGraphics.vcxproj.filters b/EgtGraphics.vcxproj.filters index 2224580..455a10f 100644 --- a/EgtGraphics.vcxproj.filters +++ b/EgtGraphics.vcxproj.filters @@ -84,6 +84,9 @@ File di intestazione + + File di intestazione + @@ -137,6 +140,9 @@ File di origine + + File di origine + diff --git a/ImageMgr.cpp b/ImageMgr.cpp new file mode 100644 index 0000000..fb9e691 --- /dev/null +++ b/ImageMgr.cpp @@ -0,0 +1,75 @@ +//---------------------------------------------------------------------------- +// EgalTech 2017-2017 +//---------------------------------------------------------------------------- +// File : ImageMgr.cpp Data : 05.07.17 Versione : 1.8g1 +// Contenuto : Implementazione della classe gestione immagini. +// +// +// +// Modifiche : 05.07.17 DS Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +//--------------------------- Include ---------------------------------------- +#include "stdafx.h" +#include "ImageMgr.h" +#include "DllMain.h" +#include "/EgtDev/Include/EGrDllMain.h" +#include "/EgtDev/Include/EgtILogger.h" +#include "/EgtDev/Include/SELkKeyProc.h" +#include "/EgtDev/Include/EgtKeyCodes.h" +#include "/EgtDev/Include/EgtStringConverter.h" +#include "/EgtDev/Extern/FreeImage/Include/FreeImage.h" + +using namespace std ; + +//---------------------------------------------------------------------------- +IEgrImageMgr* +CreateEgrImageMgr( void) +{ + // verifico la chiave e le opzioni + if ( ! TestKeyForEGr( GetEGrKey(), 0, GetEGrLogger())) + return false ; + // creo l'oggetto + return static_cast ( new(nothrow) ImageMgr) ; +} + +//---------------------------------------------------------------------------- +ImageMgr::ImageMgr( void) +{ +} + +//---------------------------------------------------------------------------- +ImageMgr::~ImageMgr( void) +{ +} + +//---------------------------------------------------------------------------- +bool +ImageMgr::GetImagePixels( const std::string& sFile, int& nPixelX, int& nPixelY) +{ + // deduco il formato dell'immagine dalla sua segnatura o dalla estensione del file + FREE_IMAGE_FORMAT nFif = FreeImage_GetFileTypeU( stringtoW( sFile), 0) ; + if ( nFif == FIF_UNKNOWN) + nFif = FreeImage_GetFIFFromFilenameU( stringtoW( sFile)) ; + // se non determinata, esco con errore + if ( nFif == FIF_UNKNOWN) + return false ; + + // carico l'header e i dati dell'immagine + FIBITMAP* pDib = nullptr ; + if ( FreeImage_FIFSupportsReading( nFif)) + pDib = FreeImage_LoadU( nFif, stringtoW( sFile), FIF_LOAD_NOPIXELS) ; + if ( pDib == nullptr) + return false ; + + // recupero alcuni dati dell'immagine e li verifico + nPixelX = FreeImage_GetWidth( pDib) ; + nPixelY = FreeImage_GetHeight( pDib) ; + + // libero la memoria + FreeImage_Unload( pDib) ; + + return true ; +} diff --git a/ImageMgr.h b/ImageMgr.h new file mode 100644 index 0000000..e956ec6 --- /dev/null +++ b/ImageMgr.h @@ -0,0 +1,29 @@ +//---------------------------------------------------------------------------- +// EgalTech 2017-2017 +//---------------------------------------------------------------------------- +// File : ImageMgr.h Data : 05.07.17 Versione : 1.8gb1 +// Contenuto : Dichiarazione della classe gestione immagini. +// +// +// +// Modifiche : 05.07.17 DS Creazione modulo. +// +// +//---------------------------------------------------------------------------- + +#pragma once + +//---------------------------------------------------------------------------- +#include "/EgtDev/Include/EGrImageMgr.h" + + +//---------------------------------------------------------------------------- +class ImageMgr : public IEgrImageMgr +{ + public : + ~ImageMgr( void) override ; + bool GetImagePixels( const std::string& sFile, int& nPixelX, int& nPixelY) override ; + + public : + ImageMgr( void) ; +} ;