www.gusucode.com > mbcguitools 工具箱 matlab 源码程序 > mbcguitools/@xregcolorbar/private/pr_cbarfaces.m

    function pr_cbarfaces(pt,cmap,gr)
%GRAPH4D/PRIVATE/PR_CBARFACES   Private function 
%   Private function to set up the colorbar faces to the number of
%   colormap entries and set up cdata nicely.

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



n=size(cmap,1);
verty=[0.5:1:(n+0.5)];

if get(gr.colorbar.userange,'Value')
    ud=get(gr.ctext,'UserData');
    if strcmp(ud.limitstyle,'color') | strcmp(ud.limitstyle,'limit')
        clim=ud.clim;
        cmax=get(gr.colorbar.maxrange,'UserData');
        cmin=get(gr.colorbar.minrange,'UserData');
        % convert to actual units
        ylim=get(gr.colorbar.axes,'YLim');
        cmax=clim(1)+(clim(2)-clim(1))*(cmax-ylim(1))/(ylim(2)-ylim(1));
        cmin=clim(1)+(clim(2)-clim(1))*(cmin-ylim(1))/(ylim(2)-ylim(1));
        
        sf = (cmax - cmin)/(clim(2)-clim(1));
        off = (cmin - clim(1))/(clim(2)-clim(1))*n;
        
        verty = (verty * sf) + off;
        verty(1) = 0.5; verty(end) = n+0.5;
    end
end
vertx=zeros(size(verty));
verty=[verty;verty];
vertx=[vertx;(vertx+1)];
vertz=zeros(size(verty));
vertx=vertx(:);
verty=verty(:);
vertz=vertz(:);

faces=[[1:2:(2*n-1)]' , [2:2:(2*n)]' , [3:2:(2*n+1)]' , [4:2:(2*n+2)]'];
faces=faces(:,[1 2 4 3]);

set(pt,'Vertices',[vertx verty vertz],...
   'Faces',faces,...
   'FaceVertexCData',cmap);