// ------------------------------------------------------------------ // Returns calculated column information - count, width, gap and rule. // ------------------------------------------------------------------ internal static void GetColumnMetrics(StructuralCache structuralCache, out int cColumns, out double width, out double gap, out double rule) { ColumnPropertiesGroup columnProperties = new ColumnPropertiesGroup(structuralCache.PropertyOwner); FontFamily pageFontFamily = (FontFamily)structuralCache.PropertyOwner.GetValue(Block.FontFamilyProperty); double lineHeight = DynamicPropertyReader.GetLineHeightValue(structuralCache.PropertyOwner); double pageFontSize = (double)structuralCache.PropertyOwner.GetValue(Block.FontSizeProperty); Size pageSize = structuralCache.CurrentFormatContext.PageSize; Thickness pageMargin = structuralCache.CurrentFormatContext.PageMargin; double pageWidth = pageSize.Width - (pageMargin.Left + pageMargin.Right); cColumns = PtsHelper.CalculateColumnCount(columnProperties, lineHeight, pageWidth, pageFontSize, pageFontFamily, true); double freeSpace; rule = columnProperties.ColumnRuleWidth; PtsHelper.GetColumnMetrics(columnProperties, pageWidth, pageFontSize, pageFontFamily, true, cColumns, ref lineHeight, out width, out freeSpace, out gap); if (columnProperties.IsColumnWidthFlexible && columnProperties.ColumnSpaceDistribution == ColumnSpaceDistribution.Between) { width += freeSpace / cColumns; } width = Math.Min(width, pageWidth); }
internal unsafe static void GetColumnsInfo(ColumnPropertiesGroup columnProperties, double lineHeight, double pageWidth, double pageFontSize, FontFamily pageFontFamily, int cColumns, PTS.FSCOLUMNINFO *pfscolinfo, bool enableColumns) { double columnRuleWidth = columnProperties.ColumnRuleWidth; double num; double num2; double num3; PtsHelper.GetColumnMetrics(columnProperties, pageWidth, pageFontSize, pageFontFamily, enableColumns, cColumns, ref lineHeight, out num, out num2, out num3); if (!columnProperties.IsColumnWidthFlexible) { for (int i = 0; i < cColumns; i++) { pfscolinfo[i].durBefore = TextDpi.ToTextDpi((i == 0) ? 0.0 : num3); pfscolinfo[i].durWidth = TextDpi.ToTextDpi(num); pfscolinfo[i].durBefore = Math.Max(0, pfscolinfo[i].durBefore); pfscolinfo[i].durWidth = Math.Max(1, pfscolinfo[i].durWidth); } return; } for (int j = 0; j < cColumns; j++) { if (columnProperties.ColumnSpaceDistribution == ColumnSpaceDistribution.Right) { pfscolinfo[j].durWidth = TextDpi.ToTextDpi((j == cColumns - 1) ? (num + num2) : num); } else if (columnProperties.ColumnSpaceDistribution == ColumnSpaceDistribution.Left) { pfscolinfo[j].durWidth = TextDpi.ToTextDpi((j == 0) ? (num + num2) : num); } else { pfscolinfo[j].durWidth = TextDpi.ToTextDpi(num + num2 / (double)cColumns); } if (pfscolinfo[j].durWidth > TextDpi.ToTextDpi(pageWidth)) { pfscolinfo[j].durWidth = TextDpi.ToTextDpi(pageWidth); } pfscolinfo[j].durBefore = TextDpi.ToTextDpi((j == 0) ? 0.0 : num3); pfscolinfo[j].durBefore = Math.Max(0, pfscolinfo[j].durBefore); pfscolinfo[j].durWidth = Math.Max(1, pfscolinfo[j].durWidth); } }
// Token: 0x06006942 RID: 26946 RVA: 0x001DCDB0 File Offset: 0x001DAFB0 internal static double CalculatePageMarginAdjustment(StructuralCache structuralCache, double pageMarginWidth) { double result = 0.0; DependencyObject element = structuralCache.Section.Element; if (element is FlowDocument) { ColumnPropertiesGroup columnPropertiesGroup = new ColumnPropertiesGroup(element); if (!columnPropertiesGroup.IsColumnWidthFlexible) { double lineHeightValue = DynamicPropertyReader.GetLineHeightValue(element); double pageFontSize = (double)structuralCache.PropertyOwner.GetValue(TextElement.FontSizeProperty); FontFamily pageFontFamily = (FontFamily)structuralCache.PropertyOwner.GetValue(TextElement.FontFamilyProperty); int cColumns = PtsHelper.CalculateColumnCount(columnPropertiesGroup, lineHeightValue, pageMarginWidth, pageFontSize, pageFontFamily, true); double num; double num2; double num3; PtsHelper.GetColumnMetrics(columnPropertiesGroup, pageMarginWidth, pageFontSize, pageFontFamily, true, cColumns, ref lineHeightValue, out num, out num2, out num3); result = num2; } } return(result); }