コード例 #1
0
ファイル: Cell.cs プロジェクト: aakkssqq/CreatePDFCSharp
        // methods to set the membervariables

        /**
         * Adds an element to this Cell.
         * <P>
         * Remark: you can't add ListItems, Rows, Cells,
         * JPEGs, GIFs or PNGs to a Cell.
         *
         * @param element The Element to add
         * @throws BadElementException if the method was called with a ListItem, Row or Cell
         */
        /// <summary>
        /// Adds an element to this Cell.
        /// </summary>
        /// <remarks>
        /// You can't add ListItems, Rows, Cells,
        /// JPEGs, GIFs or PNGs to a Cell.
        /// </remarks>
        /// <param name="element">the Element to add</param>
        public void addElement(IElement element)
        {
            if (isTable())
            {
                Table table = (Table)arrayList[0];
                Cell  tmp   = new Cell(element);
                tmp.Border  = NO_BORDER;
                tmp.Colspan = table.Columns;
                table.addCell(tmp);
                return;
            }
            switch (element.Type)
            {
            case Element.LISTITEM:
            case Element.ROW:
            case Element.CELL:
                throw new BadElementException("You can't add listitems, rows or cells to a cell.");

            case Element.JPEG:
            case Element.IMGRAW:
            case Element.IMGTEMPLATE:
            case Element.GIF:
            case Element.PNG:
                arrayList.Add(element);
                break;

            case Element.LIST:
                if (float.IsNaN(this.Leading))
                {
                    leading = ((List)element).Leading;
                }
                if (((List)element).Size == 0)
                {
                    return;
                }
                arrayList.Add(element);
                return;

            case Element.ANCHOR:
            case Element.PARAGRAPH:
            case Element.PHRASE:
                if (float.IsNaN(leading))
                {
                    leading = ((Phrase)element).Leading;
                }
                if (((Phrase)element).isEmpty())
                {
                    return;
                }
                arrayList.Add(element);
                return;

            case Element.CHUNK:
                if (((Chunk)element).isEmpty())
                {
                    return;
                }
                arrayList.Add(element);
                return;

            case Element.TABLE:
                Table   table  = new Table(3);
                float[] widths = new float[3];
                widths[1] = ((Table)element).WidthPercentage;

                switch (((Table)element).Alignment)
                {
                case Element.ALIGN_LEFT:
                    widths[0] = 0f;
                    widths[2] = 100f - widths[1];
                    break;

                case Element.ALIGN_CENTER:
                    widths[0] = (100f - widths[1]) / 2f;
                    widths[2] = widths[0];
                    break;

                case Element.ALIGN_RIGHT:
                    widths[0] = 100f - widths[1];
                    widths[2] = 0f;
                    break;
                }
                table.Widths = widths;
                Cell tmp;
                if (arrayList.Count == 0)
                {
                    table.addCell(DUMMY_CELL);
                }
                else
                {
                    tmp         = new Cell();
                    tmp.Border  = NO_BORDER;
                    tmp.Colspan = 3;
                    foreach (IElement ele in arrayList)
                    {
                        tmp.Add(ele);
                    }
                    table.addCell(tmp);
                }
                tmp        = new Cell();
                tmp.Border = NO_BORDER;
                table.addCell(tmp);
                table.insertTable((Table)element);
                table.addCell(tmp);
                table.addCell(DUMMY_CELL);
                clear();
                arrayList.Add(table);
                return;

            default:
                arrayList.Add(element);
                break;
            }
        }