public void idrataMaschera(Model.Maschera maschera, bool ancheOriginale) { string dirMaschere = PathUtil.getCartellaMaschera(maschera.tipo); string dirMiniature = Path.Combine(dirMaschere, PathUtil.THUMB); string nomeFileMiniatura = Path.Combine(dirMiniature, maschera.nomeFile); // Provino (carico solo per 80 pixel) var bmp1 = loadBitmapConDimensione(nomeFileMiniatura, 80); maschera.imgProvino = new ImmagineWic(bmp1); // Originale (più pesante) if (ancheOriginale) { string nomeFileOriginale = Path.Combine(dirMaschere, maschera.nomeFile); // uso la funzione standard // var bmp2 = loadMascheraDaDisco( nomeFileMaschera ); // maschera.imgOriginale = new ImmagineWic( bmp2 ); maschera.imgOriginale = load(nomeFileOriginale); } }
/// <summary> /// Ricavo la lista di tutte le maschere (senza idratare le immagini, solo i nomi) /// </summary> /// <param name="filtro"></param> /// <returns></returns> public List <Digiphoto.Lumen.Model.Maschera> caricaListaMaschere(FiltroMask filtro) { string dirMaschere = getCartellaMaschera(filtro); if (!Directory.Exists(dirMaschere)) { return(null); } List <Digiphoto.Lumen.Model.Maschera> maschere = new List <Digiphoto.Lumen.Model.Maschera>(); // preparo la cartella per le miniature string dirMiniature = Path.Combine(dirMaschere, PathUtil.THUMB); if (!Directory.Exists(dirMiniature)) { Directory.CreateDirectory(dirMiniature); } // Faccio giri diversi per i vari formati grafici che sono indicati nella configurazione (jpg, tif) foreach (string estensione in Configurazione.estensioniGraficheAmmesse) { // Questa è la lista dei files di dimensioni grandi. string [] nomiFilesMaschere = Directory.GetFiles(dirMaschere, searchPattern: "*" + estensione, searchOption: SearchOption.TopDirectoryOnly); // Adesso controllo che per ogni file grande, esista la sua miniatura. foreach (string nomeFileMaschera in nomiFilesMaschere) { FileInfo fi = new FileInfo(nomeFileMaschera); string nomeFileMiniatura = Path.Combine(dirMiniature, fi.Name); if (creaMiniaturaMaschera(nomeFileMaschera, nomeFileMiniatura)) { Digiphoto.Lumen.Model.Maschera msk = new Model.Maschera(); // Metto solo il nome del file senza path msk.nomeFile = fi.Name; msk.tipo = filtro; maschere.Add(msk); } } } // Prima di ritornare la lisa, controllo se nella cartella è presente un file di testo // con eventuale ordinamento string nomeFileOrdinamento = Path.Combine(dirMaschere, "ordinamento.txt"); List <Model.Maschera> listaOrdinata; if (File.Exists(nomeFileOrdinamento)) { List <string> mioOrdinam = new List <string>(File.ReadAllLines(nomeFileOrdinamento)); listaOrdinata = maschere.OrderBy(d => mioOrdinam.IndexOf(d.nomeFile) < 0 ? 9999 : mioOrdinam.IndexOf(d.nomeFile)).ToList(); } else { // Ordino per nome listaOrdinata = maschere.OrderBy(d => d.nomeFile).ToList(); } return(listaOrdinata); }