public SMParaFormat() { VertAlign = SMVerticalAlign.Center; Align = SMHorizontalAlign.Left; LineSpacing = 1.2f; SizeToFit = true; }
public void Set(SMParaFormat p) { this.SizeToFit = p.SizeToFit; this.LineSpacing = p.LineSpacing; this.VertAlign = p.VertAlign; this.Align = p.Align; }
private static void AdjustLinesHorizontaly(int areaWidth, SMHorizontalAlign align, List <SMWordLine> drawWords) { int i = 0; int max = drawWords.Count; for (i = 0; i < max; i++) { AdjustLineWords(drawWords[i], areaWidth, align, i < max - 1); } }
private void AdjustLinesHorizontaly(int areaWidth, SMHorizontalAlign align, List <SMTextContainerLine> lines) { int i = 0; int max = lines.Count; for (i = 0; i < max; i++) { AdjustLineWords(lines[i], areaWidth, align, i < max - 1); } }
private static void AdjustLineWords(List <SMWordBase> drawWords, float areaWidth, SMHorizontalAlign align, bool lastLine) { int wordCount = 0; float totalWidth = 0; foreach (SMWordBase wb in drawWords) { if (!wb.IsSpace()) { wordCount++; } totalWidth += wb.rect.Width; } if (wordCount > 0) { float adjustment = 0; float adjustmentStep = 0; bool doAdjust = true; if (align == SMHorizontalAlign.Left || (align == SMHorizontalAlign.Justify && lastLine)) { doAdjust = false; } else if (align == SMHorizontalAlign.Center) { adjustment = (areaWidth - totalWidth) / 2; } else if (align == SMHorizontalAlign.Right) { adjustment = (areaWidth - totalWidth); } else if (align == SMHorizontalAlign.Justify) { adjustmentStep = (areaWidth - totalWidth) / (wordCount + 1); } if (doAdjust) { foreach (SMWordBase wat in drawWords) { wat.rect.X += adjustment; wat.rect.Width += adjustmentStep; adjustment += adjustmentStep; } } } }
public void Load(RSFileReader br) { byte b; while ((b = br.ReadByte()) != 0) { switch (b) { case 10: SizeToFit = br.ReadBool(); break; case 11: Align = (SMHorizontalAlign)br.ReadInt32(); break; case 12: VertAlign = (SMVerticalAlign)br.ReadInt32(); break; case 13: LineSpacing = br.ReadFloat(); break; } } }
private void AdjustLineWords(SMTextContainerLine line, float areaWidth, SMHorizontalAlign align, bool lastLine) { float totalWidth = 0; foreach (SMTextContainerWord wb in line) { totalWidth += wb.rect.Width + ItemMargin.LeftRight; } if (line.Count > 0) { float adjustment = 0; float adjustmentStep = 0; bool doAdjust = true; if (align == SMHorizontalAlign.Left || (align == SMHorizontalAlign.Justify && lastLine)) { doAdjust = false; } else if (align == SMHorizontalAlign.Center) { adjustment = (areaWidth - totalWidth) / 2; } else if (align == SMHorizontalAlign.Right) { adjustment = (areaWidth - totalWidth); } else if (align == SMHorizontalAlign.Justify) { adjustmentStep = (areaWidth - totalWidth) / (line.Count + 1); } if (doAdjust) { foreach (SMTextContainerWord wat in line) { wat.rect.X += (int)adjustment; wat.rect.Width += (int)adjustmentStep; adjustment += adjustmentStep; } } } }