private PainterEventArgs(FilesConfigInfo fileConfigInfo, string fileName, string densityKey, Size? documentSize, Exception exception) { FileConfigInfo = fileConfigInfo; FileName = fileName; DensityKey = densityKey; DocumentSize = documentSize; Exception = exception; }
/// <summary> /// Создать директорию для файлов и сформировать путь для сохранения файла /// </summary> /// <param name="outputDirectoryPath">Выходная директория</param> /// <param name="fileConfigInfo">FilesConfigInfo</param> /// <param name="densityInfo">DensityInfo</param> /// <param name="fileExtension">Расширения</param> /// <returns></returns> private string CreateDirectoryAndFilePath(string outputDirectoryPath, FilesConfigInfo fileConfigInfo, DensityInfo densityInfo, string fileExtension = "png") { string dimension = fileConfigInfo.ConfigInfo != null ? fileConfigInfo.ConfigInfo.Dimension : String.Empty; if (!Directory.Exists(Path.Combine(outputDirectoryPath, AndroidDensities.GetDensityDirectoryName(densityInfo.Key, dimension)))) { Directory.CreateDirectory(Path.Combine(outputDirectoryPath, AndroidDensities.GetDensityDirectoryName(densityInfo.Key, dimension))); } return(Path.Combine(outputDirectoryPath, AndroidDensities.GetDensityDirectoryName(densityInfo.Key, dimension), String.Format("{0}.{1}", Path.GetFileNameWithoutExtension(fileConfigInfo.FileInfo.Name), fileExtension))); }
/// <summary> /// Разукрасить и сохраниь /// </summary> /// <param name="outputDirectoryPath">Выходная директория</param> /// <param name="fileConfigInfo">конфигурационная информация о файле</param> private void PaintAndSaveFile(String outputDirectoryPath, FilesConfigInfo fileConfigInfo) { var size = fileConfigInfo.ConfigInfo.Size; var sourceColor = fileConfigInfo.ConfigInfo.SourceColor; var color = fileConfigInfo.ConfigInfo.Color; var unitType = fileConfigInfo.ConfigInfo.SizeUnitType; try { var svgDocument = SvgDocument.Open(fileConfigInfo.FileInfo.FullName); ReColorDocument(ref svgDocument, sourceColor, color); if (unitType.Equals(SizeUnitType.Dp)) { foreach (var densityInfo in AndroidDensities.DensityCollection) { ReSizeDocument(ref svgDocument, size, densityInfo.Density); var documentSize = new Size(svgDocument.Width, svgDocument.Height); var filePath = CreateDirectoryAndFilePath(outputDirectoryPath, fileConfigInfo, densityInfo); SaveDocumentAsPngFile(ref svgDocument, filePath, ImageFormat.Png); RaiseFilePainted(fileConfigInfo, Path.GetFileName(filePath), densityInfo.Key, documentSize); } } else { foreach (var densityInfo in AndroidDensities.DensityCollection) { ReSizeDocument(ref svgDocument, size, AndroidDensities.mdpi.Density); var documentSize = new Size(svgDocument.Width, svgDocument.Height); var filePath = CreateDirectoryAndFilePath(outputDirectoryPath, fileConfigInfo, densityInfo); SaveDocumentAsPngFile(ref svgDocument, filePath, ImageFormat.Png); RaiseFilePainted(fileConfigInfo, Path.GetFileName(filePath), densityInfo.Key, documentSize); } } } catch (Exception ex) { RaiseFilePainted(ex); } }
/// <summary> /// Создать конфигурацию для директории /// </summary> /// <param name="directoryInfo">DirectoryInfo</param> /// <returns>Конфигурация</returns> private DirectoriesConfigInfo CreateDirectoryConfigInfo(DirectoryInfo directoryInfo) { DirectoriesConfigInfo directoryConfigInfo = new DirectoriesConfigInfo(directoryInfo); XmlConfigReadingResult configReadingResult = null; var configFile = FindConfigFile(directoryInfo); if (configFile != null) { configReadingResult = ReadXmlConfigurationFile(configFile.FullName); directoryConfigInfo.ConfigInfo = configReadingResult != null ? configReadingResult.ConfigDirectoryInfo : new ConfigInfo(); } foreach (var directory in directoryInfo.GetDirectories()) { directoryConfigInfo.Nodes.Add(CreateDirectoryConfigInfo(directory)); } foreach (var file in directoryInfo.GetFiles()) { if (Path.GetExtension(file.Name).Contains("svg")) { var fileConfigInfo = new FilesConfigInfo(file); if (configReadingResult != null) { var configFileInfo = configReadingResult.ConfigFileInfoCollection.FirstOrDefault(f => f.FileName == Path.GetFileNameWithoutExtension(file.Name)); if (configFileInfo != null) { fileConfigInfo.ConfigInfo = configFileInfo; } else { fileConfigInfo.ConfigInfo = configReadingResult.ConfigDirectoryInfo; } } directoryConfigInfo.Nodes.Add(fileConfigInfo); } } return(directoryConfigInfo); }
public PainterEventArgs(FilesConfigInfo fileConfigInfo, string fileName, string densityKey, Size documentSize) : this(fileConfigInfo, fileName, densityKey, documentSize, null) { }
private void RaiseFilePainted(FilesConfigInfo fileConfigInfo, string fileName, string densityKey, Size documentSize) { RaiseFilePainted(new PainterEventArgs(fileConfigInfo, fileName, densityKey, documentSize)); }