コード例 #1
0
ファイル: SheetColumn.cs プロジェクト: spofa/xlio
        LinkedListNode <SheetColumnRange> GetNode(int col)
        {
            var at = data.First;

            while (at != null && at.Value.FirstColumn < col)
            {
                at = at.Next;
            }

            //at the end
            if (at == null || at.Value.LastColumn < col)
            {
                var c = new SheetColumnRange {
                    FirstColumn = col, LastColumn = col, Data = new SheetColumn()
                };
                return(data.AddLast(c));
            }

            //between nodes
            if (at.Value.FirstColumn > col)
            {
                return(data.AddBefore(at, new SheetColumnRange {
                    FirstColumn = col, LastColumn = col, Data = new SheetColumn()
                }));
            }

            //overlap

            if (col == at.Value.LastColumn)
            {
                return(at);
            }

            if (col < at.Value.LastColumn)
            {
                data.AddAfter(at, new SheetColumnRange {
                    FirstColumn = col + 1, LastColumn = at.Value.LastColumn, Data = at.Value.Data
                });
            }

            var result = data.AddAfter(at, new SheetColumnRange {
                FirstColumn = col, LastColumn = col, Data = new SheetColumn()
            });

            if (col > at.Value.FirstColumn)
            {
                at.Value.LastColumn = col - 1;
            }
            else
            {
                data.Remove(at);
            }

            return(result);
        }
コード例 #2
0
ファイル: SheetColumn.cs プロジェクト: ronakshah725/xlio
        LinkedListNode<SheetColumnRange> GetNode(int col)
        {
            var at = data.First;
            while (at != null && at.Value.FirstColumn < col)
                at = at.Next;

            //at the end
            if (at == null || at.Value.LastColumn < col)
            {
                var c = new SheetColumnRange { FirstColumn = col, LastColumn = col, Data = new SheetColumn() };
                return data.AddLast(c);
            }

            //between nodes
            if (at.Value.FirstColumn > col)
                return data.AddBefore(at, new SheetColumnRange { FirstColumn = col, LastColumn = col, Data = new SheetColumn() });

            //overlap

            if (col == at.Value.LastColumn)
                return at;

            if (col < at.Value.LastColumn)
                data.AddAfter(at, new SheetColumnRange { FirstColumn = col + 1, LastColumn = at.Value.LastColumn, Data = at.Value.Data });

            var result = data.AddAfter(at, new SheetColumnRange { FirstColumn = col, LastColumn = col, Data = new SheetColumn() });

            if (col > at.Value.FirstColumn)
                at.Value.LastColumn = col - 1;
            else
                data.Remove(at);

            return result;
        }