private void ConvertProject(ProjectViewModel projectViewModel) { try { Logger.Log.Debug("Converting"); var project = projectViewModel; if (project.Document.Blocks.Count < 1) { Logger.Log.Debug("Compiling Cancelled[InsufficientBlockCount]"); return; } Brush _DefaultForeground = ColorUtility.ConvertBrushFromString(Settings.Default.Foreground.ToString()); Brush _DefaultBackground = ColorUtility.ConvertBrushFromString(Settings.Default.Background.ToString()); Brush _LastForeground; Brush _LastBackground; _LastForeground = _DefaultForeground; _LastBackground = _DefaultBackground; string result = ProcessBlocks(project.Document.Blocks, _DefaultForeground, _DefaultBackground, _LastForeground, _LastBackground); project.Project.Document.Blocks.Clear(); project.Project.Document.Blocks.Add(new Paragraph(new Run(result) { Foreground = _DefaultForeground, Background = _DefaultBackground })); Logger.Log.DebugFormat("Converted ID[{0}] Name[{1}]", projectViewModel.Id, projectViewModel.Name); } catch (Exception ex) { Logger.Log.Error("Convert Exception", ex); } }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return(ColorUtility.ConvertBrushFromString(value as string)); }
private DocumentBuilder CreateDocument(ProjectViewModel project) { string text = null; text = new TextRange(project.Document.ContentStart.GetNextInsertionPosition(LogicalDirection.Forward), project.Document.ContentEnd.GetNextInsertionPosition(LogicalDirection.Backward)).Text; if (string.IsNullOrWhiteSpace(text)) { return(null); } Brush defaultForeground = ColorUtility.ConvertBrushFromString(Settings.Default.Foreground.ToString()); Brush defaultBackground = ColorUtility.ConvertBrushFromString(Settings.Default.Background.ToString()); bool highlight = false; DocumentBuilder documentBuilder = new DocumentBuilder(defaultForeground, defaultBackground); StringBuilder stringBuilder = new StringBuilder(); RegexHelper regexHelper = new RegexHelper(); Match match = null; string subString = String.Empty; for (int i = 0; i < text.Length; i++) { switch (text[i].ToString()) { case "[": subString = text.Substring(i); match = regexHelper.WhiteSpace.Match(subString, 0); if (match.Success == true) { StringBuilder whiteSpace = new StringBuilder(); for (int j = 0; j < int.Parse(match.Groups[1].Value); j++) { whiteSpace.Append(" "); } stringBuilder.Append(whiteSpace); i = i + (match.Length - 1); } break; case "%": subString = text.Substring(i); switch (subString[1].ToString()) { case "{": case "}": case "[": case "]": case "%": case "\\": stringBuilder.Append(subString[1].ToString()); break; case "r": stringBuilder.Append("\r\n"); break; case "t": stringBuilder.Append("\t"); break; case "b": stringBuilder.Append(" "); break; case "x": case "X": case "c": case "C": switch (subString[2].ToString()) { case "x": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); if (highlight) { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#808080"); } else { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#000000"); } break; case "X": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); documentBuilder.ActiveBackground = ColorUtility.ConvertBrushFromString("#000000"); break; case "r": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); if (highlight) { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#FF0000"); } else { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#800000"); } break; case "R": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); documentBuilder.ActiveBackground = ColorUtility.ConvertBrushFromString("#FF0000"); break; case "g": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); if (highlight) { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#00FF00"); } else { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#008000"); } break; case "G": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); documentBuilder.ActiveBackground = ColorUtility.ConvertBrushFromString("#00FF00"); break; case "y": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); if (highlight) { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#FFFF00"); } else { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#808000"); } break; case "Y": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); documentBuilder.ActiveBackground = ColorUtility.ConvertBrushFromString("#FFFF00"); break; case "b": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); if (highlight) { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#0000FF"); } else { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#000080"); } break; case "B": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); documentBuilder.ActiveBackground = ColorUtility.ConvertBrushFromString("#0000FF"); break; case "m": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); if (highlight) { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#FF00FF"); } else { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#800080"); } break; case "M": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); documentBuilder.ActiveBackground = ColorUtility.ConvertBrushFromString("#FF00FF"); break; case "c": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); if (highlight) { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#00FFFF"); } else { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#008080"); } break; case "C": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); documentBuilder.ActiveBackground = ColorUtility.ConvertBrushFromString("#00FFFF"); break; case "w": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); if (highlight) { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#FFFFFF"); } else { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString("#C0C0C0"); } break; case "W": documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); documentBuilder.ActiveBackground = ColorUtility.ConvertBrushFromString("#FFFFFF"); break; case "n": highlight = false; documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); documentBuilder.ActiveForeground = defaultForeground; documentBuilder.ActiveBackground = defaultBackground; break; case "h": highlight = true; break; case "f": break; case "i": break; default: match = regexHelper.AnsiColor.Match(subString, 0, 11); if (match.Success == true) { documentBuilder.AddRun(stringBuilder.ToString()); stringBuilder.Clear(); if (match.Groups[1].Value.Equals("X")) { documentBuilder.ActiveBackground = ColorUtility.ConvertBrushFromString(match.Groups[2].Value); } else { documentBuilder.ActiveForeground = ColorUtility.ConvertBrushFromString(match.Groups[2].Value); } i = i + (match.Length - 3); } break; } i++; break; } i++; break; case "{": case "}": case "]": case "\\": break; default: stringBuilder.Append(text[i].ToString()); break; } } documentBuilder.AddRun(stringBuilder.ToString()); return(documentBuilder); }