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 }); }
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); } } }
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); }
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]; }
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 } }
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; }