1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Fichier : my_autozoom.m %
% Version : 0.1 %
% Date : 18 juillet 2008 %
% Auteur : LordPeterPan2 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% SYNTHAXE : %
% >> my_autozoom(vect_fig) %
% vect_fig : vecteur d'entiers %
% Chaques figures contenue dans vect_fig sont liées désormais du point de %
% vu zoom en X. %
% EXEMPLE : %
% >> my_autozoom([ 1 6 10]) %
% Chaque fois qu'un zoom est effectué sur une des figures 1, 6 ou 10, les %
% autres figure subit le même zoom en X. %
% RESTRICTION : %
% $ Une fois qu'une figure est fermée, cette figure n'est plus liée aux %
% autres figures, même si celle-ci est recrée %
% $ En reprenant l'exemple ci-dessus, si vous faite un zoom sur la figure %
% 1 les figure 6 et 10 sont affecté de ce même zoom en X. Si vous voulez %
% revenir au zoom initial, il faut imperativement le faire depuis la %
% figure 1 (si vous voulez dézoomer depuis la figure 6 ou 10 celà n'aura %
% aucun effet) %
% $ Si vous cliquer sur l'icone de la loupe pour désactivé le zoom celà %
% produit une erreur (l'auteur ne sais pas pourquoi ??) %
% $ Pour fonctionner, la fonction crée la variable FIGURE_LINK dans le WS %
% de base, si cette dernière est supprimée, le programme peut réagir %
% bizarrement %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function my_autozoom(vect_fig)
if (min(size(vect_fig))>1)
error('my_autozoom(vect_fig) : vect_fig must be a vector, not a matrix');
end;
try
FIGURE_LINK = evalin('base','FIGURE_LINK') ;
end;
FIGURE_LINK(vect_fig,vect_fig) = 1 ;
assignin('base','FIGURE_LINK',FIGURE_LINK);
for ind_fig = vect_fig
figure(ind_fig);
set(ind_fig,'CloseRequestFcn',@Fct_CloseRequestFcn) ;
h=zoom;
set(h,'ActionPostCallback',@Fct_PostCallBack);
end;
function Fct_CloseRequestFcn(obj,evt)
try
FIGURE_LINK = evalin('base','FIGURE_LINK') ;
end;
FIGURE_LINK(obj,: ) = 0 ;
FIGURE_LINK(: ,obj) = 0 ;
assignin('base','FIGURE_LINK',FIGURE_LINK);
delete(obj);
function Fct_PostCallBack(obj,evd)
if evalin('base','exist(''FIGURE_LINK'',''var'')')
newLim = get(evd.Axes,'XLim');
FIGURE_LINK = evalin('base','FIGURE_LINK');
all_fig = find(FIGURE_LINK(get(evd.Axes,'Parent'),:)) ;
for ind_fig = all_fig
set(get(ind_fig,'CurrentAxes'),'Xlim',newLim);
end;
end; |
Partager