コード例 #1
0
        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);
            }
        }
コード例 #2
0
 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
 {
     return(ColorUtility.ConvertBrushFromString(value as string));
 }
コード例 #3
0
        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);
        }