internal static HorizontalAlignment ToHorizontalAlignEnum(RPLFormat.TextAlignments val) { switch (val) { case RPLFormat.TextAlignments.Left: return(HorizontalAlignment.Left); case RPLFormat.TextAlignments.Center: return(HorizontalAlignment.Center); case RPLFormat.TextAlignments.Right: return(HorizontalAlignment.Right); default: return(HorizontalAlignment.General); } }
public static string GetValue(RPLFormat.TextAlignments val) { switch (val) { case RPLFormat.TextAlignments.Left: return("left"); case RPLFormat.TextAlignments.Center: return("center"); case RPLFormat.TextAlignments.Right: return("right"); default: return(null); } }
public void RenderTextAlign(TypeCode type, RPLFormat.TextAlignments textAlignments, RPLFormat.Directions direction) { int param = 0; if (textAlignments == RPLFormat.TextAlignments.General) { textAlignments = (RPLFormat.TextAlignments)((!this.GetTextAlignForType(type)) ? 1 : 3); } else if (direction == RPLFormat.Directions.RTL) { switch (textAlignments) { case RPLFormat.TextAlignments.Left: textAlignments = RPLFormat.TextAlignments.Right; break; case RPLFormat.TextAlignments.Right: textAlignments = RPLFormat.TextAlignments.Left; break; } } switch (textAlignments) { case RPLFormat.TextAlignments.Left: param = 0; break; case RPLFormat.TextAlignments.Center: param = 1; break; case RPLFormat.TextAlignments.Right: param = 2; break; } this.m_parFormat.AddSprm(9313, param, null); }
public void RenderTextAlign(TypeCode type, RPLFormat.TextAlignments textAlignments, RPLFormat.Directions direction) { OpenXmlParagraphPropertiesModel.HorizontalAlignment horizontalAlign = OpenXmlParagraphPropertiesModel.HorizontalAlignment.Left; if (textAlignments == RPLFormat.TextAlignments.General) { textAlignments = (RPLFormat.TextAlignments)((!WordOpenXmlUtils.GetTextAlignForType(type)) ? 1 : 3); } else if (direction == RPLFormat.Directions.RTL) { switch (textAlignments) { case RPLFormat.TextAlignments.Left: textAlignments = RPLFormat.TextAlignments.Right; break; case RPLFormat.TextAlignments.Right: textAlignments = RPLFormat.TextAlignments.Left; break; } } switch (textAlignments) { case RPLFormat.TextAlignments.Left: horizontalAlign = OpenXmlParagraphPropertiesModel.HorizontalAlignment.Left; break; case RPLFormat.TextAlignments.Center: horizontalAlign = OpenXmlParagraphPropertiesModel.HorizontalAlignment.Center; break; case RPLFormat.TextAlignments.Right: horizontalAlign = OpenXmlParagraphPropertiesModel.HorizontalAlignment.Right; break; } this.GetCurrentParagraph().Properties.HorizontalAlign = horizontalAlign; }
internal override void WriteStyles(StyleWriterMode mode, IRPLStyle style) { RPLParagraph paragraph = m_paragraph; RPLTextBox textBox = m_textBox; RPLTextBoxProps rPLTextBoxProps = textBox.ElementProps as RPLTextBoxProps; if (paragraph != null) { RPLParagraphProps rPLParagraphProps = paragraph.ElementProps as RPLParagraphProps; RPLParagraphPropsDef rPLParagraphPropsDef = rPLParagraphProps.Definition as RPLParagraphPropsDef; RPLReportSize rPLReportSize = null; RPLReportSize leftIndent = null; RPLReportSize rightIndent = null; RPLReportSize spaceBefore = null; RPLReportSize spaceAfter = null; IRPLStyle iRPLStyle = null; switch (mode) { case StyleWriterMode.All: rPLReportSize = rPLParagraphProps.HangingIndent; if (rPLReportSize == null) { rPLReportSize = rPLParagraphPropsDef.HangingIndent; } leftIndent = rPLParagraphProps.LeftIndent; if (leftIndent == null) { leftIndent = rPLParagraphPropsDef.LeftIndent; } rightIndent = rPLParagraphProps.RightIndent; if (rightIndent == null) { rightIndent = rPLParagraphPropsDef.RightIndent; } spaceBefore = rPLParagraphProps.SpaceBefore; if (spaceBefore == null) { spaceBefore = rPLParagraphPropsDef.SpaceBefore; } spaceAfter = rPLParagraphProps.SpaceAfter; if (spaceAfter == null) { spaceAfter = rPLParagraphPropsDef.SpaceAfter; } break; case StyleWriterMode.NonShared: { iRPLStyle = m_textBox.ElementProps.NonSharedStyle; rPLReportSize = rPLParagraphProps.HangingIndent; rightIndent = rPLParagraphProps.RightIndent; leftIndent = rPLParagraphProps.LeftIndent; spaceAfter = rPLParagraphProps.SpaceAfter; spaceBefore = rPLParagraphProps.SpaceBefore; if (m_outputSharedInNonShared) { if (rPLReportSize == null) { rPLReportSize = rPLParagraphPropsDef.HangingIndent; } if (rightIndent == null) { rightIndent = rPLParagraphPropsDef.RightIndent; } if (leftIndent == null) { leftIndent = rPLParagraphPropsDef.LeftIndent; } if (spaceAfter == null) { spaceAfter = rPLParagraphPropsDef.SpaceAfter; } if (spaceBefore == null) { spaceBefore = rPLParagraphPropsDef.SpaceBefore; } break; } bool flag = HTML5Renderer.IsDirectionRTL(m_textBox.ElementProps.Style); if (rPLReportSize == null) { if (flag) { if (rightIndent != null) { rPLReportSize = rPLParagraphPropsDef.HangingIndent; } } else if (leftIndent != null) { rPLReportSize = rPLParagraphPropsDef.HangingIndent; } } else if (flag) { if (rightIndent == null) { rightIndent = rPLParagraphPropsDef.RightIndent; } } else if (leftIndent == null) { leftIndent = rPLParagraphPropsDef.LeftIndent; } break; } case StyleWriterMode.Shared: iRPLStyle = m_textBox.ElementPropsDef.SharedStyle; rPLReportSize = rPLParagraphPropsDef.HangingIndent; leftIndent = rPLParagraphPropsDef.LeftIndent; rightIndent = rPLParagraphPropsDef.RightIndent; spaceBefore = rPLParagraphPropsDef.SpaceBefore; spaceAfter = rPLParagraphPropsDef.SpaceAfter; break; } if (m_currentListLevel > 0 && rPLReportSize != null && rPLReportSize.ToMillimeters() < 0.0) { rPLReportSize = null; } if (m_mode != Mode.ParagraphOnly) { FixIndents(ref leftIndent, ref rightIndent, ref spaceBefore, ref spaceAfter, rPLReportSize); bool flag2 = HTML5Renderer.IsWritingModeVertical(rPLTextBoxProps.Style); if (flag2) { WriteStyle(HTMLElements.m_paddingLeft, leftIndent); } else { WriteStyle(HTMLElements.m_marginLeft, leftIndent); } WriteStyle(HTMLElements.m_marginRight, rightIndent); WriteStyle(HTMLElements.m_marginTop, spaceBefore); if (flag2) { WriteStyle(HTMLElements.m_marginBottom, spaceAfter); } else { WriteStyle(HTMLElements.m_paddingBottom, spaceAfter); } } if (m_mode == Mode.ListOnly) { WriteStyle(HTMLElements.m_fontFamily, "Arial"); WriteStyle(HTMLElements.m_fontSize, "10pt"); } else if (rPLReportSize != null && rPLReportSize.ToMillimeters() < 0.0) { WriteStyle(HTMLElements.m_textIndent, rPLReportSize); } } if (style == null || (m_mode != Mode.All && m_mode != Mode.ParagraphOnly)) { return; } object obj = style[25]; if (obj != null || mode != 0) { RPLFormat.TextAlignments textAlignments = RPLFormat.TextAlignments.General; if (obj != null) { textAlignments = (RPLFormat.TextAlignments)obj; } if (textAlignments == RPLFormat.TextAlignments.General) { bool flag3 = HTML5Renderer.GetTextAlignForType(rPLTextBoxProps); if (HTML5Renderer.IsDirectionRTL(rPLTextBoxProps.Style)) { flag3 = ((!flag3) ? true : false); } WriteStream(HTMLElements.m_textAlign); if (flag3) { WriteStream(HTMLElements.m_rightValue); } else { WriteStream(HTMLElements.m_leftValue); } WriteStream(HTMLElements.m_semiColon); } else { WriteStyle(HTMLElements.m_textAlign, EnumStrings.GetValue(textAlignments), null); } } WriteStyle(HTMLElements.m_lineHeight, style[28]); }
private static void RenderParagraph(TextBox textBox, Paragraph paragraph, Win32DCSafeHandle hdc, FontCache fontCache, int offsetX, ref int offsetY, Rectangle layoutRectangle, float dpiX) { List <TextLine> textLines = paragraph.TextLines; IParagraphProps paragraphProps = paragraph.ParagraphProps; bool flag = textBox.TextBoxProps.Direction == RPLFormat.Directions.LTR; RPLFormat.TextAlignments textAlignments = paragraphProps.Alignment; if (textAlignments == RPLFormat.TextAlignments.General) { textAlignments = textBox.TextBoxProps.DefaultAlignment; if (!flag) { switch (textAlignments) { case RPLFormat.TextAlignments.Right: textAlignments = RPLFormat.TextAlignments.Left; break; case RPLFormat.TextAlignments.Left: textAlignments = RPLFormat.TextAlignments.Right; break; } } } int num = ConvertToPixels(paragraphProps.LeftIndent, dpiX); int num2 = ConvertToPixels(paragraphProps.RightIndent, dpiX); int num3 = ConvertToPixels(paragraphProps.HangingIndent, dpiX); if (num3 < 0) { if (flag) { num -= num3; } else { num2 -= num3; } } if (paragraphProps.ListLevel > 0) { int num4 = paragraphProps.ListLevel * ConvertToPixels(10.583333f, dpiX); if (flag) { num += num4; } else { num2 += num4; } } if (textLines == null || textLines.Count == 0) { offsetY += ConvertToPixels(paragraphProps.SpaceBefore, dpiX); offsetY += ConvertToPixels(paragraphProps.SpaceAfter, dpiX); return; } Graphics graphics = null; try { for (int i = 0; i < textLines.Count; i++) { TextLine textLine = textLines[i]; int ascent = textLine.GetAscent(hdc, fontCache); textLine.GetDescent(hdc, fontCache); int height = textLine.GetHeight(hdc, fontCache); if (textLine.FirstLine) { offsetY += ConvertToPixels(paragraphProps.SpaceBefore, dpiX); } int baselineY = offsetY + ascent; offsetY += height; int num5 = offsetX; switch (textAlignments) { case RPLFormat.TextAlignments.Left: num5 = num; break; case RPLFormat.TextAlignments.Center: { int num6 = 0; num6 = ((!textBox.HorizontalText) ? layoutRectangle.Height : layoutRectangle.Width); num5 = num + (num6 - num - num2) / 2 - textLine.GetWidth(hdc, fontCache) / 2; break; } default: num5 = ((!textBox.HorizontalText) ? (layoutRectangle.Height - num2 - textLine.GetWidth(hdc, fontCache)) : (layoutRectangle.Width - num2 - textLine.GetWidth(hdc, fontCache))); break; } if (textLine.Prefix != null && textLine.Prefix.Count > 0) { int num7 = (!flag) ? (num5 + textLine.GetWidth(hdc, fontCache) + ConvertToPixels(4.233333f, dpiX)) : (num5 - ConvertToPixels(4.233333f, dpiX) - textLine.GetPrefixWidth(hdc, fontCache)); if (num3 < 0) { if (flag && textAlignments == RPLFormat.TextAlignments.Left) { num7 += num3; } else if (!flag && textAlignments == RPLFormat.TextAlignments.Right) { num7 -= num3; } } for (int j = 0; j < textLine.Prefix.Count; j++) { TextRun textRun = textLine.Prefix[j]; textBox.TextBoxProps.DrawTextRun(textRun, paragraph, hdc, dpiX, fontCache, num7, offsetY, baselineY, height, layoutRectangle); num7 += textRun.GetWidth(hdc, fontCache); } } if (textLine.FirstLine && num3 != 0) { if (flag) { switch (textAlignments) { case RPLFormat.TextAlignments.Left: num5 += num3; break; case RPLFormat.TextAlignments.Center: num5 += num3 / 2; break; } } else { switch (textAlignments) { case RPLFormat.TextAlignments.Right: num5 -= num3; break; case RPLFormat.TextAlignments.Center: num5 -= num3 / 2; break; } } } int prevRunWidth = 0; int prevRunX = 0; TextRun prevRun = null; int count = textLine.VisualRuns.Count; for (int k = 0; k < count; k++) { TextRun textRun2 = textLine.VisualRuns[k]; int width = textRun2.GetWidth(hdc, fontCache, k == count - 1); if (!textRun2.IsHighlightTextRun) { if (width > 0) { textBox.TextBoxProps.DrawTextRun(textRun2, paragraph, hdc, dpiX, fontCache, num5, offsetY, baselineY, height, layoutRectangle); } } else { bool flag2 = (flag && k + 1 == count) || (!flag && k == 0); if (width > 0 || flag2) { if (graphics == null) { graphics = Graphics.FromHdc(hdc.Handle); } RenderHighlightedTextRun(textBox, paragraph, textRun2, prevRun, hdc, graphics, fontCache, dpiX, num5, offsetY, baselineY, height, layoutRectangle, width, prevRunWidth, prevRunX, flag2, textLine.LastLine); } } prevRunX = num5; prevRunWidth = width; num5 += width; prevRun = textRun2; } if (textLine.LastLine) { offsetY += ConvertToPixels(paragraphProps.SpaceAfter, dpiX); } } } finally { if (graphics != null) { graphics.Dispose(); graphics = null; } } }
private Point GetParagraphAndRunCoordinates(Win32DCSafeHandle hdc, TextBoxContext location, bool moveCaretToNextLine, out int lineYOffset, out int lineHeight, out TextRun textRun, out int textRunCharacterIndex, out bool isFirstLine, out bool isLastLine) { int num = 0; int textRunIndex = location.TextRunIndex; textRunCharacterIndex = location.TextRunCharacterIndex; lineYOffset = 0; lineHeight = 0; textRun = null; isFirstLine = true; isLastLine = true; List <Paragraph> rTParagraphs = this.RTParagraphs; if (rTParagraphs != null && location.ParagraphIndex < rTParagraphs.Count) { Paragraph paragraph = rTParagraphs[location.ParagraphIndex]; int num2 = paragraph.OffsetY + TextBox.ConvertToPixels(paragraph.ParagraphProps.SpaceBefore, this.Dpi); int num3 = TextBox.ConvertToPixels(paragraph.ParagraphProps.LeftIndent, this.Dpi); int num4 = TextBox.ConvertToPixels(paragraph.ParagraphProps.RightIndent, this.Dpi); int num5 = TextBox.ConvertToPixels(paragraph.ParagraphProps.HangingIndent, this.Dpi); bool flag = this.m_rttextbox.TextBoxProps.Direction == RPLFormat.Directions.LTR; if (num5 < 0) { if (flag) { num3 -= num5; } else { num4 -= num5; } } int listLevel = paragraph.ParagraphProps.ListLevel; if (listLevel > 0) { int num6 = listLevel * TextBox.ConvertToPixels(10.583333f, this.Dpi); if (flag) { num3 += num6; } else { num4 += num6; } } for (int i = 0; i < paragraph.TextLines.Count; i++) { TextLine textLine = paragraph.TextLines[i]; int descent = textLine.GetDescent(hdc, this.FontCache); lineHeight = textLine.GetHeight(hdc, this.FontCache); lineYOffset = num2; num2 += lineHeight; RPLFormat.TextAlignments textAlignments = paragraph.ParagraphProps.Alignment; if (textAlignments == RPLFormat.TextAlignments.General) { textAlignments = this.m_rttextbox.TextBoxProps.DefaultAlignment; if (!flag) { switch (textAlignments) { case RPLFormat.TextAlignments.Left: textAlignments = RPLFormat.TextAlignments.Right; break; case RPLFormat.TextAlignments.Right: textAlignments = RPLFormat.TextAlignments.Left; break; } } } switch (textAlignments) { case RPLFormat.TextAlignments.Center: num = num3 + (this.WidthInPX - num3 - num4) / 2 - textLine.GetWidth(hdc, this.FontCache) / 2; break; case RPLFormat.TextAlignments.Right: num = this.WidthInPX - textLine.GetWidth(hdc, this.FontCache) - num4; break; default: num = num3; break; } if (textLine.FirstLine && num5 != 0) { if (flag) { switch (textAlignments) { case RPLFormat.TextAlignments.Left: num += num5; break; case RPLFormat.TextAlignments.Center: num += num5 / 2; break; } } else { switch (textAlignments) { case RPLFormat.TextAlignments.Right: num -= num5; break; case RPLFormat.TextAlignments.Center: num -= num5 / 2; break; } } } int count = textLine.VisualRuns.Count; for (int j = 0; j < count; num += textRun.GetWidth(hdc, this.FontCache), j++) { textRun = textLine.VisualRuns[j]; if (textRun.TextRunProperties.IndexInParagraph == textRunIndex && textRunCharacterIndex >= textRun.CharacterIndexInOriginal) { bool flag2 = (moveCaretToNextLine || textRun.CharacterCount <= 0 || textRun.Text[textRun.CharacterCount - 1] != '\n') ? (textRunCharacterIndex <= textRun.CharacterIndexInOriginal + textRun.CharacterCount) : (textRunCharacterIndex < textRun.CharacterIndexInOriginal + textRun.CharacterCount); if (!flag2 && (i + 1 != paragraph.TextLines.Count || j + 1 != count)) { continue; } if (moveCaretToNextLine && textRunCharacterIndex == textRun.CharacterIndexInOriginal + textRun.CharacterCount && j + 1 == count && i + 1 < paragraph.TextLines.Count) { location = location.Clone(); if (paragraph.TextLines[i + 1].VisualRuns[0].TextRunProperties.IndexInParagraph != textRunIndex) { location.TextRunIndex++; location.TextRunCharacterIndex = 0; } Point paragraphAndRunCoordinates = this.GetParagraphAndRunCoordinates(hdc, location, false, out lineYOffset, out lineHeight, out textRun, out textRunCharacterIndex, out isFirstLine, out isLastLine); textRunCharacterIndex = Math.Max(textRunCharacterIndex - 1, 0); return(paragraphAndRunCoordinates); } textRunCharacterIndex -= textRun.CharacterIndexInOriginal; isFirstLine = textLine.FirstLine; isLastLine = textLine.LastLine; return(new Point(num, num2 - descent)); } } } textRun = null; return(Point.Empty); } return(Point.Empty); }
private TextBoxContext GetParagraphAndRunIndex(Graphics g, Paragraph paragraph, int leftIndent, int rightIndent, int hangingIndent, int x, int y, bool isLTR, bool lastParagraph, out TextRun run, out int runX, out bool atEndOfLine) { Win32DCSafeHandle win32DCSafeHandle = null; bool flag = false; try { if (g == null) { flag = true; g = Graphics.FromHwnd(IntPtr.Zero); } win32DCSafeHandle = new Win32DCSafeHandle(g.GetHdc(), false); runX = x; run = null; atEndOfLine = false; int num = 0; while (num < paragraph.TextLines.Count) { TextLine textLine = paragraph.TextLines[num]; y -= textLine.GetHeight(win32DCSafeHandle, this.FontCache); if (textLine.FirstLine) { y -= TextBox.ConvertToPixels(paragraph.ParagraphProps.SpaceBefore, this.Dpi); } else if (textLine.LastLine) { y -= TextBox.ConvertToPixels(paragraph.ParagraphProps.SpaceAfter, this.Dpi); } if (y >= 0 && num + 1 != paragraph.TextLines.Count) { num++; continue; } int width = textLine.GetWidth(win32DCSafeHandle, this.FontCache); if (x > this.WidthInPX) { atEndOfLine = (width > 0); int num2 = default(int); bool flag2 = default(bool); run = this.GetLastNonLineBreakRun(textLine.LogicalRuns, out num2, out flag2); TextBoxContext textBoxContext = new TextBoxContext(); textBoxContext.TextRunIndex = run.TextRunProperties.IndexInParagraph; if (flag2 && run.CharacterCount > 0) { textBoxContext.TextRunCharacterIndex = run.CharacterIndexInOriginal + num2 + 1; } else { textBoxContext.TextRunCharacterIndex = run.CharacterIndexInOriginal; } run = null; return(textBoxContext); } if (x < 0) { atEndOfLine = false; int num3 = default(int); run = this.GetFirstNonLineBreakRun(textLine.LogicalRuns, out num3); TextBoxContext textBoxContext2 = new TextBoxContext(); textBoxContext2.TextRunIndex = run.TextRunProperties.IndexInParagraph; textBoxContext2.TextRunCharacterIndex = run.CharacterIndexInOriginal + num3; run = null; return(textBoxContext2); } RPLFormat.TextAlignments textAlignments = paragraph.ParagraphProps.Alignment; if (textAlignments == RPLFormat.TextAlignments.General) { textAlignments = this.m_rttextbox.TextBoxProps.DefaultAlignment; if (!isLTR) { switch (textAlignments) { case RPLFormat.TextAlignments.Left: textAlignments = RPLFormat.TextAlignments.Right; break; case RPLFormat.TextAlignments.Right: textAlignments = RPLFormat.TextAlignments.Left; break; } } } switch (textAlignments) { case RPLFormat.TextAlignments.Center: runX = x - (leftIndent + (this.WidthInPX - leftIndent - rightIndent) / 2 - width / 2); break; case RPLFormat.TextAlignments.Right: runX = x - (this.WidthInPX - width - rightIndent); break; default: runX = x - leftIndent; break; } if (textLine.FirstLine && hangingIndent != 0) { if (isLTR) { switch (textAlignments) { case RPLFormat.TextAlignments.Left: runX -= hangingIndent; break; case RPLFormat.TextAlignments.Center: runX -= hangingIndent / 2; break; } } else { switch (textAlignments) { case RPLFormat.TextAlignments.Right: runX += hangingIndent; break; case RPLFormat.TextAlignments.Center: runX += hangingIndent / 2; break; } } } runX = Math.Max(0, runX); return(this.GetParagraphAndRunIndex(win32DCSafeHandle, paragraph, textLine, x, width, lastParagraph, out run, ref runX, out atEndOfLine)); } return(null); } finally { if (!win32DCSafeHandle.IsInvalid) { g.ReleaseHdc(); } if (flag) { g.Dispose(); g = null; } } }
public static void GetFontFormatInformation(RPLElementProps elementProperties, out RPLFormat.WritingModes writingMode, out RPLFormat.Directions direction, out RPLFormat.VerticalAlignments verticalAlign, out RPLFormat.TextAlignments textAlign, ref bool stringFormatFromInstance) { writingMode = (RPLFormat.WritingModes)SharedRenderer.GetStylePropertyValueObject(elementProperties, (byte)30, ref stringFormatFromInstance); direction = (RPLFormat.Directions)SharedRenderer.GetStylePropertyValueObject(elementProperties, (byte)29, ref stringFormatFromInstance); verticalAlign = (RPLFormat.VerticalAlignments)SharedRenderer.GetStylePropertyValueObject(elementProperties, (byte)26, ref stringFormatFromInstance); textAlign = (RPLFormat.TextAlignments)SharedRenderer.GetStylePropertyValueObject(elementProperties, (byte)25, ref stringFormatFromInstance); }
public override void WriteStyles(StyleWriterMode mode, IRPLStyle style) { RPLParagraph paragraph = this.m_paragraph; RPLTextBox textBox = this.m_textBox; RPLTextBoxProps rPLTextBoxProps = textBox.ElementProps as RPLTextBoxProps; if (paragraph != null) { RPLParagraphProps rPLParagraphProps = paragraph.ElementProps as RPLParagraphProps; RPLParagraphPropsDef rPLParagraphPropsDef = rPLParagraphProps.Definition as RPLParagraphPropsDef; RPLReportSize rPLReportSize = null; RPLReportSize rPLReportSize2 = null; RPLReportSize rPLReportSize3 = null; RPLReportSize rPLReportSize4 = null; RPLReportSize rPLReportSize5 = null; switch (mode) { case StyleWriterMode.All: rPLReportSize = rPLParagraphProps.HangingIndent; if (rPLReportSize == null) { rPLReportSize = rPLParagraphPropsDef.HangingIndent; } rPLReportSize2 = rPLParagraphProps.LeftIndent; if (rPLReportSize2 == null) { rPLReportSize2 = rPLParagraphPropsDef.LeftIndent; } rPLReportSize3 = rPLParagraphProps.RightIndent; if (rPLReportSize3 == null) { rPLReportSize3 = rPLParagraphPropsDef.RightIndent; } rPLReportSize4 = rPLParagraphProps.SpaceBefore; if (rPLReportSize4 == null) { rPLReportSize4 = rPLParagraphPropsDef.SpaceBefore; } rPLReportSize5 = rPLParagraphProps.SpaceAfter; if (rPLReportSize5 == null) { rPLReportSize5 = rPLParagraphPropsDef.SpaceAfter; } break; case StyleWriterMode.NonShared: { RPLStyleProps nonSharedStyle = this.m_textBox.ElementProps.NonSharedStyle; rPLReportSize = rPLParagraphProps.HangingIndent; rPLReportSize3 = rPLParagraphProps.RightIndent; rPLReportSize2 = rPLParagraphProps.LeftIndent; rPLReportSize5 = rPLParagraphProps.SpaceAfter; rPLReportSize4 = rPLParagraphProps.SpaceBefore; if (this.m_outputSharedInNonShared) { if (rPLReportSize == null) { rPLReportSize = rPLParagraphPropsDef.HangingIndent; } if (rPLReportSize3 == null) { rPLReportSize3 = rPLParagraphPropsDef.RightIndent; } if (rPLReportSize2 == null) { rPLReportSize2 = rPLParagraphPropsDef.LeftIndent; } if (rPLReportSize5 == null) { rPLReportSize5 = rPLParagraphPropsDef.SpaceAfter; } if (rPLReportSize4 == null) { rPLReportSize4 = rPLParagraphPropsDef.SpaceBefore; } } else { bool flag = HTML5Renderer.IsDirectionRTL(this.m_textBox.ElementProps.Style); if (rPLReportSize == null) { if (flag) { if (rPLReportSize3 != null) { rPLReportSize = rPLParagraphPropsDef.HangingIndent; } } else if (rPLReportSize2 != null) { rPLReportSize = rPLParagraphPropsDef.HangingIndent; } } else if (flag) { if (rPLReportSize3 == null) { rPLReportSize3 = rPLParagraphPropsDef.RightIndent; } } else if (rPLReportSize2 == null) { rPLReportSize2 = rPLParagraphPropsDef.LeftIndent; } } break; } case StyleWriterMode.Shared: { RPLStyleProps sharedStyle = this.m_textBox.ElementPropsDef.SharedStyle; rPLReportSize = rPLParagraphPropsDef.HangingIndent; rPLReportSize2 = rPLParagraphPropsDef.LeftIndent; rPLReportSize3 = rPLParagraphPropsDef.RightIndent; rPLReportSize4 = rPLParagraphPropsDef.SpaceBefore; rPLReportSize5 = rPLParagraphPropsDef.SpaceAfter; break; } } if (this.m_currentListLevel > 0 && rPLReportSize != null && rPLReportSize.ToMillimeters() < 0.0) { rPLReportSize = null; } if (this.m_mode != Mode.ParagraphOnly) { this.FixIndents(ref rPLReportSize2, ref rPLReportSize3, ref rPLReportSize4, ref rPLReportSize5, rPLReportSize); bool flag2 = HTML5Renderer.IsWritingModeVertical(rPLTextBoxProps.Style); if (flag2) { base.WriteStyle(HTMLElements.m_paddingLeft, rPLReportSize2); } else { base.WriteStyle(HTMLElements.m_marginLeft, rPLReportSize2); } base.WriteStyle(HTMLElements.m_marginRight, rPLReportSize3); base.WriteStyle(HTMLElements.m_marginTop, rPLReportSize4); if (flag2) { base.WriteStyle(HTMLElements.m_marginBottom, rPLReportSize5); } else { base.WriteStyle(HTMLElements.m_paddingBottom, rPLReportSize5); } } if (this.m_mode == Mode.ListOnly) { base.WriteStyle(HTMLElements.m_fontFamily, "Arial"); base.WriteStyle(HTMLElements.m_fontSize, "10pt"); } else if (rPLReportSize != null && rPLReportSize.ToMillimeters() < 0.0) { base.WriteStyle(HTMLElements.m_textIndent, rPLReportSize); } } if (style != null) { if (this.m_mode != Mode.All && this.m_mode != Mode.ParagraphOnly) { return; } object obj = style[25]; if (obj != null || mode != 0) { RPLFormat.TextAlignments textAlignments = RPLFormat.TextAlignments.General; if (obj != null) { textAlignments = (RPLFormat.TextAlignments)obj; } if (textAlignments == RPLFormat.TextAlignments.General) { bool flag3 = HTML5Renderer.GetTextAlignForType(rPLTextBoxProps); if (HTML5Renderer.IsDirectionRTL(rPLTextBoxProps.Style)) { flag3 = ((byte)((!flag3) ? 1 : 0) != 0); } base.WriteStream(HTMLElements.m_textAlign); if (flag3) { base.WriteStream(HTMLElements.m_rightValue); } else { base.WriteStream(HTMLElements.m_leftValue); } base.WriteStream(HTMLElements.m_semiColon); } else { base.WriteStyle(HTMLElements.m_textAlign, EnumStrings.GetValue(textAlignments), null); } } base.WriteStyle(HTMLElements.m_lineHeight, style[28]); } }
internal static void GetFontFormatInformation(RPLElementProps elementProperties, out RPLFormat.WritingModes writingMode, out RPLFormat.Directions direction, out RPLFormat.VerticalAlignments verticalAlign, out RPLFormat.TextAlignments textAlign, ref bool stringFormatFromInstance) { writingMode = (RPLFormat.WritingModes)GetStylePropertyValueObject(elementProperties, 30, ref stringFormatFromInstance); direction = (RPLFormat.Directions)GetStylePropertyValueObject(elementProperties, 29, ref stringFormatFromInstance); verticalAlign = (RPLFormat.VerticalAlignments)GetStylePropertyValueObject(elementProperties, 26, ref stringFormatFromInstance); textAlign = (RPLFormat.TextAlignments)GetStylePropertyValueObject(elementProperties, 25, ref stringFormatFromInstance); }
public virtual void DrawTextRun(Win32DCSafeHandle hdc, FontCache fontCache, ReportTextBox textBox, TextRun run, TypeCode typeCode, RPLFormat.TextAlignments textAlign, RPLFormat.VerticalAlignments verticalAlign, RPLFormat.WritingModes writingMode, RPLFormat.Directions direction, Point position, Rectangle layoutRectangle, int lineHeight, int baselineY) { }
public override void DrawTextRun(Win32DCSafeHandle hdc, FontCache fontCache, ReportTextBox textBox, AspNetCore.ReportingServices.Rendering.RichText.TextRun run, TypeCode typeCode, RPLFormat.TextAlignments textAlign, RPLFormat.VerticalAlignments verticalAlign, RPLFormat.WritingModes writingMode, RPLFormat.Directions direction, Point pointPosition, System.Drawing.Rectangle layoutRectangle, int lineHeight, int baselineY) { if (!string.IsNullOrEmpty(run.Text)) { int x; int baselineY2; switch (writingMode) { case RPLFormat.WritingModes.Horizontal: x = layoutRectangle.X + pointPosition.X; baselineY2 = layoutRectangle.Y + baselineY; break; case RPLFormat.WritingModes.Vertical: x = layoutRectangle.X + (layoutRectangle.Width - baselineY); baselineY2 = layoutRectangle.Y + pointPosition.X; break; case RPLFormat.WritingModes.Rotate270: x = layoutRectangle.X + baselineY; baselineY2 = layoutRectangle.Y + layoutRectangle.Height - pointPosition.X; break; default: throw new NotSupportedException(); } Underline underline = null; if (run.UnderlineHeight > 0) { underline = new Underline(run, hdc, fontCache, layoutRectangle, pointPosition.X, baselineY, writingMode); } if (!this.IsEmf) { AspNetCore.ReportingServices.Rendering.RichText.TextBox.DrawTextRun(run, hdc, fontCache, x, baselineY2, underline); } else { AspNetCore.ReportingServices.Rendering.RichText.TextBox.ExtDrawTextRun(run, hdc, fontCache, x, baselineY2, underline); } } }