示例#1
0
 public SMParaFormat()
 {
     VertAlign   = SMVerticalAlign.Center;
     Align       = SMHorizontalAlign.Left;
     LineSpacing = 1.2f;
     SizeToFit   = true;
 }
示例#2
0
 public void Set(SMParaFormat p)
 {
     this.SizeToFit   = p.SizeToFit;
     this.LineSpacing = p.LineSpacing;
     this.VertAlign   = p.VertAlign;
     this.Align       = p.Align;
 }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
            }
        }
示例#5
0
        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;
                    }
                }
            }
        }
示例#6
0
        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;
                }
            }
        }
示例#7
0
        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;
                    }
                }
            }
        }