Ejemplo n.º 1
0
 internal static void FillStorage(RegionsStorage storage, IList<string[]> fileNamesParts, RegionSuffixRegexes regionSuffixRegexes)
 {
     foreach (string[] fileNameStrings in fileNamesParts)
     {
         AddOrAppendRegion(storage, fileNameStrings, regionSuffixRegexes);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Сгенерировать хранилище регионов из изображений
        /// </summary>
        /// <param name="path">Путь к папке с изображениями</param>
        /// <param name="regionSuffixRegexes">Набор регулярных выражений для парсинга названий</param>
        /// <returns>Хранидище регионов</returns>
        public static RegionsStorage Generate(string path, RegionSuffixRegexes regionSuffixRegexes)
        {
            if (!Directory.Exists(path))
            {
                return DefaultStorage;
            }

            folder = path;
            var storage = new RegionsStorage();
            FileInfo[] files = (new DirectoryInfo(folder)).GetFiles("*_*.png");
            var sortedFileNames = files.Select(file => file.Name).ToList();
            sortedFileNames.Sort();
            var separtedFileNames = sortedFileNames.Select(file=>file.Split(regionSuffixRegexes.Separator)).ToList();

            FillStorage(storage, separtedFileNames, regionSuffixRegexes);

            return storage;
        }
Ejemplo n.º 3
0
 private static void FillRegion(Region region, string suffix, RegionSuffixRegexes regionSuffixRegexes)
 {
     string folderName = folder;
     if (folder.Contains(Environment.CurrentDirectory))
     {
         folderName = Path.GetDirectoryName(folder) ?? folder;
     }
     string path = Path.Combine(folderName, region.Name + regionSuffixRegexes.Separator + suffix);
     if (regionSuffixRegexes.ThumbnailRegex.IsMatch(suffix))
     {
         region.ThumbnailImageName= path;
         return;
     }
     if (regionSuffixRegexes.PatternImageRegex.IsMatch(suffix))
     {
         region.PatternImageName = path;
         return;
     }
     if (regionSuffixRegexes.SourceImageRegex.IsMatch(suffix))
     {
         region.SourceImageName = path;
         if (File.Exists(path))
         {
             region.Colors = GenerateColorsForImage(path);
         }
     }
 }
Ejemplo n.º 4
0
 private static void AddOrAppendRegion(RegionsStorage storage, string[] fileNameParts, RegionSuffixRegexes regionSuffixRegexes)
 {
     var region = storage.FindRegion(fileNameParts[0]);
     if (region == null)
     {
         region = new Region(fileNameParts[0]);
         storage.Regions.Add(region);
     }
     FillRegion(region, fileNameParts[1], regionSuffixRegexes);
 }