Beispiel #1
0
 private void UpdateStyle()
 {
     StyleConfiguration =
         new RegionStyle
         .Builder {
         Fill         = true,
         FillMaterial = this.FillMaterial,
         Outline      = false,
         OutlineStyle = this.OutlineStyleConfiguration
     }
     .Build();
 }
    private void DrawRegion(NamedRectangleRegion region)
    {
        RectangleVObject vo = new RectangleVObject(region.Left, region.Top, region.Width, region.Height);

        vo.BeginUpdate();
        vo.Name = region.Name;
        RegionStyle style = this.RegionDisplayStyle ?? new RegionStyle();

        vo.BorderWidth = style.BorderWidth;
        vo.BorderColor = style.BorderColor;
        vo.FillColor   = style.FillColor;
        vo.Locked      = true;
        vo.EndUpdate();
        _regionLayer.VObjects.Add(vo);
    }
    public System.Collections.Generic.IEnumerable <ScriptDescriptor> GetScriptDescriptors()
    {
        ScriptControlDescriptor scd = new ScriptControlDescriptor("PhotoLabel.PhotoLabelControl", container.ClientID);

        scd.AddComponentProperty("canvasViewer", _canvasViewer.ClientID);
        scd.AddProperty("_photoLayerName", _photoLayer.Name);
        scd.AddProperty("_regionLayerName", _regionLayer.Name);
        scd.AddProperty("_zoomInNavigatorId", zoomInNavigator.ClientID);
        scd.AddProperty("_zoomOutNavigatorId", zoomOutNavigator.ClientID);
        scd.AddProperty("_panNavigatorId", panNavigator.ClientID);

        RegionStyle style = this.RegionDisplayStyle ?? new RegionStyle();

        scd.AddScriptProperty("_regionDisplayStyle", style.GetJSON());

        style = this.CurrentRegionDisplayStyle ?? new RegionStyle();
        scd.AddScriptProperty("_currentRegionDisplayStyle", style.GetJSON());

        return(new ScriptDescriptor[] { scd });
    }
Beispiel #4
0
        protected override void InitMapConfig()
        {
            base.InitMapConfig();

            // Select first roof material by default
            for (int i = 0; i < FillMaterialsToggles.Count; i++)
            {
                FillMaterialsToggles[i].isOn = i == 0;
            }

            StyleConfiguration        = ExampleDefaults.DefaultGameObjectOptions.RegionStyle;
            OutlineStyleConfiguration = ExampleDefaults.DefaultGameObjectOptions.SegmentStyle;

            if (FillMaterials != null && FillMaterials.Count > 0)
            {
                FillMaterial = FillMaterials[0];
            }

            UpdateStyle();
        }
        /// <summary>
        /// Processes a region element.
        /// </summary>
        /// <param name="element">Region code element.</param>
        public void VisitRegionElement(RegionElement element)
        {
            RegionStyle regionStyle = _configuration.Formatting.Regions.Style;

            if (regionStyle == RegionStyle.Default)
            {
                // Use the default region style
                regionStyle = RegionStyle.Directive;
            }

            if (regionStyle == RegionStyle.NoDirective ||
                !element.DirectivesEnabled)
            {
                CodeWriter.WriteVisitElements(element.Children, Writer, this);
            }
            else
            {
                if (regionStyle == RegionStyle.Directive)
                {
                    WriteRegionBeginDirective(element);
                }
                else if (regionStyle == RegionStyle.CommentDirective)
                {
                    CommentElement commentDirective = new CommentElement(
                        string.Format(
                            CultureInfo.InvariantCulture,
                            Configuration.Formatting.Regions.CommentDirectiveBeginFormat,
                            element.Name).TrimEnd());
                    VisitCommentElement(commentDirective);
                }

                Writer.WriteLine();

                WriteChildren(element);

                if (element.Children.Count > 0)
                {
                    Writer.WriteLine();
                }

                if (regionStyle == RegionStyle.Directive)
                {
                    WriteRegionEndDirective(element);
                }
                else if (regionStyle == RegionStyle.CommentDirective)
                {
                    string regionName = string.Empty;
                    if (Configuration.Formatting.Regions.EndRegionNameEnabled)
                    {
                        regionName = element.Name;
                    }

                    CommentElement commentDirective = new CommentElement(
                        string.Format(
                            CultureInfo.InvariantCulture,
                            Configuration.Formatting.Regions.CommentDirectiveEndFormat,
                            regionName).TrimEnd());
                    VisitCommentElement(commentDirective);
                }
            }
        }
Beispiel #6
0
 private void AddRegionStyle(Stream stream, RegionStyle regionStyle)
 {
     stream.WriteByte((byte)regionStyle.RegionStyleId);
     stream.WriteWord(regionStyle.RegionHorizontalPosition);
     stream.WriteWord(regionStyle.RegionVerticalPosition);
     stream.WriteWord(regionStyle.RegionWidth);
     stream.WriteWord(regionStyle.RegionHeight);
     stream.WriteByte((byte)regionStyle.RegionBgPaletteEntryIdRef);
     stream.WriteByte(0); // reserved
     stream.WriteWord(regionStyle.TextBoxHorizontalPosition);
     stream.WriteWord(regionStyle.TextBoxVerticalPosition);
     stream.WriteWord(regionStyle.TextBoxWidth);
     stream.WriteWord(regionStyle.TextBoxHeight);
     stream.WriteByte((byte)regionStyle.TextFlow);
     stream.WriteByte((byte)regionStyle.TextHorizontalAlignment);
     stream.WriteByte((byte)regionStyle.TextVerticalAlignment);
     stream.WriteByte((byte)regionStyle.LineSpace);
     stream.WriteByte((byte)regionStyle.FontIdRef);
     stream.WriteByte((byte)regionStyle.FontStyle);
     stream.WriteByte((byte)regionStyle.FontSize);
     stream.WriteByte((byte)regionStyle.FontPaletteEntryIdRef);
     stream.WriteByte((byte)regionStyle.FontOutlinePaletteEntryIdRef);
     stream.WriteByte((byte)regionStyle.FontOutlineThickness);
 }
Beispiel #7
0
            public DialogStyleSegment(byte[] buffer)
            {
                PlayerStyleFlag = (buffer[9] & Helper.B10000000) > 0;
                NumberOfRegionStyles = buffer[11];
                NumberOfUserStyles = buffer[12];

                int idx = 13;
                RegionStyles = new List<RegionStyle>(NumberOfRegionStyles);
                for (int i = 0; i < NumberOfRegionStyles; i++)
                {
                    var rs = new RegionStyle
                    {
                        RegionStyleId = buffer[idx],
                        RegionHorizontalPosition = (buffer[idx + 1] << 8) + buffer[idx + 2],
                        RegionVerticalPosition = (buffer[idx + 3] << 8) + buffer[idx + 4],
                        RegionWidth = (buffer[idx + 5] << 8) + buffer[idx + 6],
                        RegionHeight = (buffer[idx + 7] << 8) + buffer[idx + 8],
                        RegionBgPaletteEntryIdRef = buffer[idx + 9],
                        TextBoxHorizontalPosition = (buffer[idx + 11] << 8) + buffer[idx + 12],
                        TextBoxVerticalPosition = (buffer[idx + 13] << 8) + buffer[idx + 14],
                        TextBoxWidth = (buffer[idx + 15] << 8) + buffer[idx + 16],
                        TextBoxHeight = (buffer[idx + 17] << 8) + buffer[idx + 18],
                        TextFlow = buffer[idx + 19],
                        TextHorizontalAlignment = buffer[idx + 20],
                        TextVerticalAlignment = buffer[idx + 21],
                        LineSpace = buffer[idx + 22],
                        FontIdRef = buffer[idx + 23],
                        FontStyle = buffer[idx + 24],
                        FontSize = buffer[idx + 25],
                        FontPaletteEntryIdRef = buffer[idx + 26],
                        FontOutlinePaletteEntryIdRef = buffer[idx + 27],
                        FontOutlineThickness = buffer[idx + 28]
                    };
                    RegionStyles.Add(rs);
                    idx += 29;
                }

                UserStyles = new List<UserStyle>();
                for (int j = 0; j < NumberOfUserStyles; j++)
                {
                    var us = new UserStyle
                    {
                        UserStyleId = buffer[idx],
                        RegionHorizontalPositionDirection = buffer[idx + 1] >> 7,
                        RegionHorizontalPositionDelta = ((buffer[idx + 1] & Helper.B01111111) << 8) + buffer[idx + 2],
                        RegionVerticalPositionDirection = buffer[idx + 3] >> 7,
                        RegionVerticalPositionDelta = ((buffer[idx + 3] & Helper.B01111111) << 8) + buffer[idx + 4],
                        FontSizeIncDec = buffer[idx + 5] >> 7,
                        FontSizeDelta = (buffer[idx + 5] & Helper.B01111111),
                        TextBoxHorizontalPositionDirection = buffer[idx + 6] >> 7,
                        TextBoxHorizontalPositionDelta = ((buffer[idx + 6] & Helper.B01111111) << 8) + buffer[idx + 7],
                        TextBoxVerticalPositionDirection = buffer[idx + 8] >> 7,
                        TextBoxVerticalPositionDelta = ((buffer[idx + 8] & Helper.B01111111) << 8) + buffer[idx + 9],
                        TextBoxWidthIncDec = buffer[idx + 10] >> 7,
                        TextBoxWidthDelta = ((buffer[idx + 10] & Helper.B01111111) << 8) + buffer[idx + 11],
                        TextBoxHeightIncDec = buffer[idx + 12] >> 7,
                        TextBoxHeightDelta = ((buffer[idx + 12] & Helper.B01111111) << 8) + buffer[idx + 13],
                        LineSpaceIncDec = buffer[idx + 14] >> 7,
                        LineSpaceDelta = (buffer[idx + 14] & Helper.B01111111)
                    };
                    UserStyles.Add(us);
                    idx += 15;
                }

                int numberOfPalettees = ((buffer[idx] << 8) + buffer[idx + 1]) / 5;
                Palettes = new List<Palette>(numberOfPalettees);
                idx += 2;
                for (int i = 0; i < numberOfPalettees; i++)
                {
                    var palette = new Palette
                    {
                        PaletteEntryId = buffer[idx],
                        Y = buffer[idx + 1],
                        Cr = buffer[idx + 2],
                        Cb = buffer[idx + 3],
                        T = buffer[idx + 4]
                    };
                    Palettes.Add(palette);
                    idx += 5;
                }
                NumberOfDialogPresentationSegments = (buffer[idx] << 8) + buffer[idx + 1];
            }
Beispiel #8
0
            public DialogPresentationSegment(Paragraph paragraph, RegionStyle regionStyle)
            {
                StartPts = (ulong)Math.Round(paragraph.StartTime.TotalMilliseconds * 90.0);
                EndPts = (ulong)Math.Round(paragraph.EndTime.TotalMilliseconds * 90.0);
                PaletteUpdates = new List<Palette>();
                Regions = new List<SubtitleRegion>
                {
                    new SubtitleRegion
                    {
                        ContinuousPresentation = false,
                        Forced = false,
                        RegionStyleId = regionStyle.RegionStyleId,
                        Texts = new List<string>(),
                        Content = new List<SubtitleRegionContent>()
                    }
                };

                var content = Regions[0].Content;
                var lines = paragraph.Text.SplitToLines();
                var sb = new StringBuilder();
                bool italic = false;
                bool bold = false;
                for (int lineNumber = 0; lineNumber < lines.Length; lineNumber++)
                {
                    string line = lines[lineNumber];
                    if (lineNumber > 0)
                    {
                        if (italic || bold)
                        {
                            content.Add(new SubtitleRegionContentEndOfInlineStyle());
                        }
                        content.Add(new SubtitleRegionContentLineBreak());
                        if (italic && bold)
                        {
                            content.Add(new SubtitleRegionContentChangeFontStyle
                            {
                                FontStyle = 3, // bold and italic
                                FontOutlinePaletteId = regionStyle.FontOutlinePaletteEntryIdRef,
                                FontOutlineThickness = regionStyle.FontOutlineThickness
                            });
                        }
                        else if (italic)
                        {
                            content.Add(new SubtitleRegionContentChangeFontStyle
                            {
                                FontStyle = 2, // italic
                                FontOutlinePaletteId = regionStyle.FontOutlinePaletteEntryIdRef,
                                FontOutlineThickness = regionStyle.FontOutlineThickness
                            });
                        }
                        else if (bold)
                        {
                            content.Add(new SubtitleRegionContentChangeFontStyle
                            {
                                FontStyle = 1, // bold
                                FontOutlinePaletteId = regionStyle.FontOutlinePaletteEntryIdRef,
                                FontOutlineThickness = regionStyle.FontOutlineThickness
                            });
                        }
                    }
                    int i = 0;
                    while (i < line.Length)
                    {
                        string s = line.Substring(i);
                        if (s.StartsWith("<i>", StringComparison.OrdinalIgnoreCase))
                        {
                            italic = true;
                            if (content.Count > 0 && content[content.Count - 1] is SubtitleRegionContentChangeFontStyle)
                            {
                                content.RemoveAt(content.Count - 1); // Remove last style tag (italic/bold will be  combined)
                            }
                            content.Add(new SubtitleRegionContentChangeFontStyle
                            {
                                FontStyle = bold ? 3 : 2, // italic
                                FontOutlinePaletteId = regionStyle.FontOutlinePaletteEntryIdRef,
                                FontOutlineThickness = regionStyle.FontOutlineThickness
                            });
                            i += 3;
                        }
                        else if (s.StartsWith("</i>", StringComparison.OrdinalIgnoreCase))
                        {
                            italic = false;
                            AddText(sb, content);
                            if (content.Count > 0 && content[content.Count - 1] is SubtitleRegionContentEndOfInlineStyle)
                            {
                                content.RemoveAt(content.Count - 1); // Remove last to avoid duplicated
                            }
                            content.Add(new SubtitleRegionContentEndOfInlineStyle());
                            i += 4;
                        }
                        else if (s.StartsWith("<b>", StringComparison.OrdinalIgnoreCase))
                        {
                            bold = true;
                            if (content.Count > 0 && content[content.Count - 1] is SubtitleRegionContentChangeFontStyle)
                            {
                                content.RemoveAt(content.Count - 1); // Remove last style tag (italic/bold will be  combined)
                            }
                            content.Add(new SubtitleRegionContentChangeFontStyle
                            {
                                FontStyle = italic ? 3 : 1, // bold
                                FontOutlinePaletteId = regionStyle.FontOutlinePaletteEntryIdRef,
                                FontOutlineThickness = regionStyle.FontOutlineThickness
                            });
                            i += 3;
                        }
                        else if (s.StartsWith("</b>", StringComparison.OrdinalIgnoreCase))
                        {
                            bold = false;
                            AddText(sb, content);
                            if (content.Count > 0 && content[content.Count - 1] is SubtitleRegionContentEndOfInlineStyle)
                            {
                                content.RemoveAt(content.Count - 1); // Remove last to avoid duplicated
                            }
                            content.Add(new SubtitleRegionContentEndOfInlineStyle());
                            i += 4;
                        }
                        else
                        {
                            i++;
                            sb.Append(s.Substring(0, 1));
                        }
                    }
                    AddText(sb, content);
                }
                if (content.Count > 0 && content[content.Count - 1] is SubtitleRegionContentEndOfInlineStyle)
                {
                    content.RemoveAt(content.Count - 1); // last 'end-of-inline-style' not needed
                }
            }
Beispiel #9
0
 public RegionStyle(RegionStyle regionStyle)
 {
     RegionStyleId = regionStyle.RegionStyleId;
     RegionHorizontalPosition = regionStyle.RegionHorizontalPosition;
     RegionVerticalPosition = regionStyle.RegionVerticalPosition;
     RegionWidth = regionStyle.RegionWidth;
     RegionHeight = regionStyle.RegionHeight;
     RegionBgPaletteEntryIdRef = regionStyle.RegionBgPaletteEntryIdRef;
     TextBoxHorizontalPosition = regionStyle.TextBoxHorizontalPosition;
     TextBoxVerticalPosition = regionStyle.TextBoxVerticalPosition;
     TextBoxWidth = regionStyle.TextBoxWidth;
     TextBoxHeight = regionStyle.TextBoxHeight;
     TextFlow = regionStyle.TextFlow;
     TextHorizontalAlignment = regionStyle.TextHorizontalAlignment;
     TextVerticalAlignment = regionStyle.TextVerticalAlignment;
     LineSpace = regionStyle.LineSpace;
     FontIdRef = regionStyle.FontIdRef;
     FontStyle = regionStyle.FontStyle;
     FontSize = regionStyle.FontSize;
     FontPaletteEntryIdRef = regionStyle.FontPaletteEntryIdRef;
     FontOutlinePaletteEntryIdRef = regionStyle.FontOutlinePaletteEntryIdRef;
     FontOutlineThickness = regionStyle.FontOutlineThickness;
 }