www.gusucode.com > mbc 工具箱 matlab 源码程序 > mbc/@mbcfoundation/@gridDefinition/merge.m

    function merge(obj, varargin)
%MERGE Merge cells in the grid
%
%  MERGE(OBJ, ROWRANGE, COLRANGE, ...) merges cells in the rectangle
%  defined by ROWRANGE and COLRANGE.  More than one pair of row and column
%  ranges can be used as inputs.

%  Copyright 2000-2004 The MathWorks, Inc. and Ford Global Technologies, Inc.


nPairs = length(varargin)/2;
if nPairs~=floor(nPairs)
    error(message('mbc:mbcfoundation:gridDefinition:InvalidArgument'));
end

if ~obj.DoMerge
    % Initialise merging data
    obj.MergeNRows = uint16(zeros(obj.Rows, obj.Columns));
    obj.MergeNCols = uint16(zeros(obj.Rows, obj.Columns));
    obj.DoMerge = true;
end


args = reshape(varargin, [2, nPairs]);
for n = 1:nPairs
    rRange = args{1, n};
    cRange = args{2, n}; 
    
    if rRange(1)>rRange(2) || cRange(1)>cRange(2)
        error(message('mbc:mbcfoundation:gridDefinition:InvalidIndex'));
    end
    if rRange(1)<1
        warning(message('mbc:mbcfoundation:gridDefinition:InvalidIndex1'));
        rRange(1)=1;
    end
    if cRange(1)<1
        warning(message('mbc:mbcfoundation:gridDefinition:InvalidIndex2'));
        cRange(1)=1;
    end
    if rRange(2)>obj.Rows
        warning(message('mbc:mbcfoundation:gridDefinition:InvalidIndex3'));
        rRange(2)=obj.Rows;
    end
    if cRange(2)>obj.Columns
        warning(message('mbc:mbcfoundation:gridDefinition:InvalidIndex4'));
        cRange(2)=obj.Columns;
    end

    obj.MergeNRows(rRange(1), cRange(1)) = uint16(rRange(2)-rRange(1)+1);
    obj.MergeNCols(rRange(1), cRange(1)) = uint16(cRange(2)-cRange(1)+1);
end