%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Bc. Daniel Vyškovský (115123)
%%% Diplomová práce: Spirometrie
%%% vedoucí práce: Ing. Oto Janoušek Ph.D.
%%% FEKT VUT, ÚBMI
%%% Brno, 2014
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%

function varargout = Spirometrie(varargin)
% Edit the above text to modify the response to help Spirometrie
% Last Modified by GUIDE v2.5 08-Apr-2014 00:12:01
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Spirometrie_OpeningFcn, ...
                   'gui_OutputFcn',  @Spirometrie_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before Spirometrie is made visible.
function Spirometrie_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);

clc % Vycisteni prikazoveho radku
clear all % Vycisteni workspace

% --- Outputs from this function are returned to the command line.
function varargout = Spirometrie_OutputFcn(hObject, eventdata, handles) 
varargout{1} = handles.output;

%% Panel pro vyber vlastnich nebo predem ulozenych signalu
function uipanel6_SelectionChangeFcn(hObject, eventdata, handles)

newButton=get(eventdata.NewValue,'tag');
switch newButton
     case 'ukazk_mereni' % Predem ulozena mereni
          set(handles.pushbutton_fyzio,'enable','off')
          set(handles.pushbutton_obstr,'enable','off')
          set(handles.popupmenu_mereni,'enable','on')
     case 'vlastn_mereni' % Vlastni mereni
          set(handles.popupmenu_mereni,'enable','off')
          set(handles.pushbutton_fyzio,'enable','on')
          set(handles.pushbutton_obstr,'enable','on')

end

%% Popup menu s nabidkou jiz namerenych signalu
function popupmenu_mereni_Callback(hObject, eventdata, handles)
global prutok_fyzio prutok_obstr;

popupmenu_hodnota_temp = get(handles.popupmenu_mereni,'String');
popupmenu_hodnota = popupmenu_hodnota_temp{get(handles.popupmenu_mereni,'Value')};
switch popupmenu_hodnota
    case '1. měření'
        new_data_fyzio = importdata('01_norm.txt'); % Nacteni dat ze souboru 1
        prutok_fyzio = new_data_fyzio.data(:,2);
        new_data_obstr = importdata('01_obstr.txt');
        prutok_obstr = new_data_obstr.data(:,2);
    case '2. měření'
        new_data_fyzio = importdata('02_norm.txt'); % Nacteni dat ze souboru 2
        prutok_fyzio = new_data_fyzio.data(:,2);
        new_data_obstr = importdata('02_obstr.txt');
        prutok_obstr = new_data_obstr.data(:,2);
    case '3. měření'
        new_data_fyzio = importdata('03_norm.txt'); % Nacteni dat ze souboru 3
        prutok_fyzio = new_data_fyzio.data(:,2);
        new_data_obstr = importdata('03_obstr.txt');
        prutok_obstr = new_data_obstr.data(:,2);
    case '4. měření'
        new_data_fyzio = importdata('04_norm.txt'); % Nacteni dat ze souboru 4
        prutok_fyzio = new_data_fyzio.data(:,2);
        new_data_obstr = importdata('04_obstr.txt');
        prutok_obstr = new_data_obstr.data(:,2);
    case '5. měření'
        new_data_fyzio = importdata('05_norm.txt'); % Nacteni dat ze souboru 5
        prutok_fyzio = new_data_fyzio.data(:,2);
        new_data_obstr = importdata('05_obstr.txt');
        prutok_obstr = new_data_obstr.data(:,2);
    case '6. měření'
        new_data_fyzio = importdata('06_norm.txt'); % Nacteni dat ze souboru 6
        prutok_fyzio = new_data_fyzio.data(:,2);
        new_data_obstr = importdata('06_obstr.txt');
        prutok_obstr = new_data_obstr.data(:,2);
    case '7. měření'
        new_data_fyzio = importdata('07_norm.txt'); % Nacteni dat ze souboru 7
        prutok_fyzio = new_data_fyzio.data(:,2);
        new_data_obstr = importdata('07_obstr.txt');
        prutok_obstr = new_data_obstr.data(:,2);
    case '8. měření'
        new_data_fyzio = importdata('08_norm.txt'); % Nacteni dat ze souboru 8
        prutok_fyzio = new_data_fyzio.data(:,2);
        new_data_obstr = importdata('08_obstr.txt');
        prutok_obstr = new_data_obstr.data(:,2);
    case '9. měření'
        new_data_fyzio = importdata('09_norm.txt'); % Nacteni dat ze souboru 9
        prutok_fyzio = new_data_fyzio.data(:,2);
        new_data_obstr = importdata('09_obstr.txt');
        prutok_obstr = new_data_obstr.data(:,2);
    case '10. měření'
        new_data_fyzio = importdata('10_norm.txt'); % Nacteni dat ze souboru 10
        prutok_fyzio = new_data_fyzio.data(:,2);
        new_data_obstr = importdata('10_obstr.txt');
        prutok_obstr = new_data_obstr.data(:,2);
end

function popupmenu_mereni_CreateFcn(hObject, eventdata, handles)
% Hint: popupmenu controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end

%% --- Nahrani vlastniho fyzio zaznamu pomoci tlacitka.
function pushbutton_fyzio_Callback(hObject, eventdata, handles)
global prutok_fyzio;

[FileName, PathName]=uigetfile('*.txt', 'Nahrát měření s fyziologickým průběhem'); % Nacteni souboru s respiracni krivkou - fyzio

if isequal(FileName,0)
   msgbox('Nebyl vybrán soubor'); % Nastaveni chybove hlasky, pokud uzivatel nevybere zadny soubor
else
    prubeh_fyzio = fullfile(PathName, FileName);
    new_data_fyzio = importdata(prubeh_fyzio); % Nacteni dat ze souboru
    prutok_fyzio = new_data_fyzio.data(:,2);
end

%% --- Nahrani vlastniho obstrukcniho zaznamu pomoci tlacitka.
function pushbutton_obstr_Callback(hObject, eventdata, handles)
global prutok_obstr;

[FileName, PathName]=uigetfile('*.txt', 'Nahrát měření s obstrukčním průběhem'); % Nacteni souboru s respiracni krivkou - obstrukce

if isequal(FileName,0)
   msgbox('Nebyl vybrán soubor'); % Nastaveni chybove hlasky, pokud uzivatel nevybere zadny soubor
else
    prubeh_obstr = fullfile(PathName, FileName);
    new_data_obstr = importdata(prubeh_obstr); % Nacteni dat ze souboru
    prutok_obstr = new_data_obstr.data(:,2);
end

%% Zatrhavaci pole pro vykresleni fyzio nebo obstrukcniho zaznamu
function checkbox_graf_fyzio_Callback(hObject, eventdata, handles)
function checkbox_graf_obstr_Callback(hObject, eventdata, handles)

%% Tlacitko pro vykresleni zaznamu
function pushbutton_plot_Callback(hObject, eventdata, handles)
global prutok_fyzio prutok_obstr objem_max_fyzio objem_min_fyzio objem_max_obstr objem_min_obstr ...
fv_objem_fyzio fv_objem_obstr fv_prutok_fyzio fv_prutok_obstr fv_objem_fyzio_kor fv_objem_obstr_kor;

% Smazani vsech grafu a textovych poli pro nove zobrazeni
clc
cla(handles.plot_spirogram)
cla(handles.plot_fv_krivka)
cla(handles.plot_objem_cas)
set(handles.f_fyzio,'String',''); set(handles.vt_fyzio,'String',''); set(handles.irv_fyzio,'String','');
set(handles.ic_fyzio,'String',''); set(handles.erv_fyzio,'String',''); set(handles.fvc_fyzio,'String','');
set(handles.fev1_fyzio,'String',''); set(handles.fev1_fvc_fyzio,'String',''); set(handles.pef_fyzio,'String',''); 
set(handles.fef_25_75_fyzio,'String','');
set(handles.f_obstr,'String',''); set(handles.vt_obstr,'String',''); set(handles.irv_obstr,'String','');
set(handles.ic_obstr,'String',''); set(handles.erv_obstr,'String',''); set(handles.fvc_obstr,'String','');
set(handles.fev1_obstr,'String',''); set(handles.fev1_fvc_obstr,'String',''); set(handles.pef_obstr,'String',''); 
set(handles.fef_25_75_obstr,'String','');
set(handles.checkbox_f,'Value',0); set(handles.checkbox_vt,'Value',0); set(handles.checkbox_irv,'Value',0);
set(handles.checkbox_ic,'Value',0); set(handles.checkbox_erv,'Value',0); set(handles.checkbox_fvc,'Value',0);
set(handles.checkbox_fev1,'Value',0); set(handles.checkbox_pef,'Value',0); set(handles.checkbox_fef_25_75,'Value',0);
set(handles.checkbox_f,'enable','off'); set(handles.checkbox_vt,'enable','off'); set(handles.checkbox_irv,'enable','off');
set(handles.checkbox_ic,'enable','off'); set(handles.checkbox_erv,'enable','off'); set(handles.checkbox_fvc,'enable','off');
set(handles.checkbox_fev1,'enable','off'); set(handles.checkbox_pef,'enable','off'); set(handles.checkbox_fef_25_75,'enable','off');

clear f_fyzio VT_fyzio IRV_fyzio IC_fyzio ERV_fyzio VC_fyzio fev1_fyzio pef_fyzio fef_25_75_fyzio
clear f_obstr VT_obstr IRV_obstr IC_obstr ERV_obstr VC_obstr fev1_obstr pef_obstr fef_25_75_obstr

%% 1. pripad: Vykreslit fyzio i obstr zaznam
if get(handles.checkbox_graf_fyzio,'Value')==1 && get(handles.checkbox_graf_obstr,'Value')==1
    if isempty(prutok_fyzio)==1 % Osetreni pokud neni nacten jeden ze souboru
    msgbox('Nebyl načten soubor s fyziologickým průběhem');
    elseif isempty(prutok_obstr)==1
    msgbox('Nebyl načten soubor s obstrukčním průběhem');
    end
    % Analyza obou zaznamu
    [f_fyzio, VT_fyzio, IRV_fyzio, IC_fyzio, ERV_fyzio, FVC_fyzio, fv_prutok_fyzio, fv_objem_fyzio, objem_kor_fyzio, fev1_fyzio, pef_fyzio, fef_25_75_fyzio, objem_max_fyzio, objem_min_fyzio] = analyza(prutok_fyzio);
    [f_obstr, VT_obstr, IRV_obstr, IC_obstr, ERV_obstr, FVC_obstr, fv_prutok_obstr, fv_objem_obstr, objem_kor_obstr, fev1_obstr, pef_obstr, fef_25_75_obstr, objem_max_obstr, objem_min_obstr] = analyza(prutok_obstr);
    % Nastaveni casove osy pro graficke zobrazeni
    cas_fyzio = (0:1:length(objem_kor_fyzio)-1)/100;
    cas_obstr = (0:1:length(objem_kor_obstr)-1)/100;
    
    % Graficke zobrazeni Spirogram
    axes(handles.plot_spirogram) 
    plot(handles.plot_spirogram,cas_obstr,objem_kor_obstr,'r', 'LineWidth',2)
    axis([0 (max([cas_obstr(end),cas_fyzio(end)])+1) (min([min(objem_kor_obstr),min(objem_kor_fyzio)])-1) (max([max(objem_kor_obstr),max(objem_kor_fyzio)])+1)]) % Nastaveni rozsahu os
    hold on
    plot(handles.plot_spirogram,objem_max_obstr(:,1)/100,objem_max_obstr(:,2),'rx', 'LineWidth',3)
    plot(handles.plot_spirogram,objem_min_obstr(:,1)/100,objem_min_obstr(:,2),'rx', 'LineWidth',3)
    plot(handles.plot_spirogram,cas_fyzio,objem_kor_fyzio,'b', 'LineWidth',2)
    plot(handles.plot_spirogram,objem_max_fyzio(:,1)/100,objem_max_fyzio(:,2),'bx', 'LineWidth',3)
    plot(handles.plot_spirogram,objem_min_fyzio(:,1)/100,objem_min_fyzio(:,2),'bx', 'LineWidth',3)
    xlabel('čas [s]')
    ylabel('objem [L]')
    
    axes(handles.plot_objem_cas) % Objem-cas
    [fv_objem_fyzio_kor] = zacatek_exspiria(fv_prutok_fyzio, fv_objem_fyzio);
    [fv_objem_obstr_kor] = zacatek_exspiria(fv_prutok_obstr, fv_objem_obstr);
    plot(handles.plot_objem_cas,0:0.01:(length(fv_objem_fyzio_kor(1:end-1))/100),fv_objem_fyzio_kor,'b', 'LineWidth',2)
    hold on
    plot(handles.plot_objem_cas,0:0.01:(length(fv_objem_obstr_kor(1:end-1))/100),fv_objem_obstr_kor,'r', 'LineWidth',2)
    xlabel('čas [s]')
    ylabel('objem [L]')
    
    axes(handles.plot_fv_krivka) % F-V krivka
    plot(handles.plot_fv_krivka, fv_objem_fyzio, -fv_prutok_fyzio, 'b', 'LineWidth',2)
    hold on
    plot(handles.plot_fv_krivka, fv_objem_obstr, -fv_prutok_obstr, 'r', 'LineWidth',2)
    xlabel('objem [L]')
    ylabel('průtok [L/s]')  
    
    % Vypsani jednotlivych dechovych parametru
    set(handles.f_fyzio,'String',f_fyzio); set(handles.vt_fyzio,'String',VT_fyzio); set(handles.irv_fyzio,'String',IRV_fyzio);
    set(handles.ic_fyzio,'String',IC_fyzio); set(handles.erv_fyzio,'String',ERV_fyzio); set(handles.fvc_fyzio,'String',FVC_fyzio);
    set(handles.fev1_fyzio,'String',fev1_fyzio); set(handles.fev1_fvc_fyzio,'String',(fev1_fyzio/FVC_fyzio)*100); set(handles.pef_fyzio,'String',pef_fyzio); 
    set(handles.fef_25_75_fyzio,'String',fef_25_75_fyzio);
    set(handles.f_obstr,'String',f_obstr); set(handles.vt_obstr,'String',VT_obstr); set(handles.irv_obstr,'String',IRV_obstr);
    set(handles.ic_obstr,'String',IC_obstr); set(handles.erv_obstr,'String',ERV_obstr); set(handles.fvc_obstr,'String',FVC_obstr); 
    set(handles.fev1_obstr,'String',fev1_obstr); set(handles.fev1_fvc_obstr,'String',(fev1_obstr/FVC_obstr)*100);
    set(handles.pef_obstr,'String',pef_obstr); set(handles.fef_25_75_obstr,'String',fef_25_75_obstr);
    
    set(handles.checkbox_f,'enable','off'); set(handles.checkbox_vt,'enable','off'); set(handles.checkbox_irv,'enable','off');
    set(handles.checkbox_ic,'enable','off'); set(handles.checkbox_erv,'enable','off'); set(handles.checkbox_fvc,'enable','on');
    set(handles.checkbox_fev1,'enable','on'); set(handles.checkbox_pef,'enable','on'); set(handles.checkbox_fef_25_75,'enable','on');

%% 2. pripad: Vykreslit pouze fyzio zaznam    
elseif get(handles.checkbox_graf_fyzio,'Value')==1
    if isempty(prutok_fyzio)==1 % Osetreni pokud neni nacten soubor
    msgbox('Nebyl načten soubor s fyziologickým průběhem');
    end
    % Analyza zaznamu
    [f_fyzio, VT_fyzio, IRV_fyzio, IC_fyzio, ERV_fyzio, FVC_fyzio, fv_prutok_fyzio, fv_objem_fyzio, objem_kor_fyzio, fev1_fyzio, pef_fyzio, fef_25_75_fyzio, objem_max_fyzio, objem_min_fyzio] = analyza(prutok_fyzio);
    
    cas_fyzio = (0:1:length(objem_kor_fyzio)-1)/100; % Casova osa
       
    axes(handles.plot_spirogram) % Spirogram
    plot(handles.plot_spirogram,cas_fyzio,objem_kor_fyzio,'b', 'LineWidth',2)
    axis([0 (max(cas_fyzio(end))+1) (min(min(objem_kor_fyzio))-1) (max(objem_kor_fyzio)+1)])
    hold on
    plot(handles.plot_spirogram,objem_max_fyzio(:,1)/100,objem_max_fyzio(:,2),'bx', 'LineWidth',3)
    plot(handles.plot_spirogram,objem_min_fyzio(:,1)/100,objem_min_fyzio(:,2),'bx', 'LineWidth',3)
    xlabel('čas [s]')
    ylabel('objem [L]')
    axes(handles.plot_objem_cas) % Objem-cas
    [fv_objem_fyzio_kor] = zacatek_exspiria(fv_prutok_fyzio, fv_objem_fyzio);
    plot(handles.plot_objem_cas,0:0.01:(length(fv_objem_fyzio_kor(1:end-1))/100),fv_objem_fyzio_kor,'b', 'LineWidth',2)
    xlabel('čas [s]')
    ylabel('objem [L]')
    axes(handles.plot_fv_krivka) % Prutok-objem
    plot(handles.plot_fv_krivka, fv_objem_fyzio, -fv_prutok_fyzio,'b', 'LineWidth',2)
    xlabel('objem [L]')
    ylabel('průtok [L/s]')
        
    % Vypsani jednotlivych dechovych parametru
    set(handles.f_fyzio,'String',f_fyzio); set(handles.vt_fyzio,'String',VT_fyzio); set(handles.irv_fyzio,'String',IRV_fyzio);
    set(handles.ic_fyzio,'String',IC_fyzio); set(handles.erv_fyzio,'String',ERV_fyzio); set(handles.fvc_fyzio,'String',FVC_fyzio);
    set(handles.fev1_fyzio,'String',fev1_fyzio); set(handles.fev1_fvc_fyzio,'String',(fev1_fyzio/FVC_fyzio)*100); set(handles.pef_fyzio,'String',pef_fyzio); 
    set(handles.fef_25_75_fyzio,'String',fef_25_75_fyzio);
    
    set(handles.checkbox_f,'enable','on'); set(handles.checkbox_vt,'enable','on'); set(handles.checkbox_irv,'enable','on');
    set(handles.checkbox_ic,'enable','on'); set(handles.checkbox_erv,'enable','on'); set(handles.checkbox_fvc,'enable','on');
    set(handles.checkbox_fev1,'enable','on'); set(handles.checkbox_pef,'enable','on'); set(handles.checkbox_fef_25_75,'enable','on');

%% 3. pripad: Vykreslit pouze obstr zaznam    
elseif get(handles.checkbox_graf_obstr,'Value')==1
    if isempty(prutok_obstr)==1 % Osetreni pokud neni nacten soubor
    msgbox('Nebyl načten soubor s obstrukčním průběhem');
    end
    % Analyza zaznamu
    [f_obstr, VT_obstr, IRV_obstr, IC_obstr, ERV_obstr, FVC_obstr, fv_prutok_obstr, fv_objem_obstr, objem_kor_obstr, fev1_obstr, pef_obstr, fef_25_75_obstr, objem_max_obstr, objem_min_obstr] = analyza(prutok_obstr);
    
    cas_obstr = (0:1:length(objem_kor_obstr)-1)/100; % Casova osa
    
    axes(handles.plot_spirogram) % Spirogram
    plot(handles.plot_spirogram,cas_obstr,objem_kor_obstr,'r', 'LineWidth',2)
    axis([0 (max(cas_obstr(end))+1) (min(min(objem_kor_obstr))-1) (max(objem_kor_obstr)+1)])
    hold on
    plot(handles.plot_spirogram,objem_max_obstr(:,1)/100,objem_max_obstr(:,2),'rx', 'LineWidth',3)
    plot(handles.plot_spirogram,objem_min_obstr(:,1)/100,objem_min_obstr(:,2),'rx', 'LineWidth',3)
    xlabel('čas [s]')
    ylabel('objem [L]')
    axes(handles.plot_objem_cas) % Objem-cas
    [fv_objem_obstr_kor] = zacatek_exspiria(fv_prutok_obstr, fv_objem_obstr);
    plot(handles.plot_objem_cas,0:0.01:(length(fv_objem_obstr_kor(1:end-1))/100),fv_objem_obstr_kor,'r', 'LineWidth',2)
    xlabel('čas [s]')
    ylabel('objem [L]')
    axes(handles.plot_fv_krivka)
    plot(handles.plot_fv_krivka, fv_objem_obstr, -fv_prutok_obstr,'r', 'LineWidth',2)
    xlabel('objem [L]')
    ylabel('průtok [L/s]')
    axes(handles.plot_fv_krivka) % Prutok-objem
    plot(handles.plot_fv_krivka, fv_objem_obstr, -fv_prutok_obstr,'r', 'LineWidth',2)
    xlabel('objem [L]')
    ylabel('objem [L/s]')
    
    % Vypsani jednotlivych dechovych parametru
    set(handles.f_obstr,'String',f_obstr); set(handles.vt_obstr,'String',VT_obstr); set(handles.irv_obstr,'String',IRV_obstr);
    set(handles.ic_obstr,'String',IC_obstr); set(handles.erv_obstr,'String',ERV_obstr); set(handles.fvc_obstr,'String',FVC_obstr); 
    set(handles.fev1_obstr,'String',fev1_obstr); set(handles.fev1_fvc_obstr,'String',(fev1_obstr/FVC_obstr)*100); set(handles.pef_obstr,'String',pef_obstr); 
    set(handles.fef_25_75_obstr,'String',fef_25_75_obstr);
    
    set(handles.checkbox_f,'enable','on'); set(handles.checkbox_vt,'enable','on'); set(handles.checkbox_irv,'enable','on');
    set(handles.checkbox_ic,'enable','on'); set(handles.checkbox_erv,'enable','on'); set(handles.checkbox_fvc,'enable','on');
    set(handles.checkbox_fev1,'enable','on'); set(handles.checkbox_pef,'enable','on'); set(handles.checkbox_fef_25_75,'enable','on');
    
else msgbox('Vyberte záznam, který chcete zobrazit'); % Pokud neni vybrana ani jedna moznost k vykresleni
    
end

%% Zatrhavaci tlacitko pro vykresleni parametru frekvence
function checkbox_f_Callback(hObject, eventdata, handles)
global objem_max_fyzio objem_max_obstr

if get(handles.checkbox_f,'Value')==1
    if get(handles.checkbox_graf_fyzio,'Value')==1
    poc_dech = length(objem_max_fyzio(:,1));
    axes(handles.plot_spirogram)
    f_line = line([objem_max_fyzio(2,1)/100 objem_max_fyzio(end-1,1)/100],[objem_max_fyzio(2,2)+1 objem_max_fyzio(2,2)+1],'LineWidth',2.5,'Color','black');
    f_text = text(objem_max_fyzio(3,1)/100, objem_max_fyzio(3,2)+1.7,(['f: ' num2str(poc_dech-2) ' dechy za ' ...
        num2str((objem_max_fyzio(end-1,1)-objem_max_fyzio(2,1))/100) ' sekund']), 'HorizontalAlignment','center');
    set(f_line,'tag','f_line');
    set(f_text,'tag','f_text');
    elseif get(handles.checkbox_graf_obstr,'Value')==1
    poc_dech = length(objem_max_obstr(:,1));
    axes(handles.plot_spirogram)
    f_line = line([objem_max_obstr(2,1)/100 objem_max_obstr(end-1,1)/100],[objem_max_obstr(2,2)+1 objem_max_obstr(2,2)+1],'LineWidth',2.5,'Color','black');
    f_text = text(objem_max_obstr(3,1)/100, objem_max_obstr(3,2)+1.7,(['f: ' num2str(poc_dech-2) ' dechy za ' ...
        num2str((objem_max_obstr(end-1,1)-objem_max_obstr(2,1))/100) ' sekund']), 'HorizontalAlignment','center');
    set(f_line,'tag','f_line');
    set(f_text,'tag','f_text');
    end
else
    delete(findobj('tag','f_line'))
    delete(findobj('tag','f_text'))
end

%% Zatrhavaci tlacitko pro vykresleni parametru dechoveho objemu
function checkbox_vt_Callback(hObject, eventdata, handles)
global objem_max_fyzio objem_min_fyzio objem_max_obstr objem_min_obstr

if get(handles.checkbox_vt,'Value')==1
    if get(handles.checkbox_graf_fyzio,'Value')==1
    axes(handles.plot_spirogram)
    vt_line = line([objem_min_fyzio(2,1)/100 objem_min_fyzio(2,1)/100],[objem_min_fyzio(2,2) objem_max_fyzio(2,2)],'LineWidth',2.5,'Color','black');
    vt_text = text(objem_min_fyzio(2,1)/100, objem_max_fyzio(2,2)+0.2,'VT', 'HorizontalAlignment','center');
    set(vt_line,'tag','vt_line');
    set(vt_text,'tag','vt_text');
    elseif get(handles.checkbox_graf_obstr,'Value')==1
    axes(handles.plot_spirogram)
    vt_line = line([objem_min_obstr(2,1)/100 objem_min_obstr(2,1)/100],[objem_min_obstr(2,2) objem_max_obstr(2,2)],'LineWidth',2.5,'Color','black');
    vt_text = text(objem_min_obstr(2,1)/100, objem_max_obstr(2,2)+0.2,'VT', 'HorizontalAlignment','center');
    set(vt_line,'tag','vt_line');
    set(vt_text,'tag','vt_text');
    end
else
    delete(findobj('tag','vt_line'))
    delete(findobj('tag','vt_text'))
end

%% Zatrhavaci tlacitko pro vykresleni parametru inspiracniho rezervniho
%% objemu
function checkbox_irv_Callback(hObject, eventdata, handles)
global objem_max_fyzio objem_max_obstr

if get(handles.checkbox_irv,'Value')==1
    if get(handles.checkbox_graf_fyzio,'Value')==1
    axes(handles.plot_spirogram)
    irv_line = line([objem_max_fyzio(end-1,1)/100 objem_max_fyzio(end-1,1)/100],[objem_max_fyzio(end-1,2) objem_max_fyzio(end,2)],'LineWidth',2.5,'Color','black');
    irv_text = text(objem_max_fyzio(end-1,1)/100, objem_max_fyzio(end,2)+0.2,'IRV', 'HorizontalAlignment','center');
    set(irv_line,'tag','irv_line');
    set(irv_text,'tag','irv_text');
    elseif get(handles.checkbox_graf_obstr,'Value')==1
    axes(handles.plot_spirogram)
    irv_line = line([objem_max_obstr(end-1,1)/100 objem_max_obstr(end-1,1)/100],[objem_max_obstr(end-1,2) objem_max_obstr(end,2)],'LineWidth',2.5,'Color','black');
    irv_text = text(objem_max_obstr(end-1,1)/100, objem_max_obstr(end,2)+0.2,'IRV', 'HorizontalAlignment','center');
    set(irv_line,'tag','irv_line');
    set(irv_text,'tag','irv_text');
    end
else
    delete(findobj('tag','irv_line'))
    delete(findobj('tag','irv_text'))
end

%% Zatrhavaci tlacitko pro vykresleni parametru inspiracni kapacity
function checkbox_ic_Callback(hObject, eventdata, handles)
global objem_max_fyzio objem_min_fyzio objem_max_obstr objem_min_obstr

if get(handles.checkbox_ic,'Value')==1
    if get(handles.checkbox_graf_fyzio,'Value')==1
    axes(handles.plot_spirogram)
    ic_line = line([objem_min_fyzio(end-1,1)/100 objem_min_fyzio(end-1,1)/100],[objem_min_fyzio(end-1,2) objem_max_fyzio(end,2)],'LineWidth',2.5,'Color','black');
    ic_text = text(objem_min_fyzio(end-1,1)/100, objem_max_fyzio(end,2)+0.2,'IC', 'HorizontalAlignment','center');
    set(ic_line,'tag','ic_line');
    set(ic_text,'tag','ic_text');
    elseif get(handles.checkbox_graf_obstr,'Value')==1
    axes(handles.plot_spirogram)
    ic_line = line([objem_min_obstr(end-1,1)/100 objem_min_obstr(end-1,1)/100],[objem_min_obstr(end-1,2) objem_max_obstr(end,2)],'LineWidth',2.5,'Color','black');
    ic_text = text(objem_min_obstr(end-1,1)/100, objem_max_obstr(end,2)+0.2,'IC', 'HorizontalAlignment','center');
    set(ic_line,'tag','ic_line');
    set(ic_text,'tag','ic_text');
    end
else
    delete(findobj('tag','ic_line'))
    delete(findobj('tag','ic_text'))
end

%%
% Zatrhavaci tlacitka, kterymi si uzivatel vybere, ktere parametry chce
% zobrazit primo v zaznamu
% Navrzeno pomoci If funkce: 
%   Pokud je policko zatrzeno (Value ==1)
% -- Zjistit, zda je vybrana moznost fyzio nebo obstrukcni zaznam (u dynamickych parametru
%       je moznost oubou)
% -- Vykresli prislusne cary
% -- Vypis prislusne popisky
%   Pokud neni policko zatrzeno
% -- Smaz vykreslene cary a popisky parametru

%% Zatrhavaci tlacitko pro vykresleni parametru exspiracniho rezervniho
%% objemu
function checkbox_erv_Callback(hObject, eventdata, handles)
global objem_min_fyzio objem_min_obstr

if get(handles.checkbox_erv,'Value')==1
    if get(handles.checkbox_graf_fyzio,'Value')==1
    axes(handles.plot_spirogram)
    erv_line = line([objem_min_fyzio(end-1,1)/100 objem_min_fyzio(end-1,1)/100],[objem_min_fyzio(end-1,2) objem_min_fyzio(end,2)],'LineWidth',2.5,'Color','black');
    erv_text = text(objem_min_fyzio(end-1,1)/100 -0.9, objem_min_fyzio(end,2),'ERV', 'HorizontalAlignment','center');
    set(erv_line,'tag','erv_line');
    set(erv_text,'tag','erv_text');
    elseif get(handles.checkbox_graf_obstr,'Value')==1
    axes(handles.plot_spirogram)
    erv_line = line([objem_min_obstr(end-1,1)/100 objem_min_obstr(end-1,1)/100],[objem_min_obstr(end-1,2) objem_min_obstr(end,2)],'LineWidth',2.5,'Color','black');
    erv_text = text(objem_min_obstr(end-1,1)/100 -0.9, objem_min_obstr(end,2),'ERV', 'HorizontalAlignment','center');
    set(erv_line,'tag','erv_line');
    set(erv_text,'tag','erv_text');
    end
else
    delete(findobj('tag','erv_line'))
    delete(findobj('tag','erv_text'))
end

%% Zatrhavaci tlacitko pro vykresleni parametru usilovne vitalni kapacity
function checkbox_fvc_Callback(hObject, eventdata, handles)
global objem_max_fyzio objem_min_fyzio objem_max_obstr objem_min_obstr fv_objem_fyzio fv_objem_obstr ...
    fv_objem_fyzio_kor fv_objem_obstr_kor

if get(handles.checkbox_fvc,'Value')==1
    if get(handles.checkbox_graf_fyzio,'Value')==1 && get(handles.checkbox_graf_obstr,'Value')==1
    axes(handles.plot_objem_cas)
    fvc_line_1 = line([(length(fv_objem_fyzio_kor)-1)/100 (length(fv_objem_fyzio_kor)-1)/100],[0 fv_objem_fyzio_kor(end)],'LineStyle','--','Color','black');
    hold on
    fvc_line_1_2 = plot((length(fv_objem_fyzio_kor)-1)/100,fv_objem_fyzio_kor(end),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fvc_text_1 = text((length(fv_objem_fyzio_kor)-1)/100+0.2,fv_objem_fyzio_kor(end)-0.2,'FVC', 'HorizontalAlignment','center');
    fvc_line_2 = line([(length(fv_objem_obstr_kor)-1)/100 length(fv_objem_obstr_kor)/100],[0 fv_objem_obstr_kor(end)],'LineStyle','--','Color','black');
    fvc_line_2_1 = plot((length(fv_objem_obstr_kor)-1)/100,fv_objem_obstr_kor(end),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fvc_text_2 = text((length(fv_objem_obstr_kor)-1)/100+0.1,fv_objem_obstr_kor(end)-0.2,'FVC', 'HorizontalAlignment','center');
    set(fvc_line_1,'tag','fvc_line_1');
    set(fvc_line_1_2,'tag','fvc_line_1_2');
    set(fvc_text_1,'tag','fvc_text_1');
    set(fvc_line_2,'tag','fvc_line_2');
    set(fvc_line_2_1,'tag','fvc_line_2_1');
    set(fvc_text_2,'tag','fvc_text_2');
    axes(handles.plot_fv_krivka)
    hold on
    fvc_line_3 = plot(fv_objem_fyzio(end),0,'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fvc_text_3 = text(fv_objem_fyzio(end), -0.5,'FVC', 'HorizontalAlignment','center');
    fvc_line_4 = plot(fv_objem_obstr(end),0,'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fvc_text_4 = text(fv_objem_obstr(end), -0.5,'FVC', 'HorizontalAlignment','center');
    set(fvc_line_3,'tag','fvc_line_3');
    set(fvc_text_3,'tag','fvc_text_3');
    set(fvc_line_4,'tag','fvc_line_4');
    set(fvc_text_4,'tag','fvc_text_4');
    elseif get(handles.checkbox_graf_fyzio,'Value')==1
    axes(handles.plot_spirogram)
    fvc_line_1 = line([objem_min_fyzio(end,1)/100 objem_min_fyzio(end,1)/100],[objem_min_fyzio(end,2) objem_max_fyzio(end,2)],'LineWidth',2.5,'Color','black');
    fvc_text_1 = text(objem_min_fyzio(end,1)/100, objem_max_fyzio(end,2)+0.2,'FVC', 'HorizontalAlignment','center');
    set(fvc_line_1,'tag','fvc_line_1');
    set(fvc_text_1,'tag','fvc_text_1');
    axes(handles.plot_objem_cas)
    fvc_line_2 = line([(length(fv_objem_fyzio_kor)-1)/100 (length(fv_objem_fyzio_kor)-1)/100],[0 fv_objem_fyzio_kor(end)],'LineStyle','--','Color','black');
    hold on
    fvc_line_2_1 = plot((length(fv_objem_fyzio_kor)-1)/100,fv_objem_fyzio_kor(end),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fvc_text_2 = text((length(fv_objem_fyzio_kor)-1)/100+0.2,fv_objem_fyzio_kor(end)-0.2,'FVC', 'HorizontalAlignment','center');
    set(fvc_line_2,'tag','fvc_line_2');
    set(fvc_line_2_1,'tag','fvc_line_2_1');
    set(fvc_text_2,'tag','fvc_text_2');
    axes(handles.plot_fv_krivka)
    hold on
    fvc_line_3 = plot(fv_objem_fyzio(end),0,'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fvc_text_3 = text(fv_objem_fyzio(end), -0.5,'FVC', 'HorizontalAlignment','center');
    set(fvc_line_3,'tag','fvc_line_3');
    set(fvc_text_3,'tag','fvc_text_3');
    elseif get(handles.checkbox_graf_obstr,'Value')==1
    axes(handles.plot_spirogram)
    fvc_line_1 = line([objem_min_obstr(end,1)/100 objem_min_obstr(end,1)/100],[objem_min_obstr(end,2) objem_max_obstr(end,2)],'LineWidth',2.5,'Color','black');
    hold on
    fvc_line_1_2 = plot(length(fv_objem_obstr)/100,fv_objem_obstr(end),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fvc_text_1 = text(objem_min_obstr(end,1)/100, objem_max_obstr(end,2)+0.2,'FVC', 'HorizontalAlignment','center');
    set(fvc_line_1,'tag','fvc_line_1');
    set(fvc_line_1_2,'tag','fvc_line_1_2');
    set(fvc_text_1,'tag','fvc_text_1');
    axes(handles.plot_objem_cas)
    fvc_line_2 = line([(length(fv_objem_obstr_kor)-1)/100 (length(fv_objem_obstr_kor)-1)/100],[0 fv_objem_obstr_kor(end)],'LineStyle','--','Color','black');
    hold on
    fvc_line_2_1 = plot((length(fv_objem_obstr_kor)-1)/100,fv_objem_obstr_kor(end),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fvc_text_2 = text((length(fv_objem_obstr_kor)-1)/100+0.2,fv_objem_obstr_kor(end)-0.2,'FVC', 'HorizontalAlignment','center');
    set(fvc_line_2,'tag','fvc_line_2');
    set(fvc_line_2_1,'tag','fvc_line_2_1');
    set(fvc_text_2,'tag','fvc_text_2');
    axes(handles.plot_fv_krivka)
    hold on
    fvc_line_3 = plot(fv_objem_obstr(end),0,'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fvc_text_3 = text(fv_objem_obstr(end), -0.5,'FVC', 'HorizontalAlignment','center');
    set(fvc_line_3,'tag','fvc_line_3');
    set(fvc_text_3,'tag','fvc_text_3');
    end
else
    delete(findobj('tag','fvc_line_1'))
    delete(findobj('tag','fvc_line_1_2'))
    delete(findobj('tag','fvc_text_1'))
    delete(findobj('tag','fvc_line_2'))
    delete(findobj('tag','fvc_line_2_1'))
    delete(findobj('tag','fvc_text_2'))
    delete(findobj('tag','fvc_line_3'))
    delete(findobj('tag','fvc_text_3'))
    delete(findobj('tag','fvc_line_4'))
    delete(findobj('tag','fvc_text_4'))
end

%% Zatrhavaci tlacitko pro vykresleni parametru vydechnuteho objemu behem
%% prvni sekundy (FEV_1)
function checkbox_fev1_Callback(hObject, eventdata, handles)
global fv_objem_fyzio fv_objem_obstr fv_prutok_fyzio fv_prutok_obstr ...
    fv_objem_fyzio_kor fv_objem_obstr_kor

if get(handles.checkbox_fev1,'Value')==1
    if get(handles.checkbox_graf_fyzio,'Value')==1 && get(handles.checkbox_graf_obstr,'Value')==1
    axes(handles.plot_objem_cas)
    fev1_line_1 = line([1 1],[0 fv_objem_fyzio_kor(101)],'LineStyle','--','Color','black');
    fev1_line_1_1 = line([0 1],[fv_objem_fyzio_kor(101) fv_objem_fyzio_kor(101)],'LineStyle','--','Color','black');
    fev1_line_2 = line([1 1],[0 fv_objem_obstr_kor(101)],'LineStyle','--','Color','black');
    fev1_line_2_1 = line([0 1],[fv_objem_obstr_kor(101) fv_objem_obstr_kor(101)],'LineStyle','--','Color','black');
    hold on
    fev1_line_3 = plot(1,fv_objem_fyzio_kor(101),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fev1_text_3 = text(1,fv_objem_fyzio_kor(101)+0.4,'FEV_1', 'HorizontalAlignment','right');
    fev1_line_4 = plot(1,fv_objem_obstr_kor(101),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fev1_text_4 = text(1,fv_objem_obstr_kor(101)+0.4,'FEV_1', 'HorizontalAlignment','right');
    set(fev1_line_1,'tag','fev1_line_1');
    set(fev1_line_1_1,'tag','fev1_line_1_1');
    set(fev1_line_2,'tag','fev1_line_2');
    set(fev1_line_2_1,'tag','fev1_line_2_1');
    set(fev1_line_3,'tag','fev1_line_3');
    set(fev1_text_3,'tag','fev1_text_3');
    set(fev1_line_4,'tag','fev1_line_4');
    set(fev1_text_4,'tag','fev1_text_4');
    axes(handles.plot_fv_krivka)
    fev1_line_5 = line([fv_objem_fyzio(100) fv_objem_fyzio(100)],[0 -fv_prutok_fyzio(100)],'LineStyle','--','Color','black');
    fev1_line_6 = line([fv_objem_obstr(100) fv_objem_obstr(100)],[0 -fv_prutok_obstr(100)],'LineStyle','--','Color','black');
    hold on
    fev1_line_5_1 = plot(fv_objem_fyzio(100),-fv_prutok_fyzio(100),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fev1_line_6_1 = plot(fv_objem_obstr(100),-fv_prutok_obstr(100),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fev1_text_5 = text(fv_objem_fyzio(100),-fv_prutok_fyzio(100)+0.4,'FEV_1', 'HorizontalAlignment','center');
    fev1_text_6 = text(fv_objem_obstr(100),-fv_prutok_obstr(100)+0.4,'FEV_1', 'HorizontalAlignment','center');
    set(fev1_line_5,'tag','fev1_line_5');
    set(fev1_line_6,'tag','fev1_line_6');
    set(fev1_line_5_1,'tag','fev1_line_5_1');
    set(fev1_line_6_1,'tag','fev1_line_6_1');
    set(fev1_text_5,'tag','fev1_text_5');
    set(fev1_text_6,'tag','fev1_text_6');  
    elseif get(handles.checkbox_graf_fyzio,'Value')==1
    axes(handles.plot_objem_cas)
    fev1_line_2 = line([1 1],[0 fv_objem_fyzio_kor(101)],'LineStyle','--','Color','black');
    fev1_line_2_1 = line([0 1],[fv_objem_fyzio_kor(101) fv_objem_fyzio_kor(101)],'LineStyle','--','Color','black');
    hold on
    fev1_line_2_2 = plot(1,fv_objem_fyzio_kor(101),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fev1_text_2 = text(1,fv_objem_fyzio_kor(101)+0.4,'FEV_1', 'HorizontalAlignment','right');
    set(fev1_line_2,'tag','fev1_line_2');
    set(fev1_line_2_1,'tag','fev1_line_2_1');
    set(fev1_line_2_2,'tag','fev1_line_2_2');
    set(fev1_text_2,'tag','fev1_text_2');
    axes(handles.plot_fv_krivka)
    fev1_line_3 = line([fv_objem_fyzio(100) fv_objem_fyzio(100)],[0 -fv_prutok_fyzio(100)],'LineStyle','--','Color','black');
    hold on
    fev1_line_3_1 = plot(fv_objem_fyzio(100),-fv_prutok_fyzio(100),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fev1_text_3 = text(fv_objem_fyzio(100),-fv_prutok_fyzio(100)+0.4,'FEV_1', 'HorizontalAlignment','center');
    set(fev1_line_3,'tag','fev1_line_3');
    set(fev1_line_3_1,'tag','fev1_line_3_1');
    set(fev1_text_3,'tag','fev1_text_3');
    elseif get(handles.checkbox_graf_obstr,'Value')==1
    axes(handles.plot_objem_cas)
    fev1_line_2 = line([1 1],[0 fv_objem_obstr_kor(101)],'LineStyle','--','Color','black');
    hold on
    fev1_line_2_1 = plot(1,fv_objem_obstr_kor(101),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fev1_text_2 = text(1,fv_objem_obstr_kor(101)+0.4,'FEV_1', 'HorizontalAlignment','right');
    set(fev1_line_2,'tag','fev1_line_2');
    set(fev1_line_2_1,'tag','fev1_line_2_1');
    set(fev1_text_2,'tag','fev1_text_2');
    axes(handles.plot_fv_krivka)
    fev1_line_3 = line([fv_objem_obstr(100) fv_objem_obstr(100)],[0 -fv_prutok_obstr(100)],'LineStyle','--','Color','black');
    hold on
    fev1_line_3_1 = plot(fv_objem_obstr(100),-fv_prutok_obstr(100),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fev1_text_3 = text(fv_objem_obstr(100),-fv_prutok_obstr(100)+0.4,'FEV_1', 'HorizontalAlignment','center');
    set(fev1_line_3,'tag','fev1_line_3');
    set(fev1_line_3_1,'tag','fev1_line_3_1');
    set(fev1_text_3,'tag','fev1_text_3');
    end
else
    delete(findobj('tag','fev1_line_1'))
    delete(findobj('tag','fev1_line_1_1'))
    delete(findobj('tag','fev1_text_1'))
    delete(findobj('tag','fev1_line_2'))
    delete(findobj('tag','fev1_line_2_1'))
    delete(findobj('tag','fev1_line_2_2'))
    delete(findobj('tag','fev1_text_2'))
    delete(findobj('tag','fev1_line_3'))
    delete(findobj('tag','fev1_line_3_1'))
    delete(findobj('tag','fev1_text_3'))
    delete(findobj('tag','fev1_line_4'))
    delete(findobj('tag','fev1_text_4'))
    delete(findobj('tag','fev1_line_5'))
    delete(findobj('tag','fev1_line_5_1'))
    delete(findobj('tag','fev1_line_6'))
    delete(findobj('tag','fev1_line_6_1'))
    delete(findobj('tag','fev1_text_5'))
    delete(findobj('tag','fev1_text_6'))
end

%% Zatrhavaci tlacitko pro vykresleni parametru maximalniho exspiracniho
%% prutoku
function checkbox_pef_Callback(hObject, eventdata, handles)
global fv_objem_fyzio fv_objem_obstr fv_prutok_fyzio fv_prutok_obstr

if get(handles.checkbox_pef,'Value')==1
    if get(handles.checkbox_graf_fyzio,'Value')==1 && get(handles.checkbox_graf_obstr,'Value')==1
    axes(handles.plot_fv_krivka)
    [hodnota_pef_fyzio, poloha_pef_fyzio] = max(-fv_prutok_fyzio);
    pef_line_1 = line([0 fv_objem_fyzio(poloha_pef_fyzio)],[hodnota_pef_fyzio hodnota_pef_fyzio],'LineStyle','--','Color','black');
    hold on
    pef_line_1_2 = plot(fv_objem_fyzio(poloha_pef_fyzio),-fv_prutok_fyzio(poloha_pef_fyzio),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    pef_text_1 = text(fv_objem_fyzio(poloha_pef_fyzio),-fv_prutok_fyzio(poloha_pef_fyzio)-0.4,'PEF', 'HorizontalAlignment','center');
    [hodnota_pef_obstr, poloha_pef_obstr] = max(-fv_prutok_obstr);
    pef_line_2 = line([0 fv_objem_obstr(poloha_pef_obstr)],[hodnota_pef_obstr hodnota_pef_obstr],'LineStyle','--','Color','black');
    hold on
    pef_line_2_1 = plot(fv_objem_obstr(poloha_pef_obstr),-fv_prutok_obstr(poloha_pef_obstr),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    pef_text_2 = text(fv_objem_obstr(poloha_pef_obstr),-fv_prutok_obstr(poloha_pef_obstr)-0.4,'PEF', 'HorizontalAlignment','center');
    set(pef_line_1,'tag','pef_line_1');
    set(pef_line_1_2,'tag','pef_line_1_2');
    set(pef_text_1,'tag','pef_text_1');
    set(pef_line_2,'tag','pef_line_2');
    set(pef_line_2_1,'tag','pef_line_2_1');
    set(pef_text_2,'tag','pef_text_2');
    elseif get(handles.checkbox_graf_fyzio,'Value')==1
    axes(handles.plot_fv_krivka)
    [hodnota_pef, poloha_pef] = max(-fv_prutok_fyzio);
    pef_line_1 = line([0 fv_objem_fyzio(poloha_pef)],[hodnota_pef hodnota_pef],'LineStyle','--','Color','black');
    hold on
    pef_line_1_2 = plot(fv_objem_fyzio(poloha_pef),-fv_prutok_fyzio(poloha_pef),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    pef_text_1 = text(fv_objem_fyzio(poloha_pef),-fv_prutok_fyzio(poloha_pef)-0.4,'PEF', 'HorizontalAlignment','center');
    set(pef_line_1,'tag','pef_line_1');
    set(pef_line_1_2,'tag','pef_line_1_2');
    set(pef_text_1,'tag','pef_text_1');
    elseif get(handles.checkbox_graf_obstr,'Value')==1
    axes(handles.plot_fv_krivka)
    [hodnota_pef, poloha_pef] = max(-fv_prutok_obstr);
    pef_line_1 = line([0 fv_objem_obstr(poloha_pef)],[hodnota_pef hodnota_pef],'LineStyle','--','Color','black');
    hold on
    pef_line_1_2 = plot(fv_objem_obstr(poloha_pef),-fv_prutok_obstr(poloha_pef),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    pef_text_1 = text(fv_objem_obstr(poloha_pef),-fv_prutok_obstr(poloha_pef)-0.4,'PEF', 'HorizontalAlignment','center');
    set(pef_line_1,'tag','pef_line_1');
    set(pef_line_1_2,'tag','pef_line_1_2');
    set(pef_text_1,'tag','pef_text_1');
    end
else
    delete(findobj('tag','pef_line_1'))
    delete(findobj('tag','pef_line_1_2'))
    delete(findobj('tag','pef_text_1'))
    delete(findobj('tag','pef_line_2'))
    delete(findobj('tag','pef_line_2_1'))
    delete(findobj('tag','pef_text_2'))
end

%% Zatrhavaci tlacitko pro vykresleni parametru prumerneho prutoku mezi
%% 25-75 % vydechnute FVC
function checkbox_fef_25_75_Callback(hObject, eventdata, handles)
global fv_objem_fyzio fv_objem_obstr fv_prutok_fyzio fv_prutok_obstr

if get(handles.checkbox_fef_25_75,'Value')==1
    if get(handles.checkbox_graf_fyzio,'Value')==1 && get(handles.checkbox_graf_obstr,'Value')==1
    objem_25_fyzio = 0.25*fv_objem_fyzio(end); % Hodnota 25% vydechnuteho FVC
    objem_75_fyzio = 0.75*fv_objem_fyzio(end); % Hodnota 75% vydechnuteho FVC
    temp_25_fyzio = abs(fv_objem_fyzio-objem_25_fyzio); % Odecteni kazde hodnoty objemu od 25% hodnoty
    [~, poloha_25_fyzio] = min(temp_25_fyzio); % Poloha, kde je rozdil minimalni -> Pozice 25% vydechnuteho FVC
    temp_75_fyzio = abs(fv_objem_fyzio-objem_75_fyzio); % Odecteni kazde hodnoty objemu od 75% hodnoty
    [~, poloha_75_fyzio] = min(temp_75_fyzio); % Poloha, kde je rozdil minimalni -> Pozice 75% vydechnuteho FVC
    axes(handles.plot_fv_krivka)
    fef_25_75_line_1 = line([0 fv_objem_fyzio(poloha_25_fyzio)],[-fv_prutok_fyzio(poloha_25_fyzio) -fv_prutok_fyzio(poloha_25_fyzio)],'LineStyle','--','Color','black');
    hold on
    fef_25_75_line_1_1 = plot(fv_objem_fyzio(poloha_25_fyzio),-fv_prutok_fyzio(poloha_25_fyzio),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fef_25_75_text_1 = text(fv_objem_fyzio(poloha_25_fyzio),-fv_prutok_fyzio(poloha_25_fyzio)-0.7,'FEF 25', 'HorizontalAlignment','center');
    fef_25_75_line_2 = line([0 fv_objem_fyzio(poloha_75_fyzio)],[-fv_prutok_fyzio(poloha_75_fyzio) -fv_prutok_fyzio(poloha_75_fyzio)],'LineStyle','--','Color','black');
    fef_25_75_line_2_1 = plot(fv_objem_fyzio(poloha_75_fyzio),-fv_prutok_fyzio(poloha_75_fyzio),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fef_25_75_text_2 = text(fv_objem_fyzio(poloha_75_fyzio),-fv_prutok_fyzio(poloha_75_fyzio)-0.7,'FEF 75', 'HorizontalAlignment','center');
    objem_25_obstr = 0.25*fv_objem_obstr(end); % Hodnota 25% vydechnuteho FVC
    objem_75_obstr = 0.75*fv_objem_obstr(end); % Hodnota 75% vydechnuteho FVC
    temp_25_obstr = abs(fv_objem_obstr-objem_25_obstr); % Odecteni kazde hodnoty objemu od 25% hodnoty
    [~, poloha_25_obstr] = min(temp_25_obstr); % Poloha, kde je rozdil minimalni -> Pozice 25% vydechnuteho FVC
    temp_75_obstr = abs(fv_objem_obstr-objem_75_obstr); % Odecteni kazde hodnoty objemu od 75% hodnoty
    [~, poloha_75_obstr] = min(temp_75_obstr); % Poloha, kde je rozdil minimalni -> Pozice 75% vydechnuteho FVC
    axes(handles.plot_fv_krivka)
    fef_25_75_line_3 = line([0 fv_objem_obstr(poloha_25_obstr)],[-fv_prutok_obstr(poloha_25_obstr) -fv_prutok_obstr(poloha_25_obstr)],'LineStyle','--','Color','black');
    hold on
    fef_25_75_line_3_1 = plot(fv_objem_obstr(poloha_25_obstr),-fv_prutok_obstr(poloha_25_obstr),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fef_25_75_text_3 = text(fv_objem_obstr(poloha_25_obstr),-fv_prutok_obstr(poloha_25_obstr)-0.5,'FEF 25', 'HorizontalAlignment','center');
    fef_25_75_line_4 = line([0 fv_objem_obstr(poloha_75_obstr)],[-fv_prutok_obstr(poloha_75_obstr) -fv_prutok_obstr(poloha_75_obstr)],'LineStyle','--','Color','black');
    fef_25_75_line_4_1 = plot(fv_objem_obstr(poloha_75_obstr),-fv_prutok_obstr(poloha_75_obstr),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fef_25_75_text_4 = text(fv_objem_obstr(poloha_75_obstr),-fv_prutok_obstr(poloha_75_obstr)-0.5,'FEF 75', 'HorizontalAlignment','center');
    set(fef_25_75_line_1,'tag','fef_25_75_line_1');
    set(fef_25_75_line_1_1,'tag','fef_25_75_line_1_1');
    set(fef_25_75_text_1,'tag','fef_25_75_text_1');
    set(fef_25_75_line_2,'tag','fef_25_75_line_2');
    set(fef_25_75_line_2_1,'tag','fef_25_75_line_2_1');
    set(fef_25_75_text_2,'tag','fef_25_75_text_2');
    set(fef_25_75_line_3,'tag','fef_25_75_line_3');
    set(fef_25_75_line_3_1,'tag','fef_25_75_line_3_1');
    set(fef_25_75_text_3,'tag','fef_25_75_text_3');
    set(fef_25_75_line_4,'tag','fef_25_75_line_4');
    set(fef_25_75_line_4_1,'tag','fef_25_75_line_4_1');
    set(fef_25_75_text_4,'tag','fef_25_75_text_4');
    elseif get(handles.checkbox_graf_fyzio,'Value')==1
    objem_25 = 0.25*fv_objem_fyzio(end); % Hodnota 25% vydechnuteho FVC
    objem_75 = 0.75*fv_objem_fyzio(end); % Hodnota 75% vydechnuteho FVC
    temp_25 = abs(fv_objem_fyzio-objem_25); % Odecteni kazde hodnoty objemu od 25% hodnoty
    [~, poloha_25] = min(temp_25); % Poloha, kde je rozdil minimalni -> Pozice 25% vydechnuteho FVC
    temp_75 = abs(fv_objem_fyzio-objem_75); % Odecteni kazde hodnoty objemu od 75% hodnoty
    [~, poloha_75] = min(temp_75); % Poloha, kde je rozdil minimalni -> Pozice 75% vydechnuteho FVC
    axes(handles.plot_fv_krivka)
    fef_25_75_line_1 = line([0 fv_objem_fyzio(poloha_25)],[-fv_prutok_fyzio(poloha_25) -fv_prutok_fyzio(poloha_25)],'LineStyle','--','Color','black');
    hold on
    fef_25_75_line_1_1 = plot(fv_objem_fyzio(poloha_25),-fv_prutok_fyzio(poloha_25),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fef_25_75_text_1 = text(fv_objem_fyzio(poloha_25),-fv_prutok_fyzio(poloha_25)-0.4,'FEF 25', 'HorizontalAlignment','center');
    fef_25_75_line_2 = line([0 fv_objem_fyzio(poloha_75)],[-fv_prutok_fyzio(poloha_75) -fv_prutok_fyzio(poloha_75)],'LineStyle','--','Color','black');
    fef_25_75_line_2_1 = plot(fv_objem_fyzio(poloha_75),-fv_prutok_fyzio(poloha_75),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fef_25_75_text_2 = text(fv_objem_fyzio(poloha_75),-fv_prutok_fyzio(poloha_75)-0.4,'FEF 75', 'HorizontalAlignment','center');
    set(fef_25_75_line_1,'tag','fef_25_75_line_1');
    set(fef_25_75_line_1_1,'tag','fef_25_75_line_1_1');
    set(fef_25_75_text_1,'tag','fef_25_75_text_1');
    set(fef_25_75_line_2,'tag','fef_25_75_line_2');
    set(fef_25_75_line_2_1,'tag','fef_25_75_line_2_1');
    set(fef_25_75_text_2,'tag','fef_25_75_text_2');
    elseif get(handles.checkbox_graf_obstr,'Value')==1
    objem_25 = 0.25*fv_objem_obstr(end); % Hodnota 25% vydechnuteho FVC
    objem_75 = 0.75*fv_objem_obstr(end); % Hodnota 75% vydechnuteho FVC
    temp_25 = abs(fv_objem_obstr-objem_25); % Odecteni kazde hodnoty objemu od 25% hodnoty
    [~, poloha_25] = min(temp_25); % Poloha, kde je rozdil minimalni -> Pozice 25% vydechnuteho FVC
    temp_75 = abs(fv_objem_obstr-objem_75); % Odecteni kazde hodnoty objemu od 75% hodnoty
    [~, poloha_75] = min(temp_75); % Poloha, kde je rozdil minimalni -> Pozice 75% vydechnuteho FVC
    axes(handles.plot_fv_krivka)
    fef_25_75_line_1 = line([0 fv_objem_obstr(poloha_25)],[-fv_prutok_obstr(poloha_25) -fv_prutok_obstr(poloha_25)],'LineStyle','--','Color','black');
    hold on
    fef_25_75_line_1_1 = plot(fv_objem_obstr(poloha_25),-fv_prutok_obstr(poloha_25),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fef_25_75_text_1 = text(fv_objem_obstr(poloha_25),-fv_prutok_obstr(poloha_25)-0.4,'FEF 25', 'HorizontalAlignment','center');
    fef_25_75_line_2 = line([0 fv_objem_obstr(poloha_75)],[-fv_prutok_obstr(poloha_75) -fv_prutok_obstr(poloha_75)],'LineStyle','--','Color','black');
    fef_25_75_line_2_1 = plot(fv_objem_obstr(poloha_75),-fv_prutok_obstr(poloha_75),'Marker','o','Color','black','MarkerSize',7,'LineWidth',1.5);
    fef_25_75_text_2 = text(fv_objem_obstr(poloha_75),-fv_prutok_obstr(poloha_75)-0.4,'FEF 75', 'HorizontalAlignment','center');
    set(fef_25_75_line_1,'tag','fef_25_75_line_1');
    set(fef_25_75_line_1_1,'tag','fef_25_75_line_1_1');
    set(fef_25_75_text_1,'tag','fef_25_75_text_1');
    set(fef_25_75_line_2,'tag','fef_25_75_line_2');
    set(fef_25_75_line_2_1,'tag','fef_25_75_line_2_1');
    set(fef_25_75_text_2,'tag','fef_25_75_text_2');
    end
else
    delete(findobj('tag','fef_25_75_line_1'))
    delete(findobj('tag','fef_25_75_text_1'))
    delete(findobj('tag','fef_25_75_line_1_1'))
    delete(findobj('tag','fef_25_75_line_2'))
    delete(findobj('tag','fef_25_75_text_2'))
    delete(findobj('tag','fef_25_75_line_2_1'))
    delete(findobj('tag','fef_25_75_line_3'))
    delete(findobj('tag','fef_25_75_text_3'))
    delete(findobj('tag','fef_25_75_line_3_1'))
    delete(findobj('tag','fef_25_75_line_4'))
    delete(findobj('tag','fef_25_75_text_4'))
    delete(findobj('tag','fef_25_75_line_4_1'))
end
