SEMIA 3.0.1
(342,197 bytes)
//=========================================================================================================
//
// semia_stubs.cc
//
// F. Jager and R. Dorn 20 May 2002
// Last revised: 5 September 2002
//
// Callback and user functions of SEMIA (SEMI-Automatic viewer and annotation editor), Version 3.0.1
//
// -------------------------------------------------------------------------------
// SEMIA: SEMI-Automatic viewer and annotation editor
// SEMIA, Version 3.0.1: SEMI-Automatic viewer of waveforms, time series, and
// ST-segment annotations in the Long-Term ST Database
//
// Copyright (C) 2002 Franc Jager and Roman Dorn
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software
// Foundation; either version 2 of the License, or (at your option) any later
// version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along with
// this program; if not, write to the Free Software Foundation, Inc., 59 Temple
// Place - Suite 330, Boston, MA 02111-1307, USA.
//
// You may contact the author by e-mail (franc@manca.fri.uni-lj.si) or postal
// mail (Faculty of Computer and Information Science, Trzaska 25, 1000 Ljubljana,
// Slovenia). For updates to this software, please visit PhysioNet
// (http://www.physionet.org/).
// -------------------------------------------------------------------------------
//
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/X.h>
#include <X11/Xatom.h>
#include <sys/param.h>
#include <sys/types.h>
#include <xview/xview.h>
#include <xview/panel.h>
#define _OTHER_TEXTSW_FUNCTIONS
#include <xview/textsw.h>
#include <xview/xv_xrect.h>
#include <xview/frame.h>
#include <xview/notice.h>
#include "semia_ui.h"
//Work with WFDB library
#include <wfdb/wfdb.h>
#include <wfdb/ecgmap.h>
#include <wfdb/ecgcodes.h>
//How to plot time series
#define PLOT_ALL FALSE
//Length of one screen in samples if Fsamp is 250 samples/sec
//Lengths 21600000 - 24 hours
// 43200000 - 48 hours
//Length of fine buffers if Fsamp is 250 samples/sec (LEN_BUFF_F)
//Lengths 187200 (190000) - 26 hours
// 345600 (370000) - 48 hours
//Length of raw buffers if Fsamp is 250 samples/sec (LEN_BUFF_R)
//Lengths 46800 (47000) - 26 hours
// 86400 (90000) - 48 hours
#define LEN_BUFF_F 224000 // fine data buff length
#define LEN_BUFF_R 86400 // raw data buff length
//
#define STAMPL 200 // 200 units = 1000 uV
#define FSAMP 250 // 250 msec
#define auto_ampl_1 10.0 // 50 uV
#define BORDER_SEP_CLICK 120 // Samples at the bottom of lead window
#define ALL_ONE FALSE // true = copy lead0 > lead1 > lead2
#define LEN_BUFF_D 37626 // 5 min / 2 = 150 * 1000 msec = 150 * 1000 / (1000/FSAMP) + 125 (avr /2 ) + 1 ( center )
#define LEN_BUFF_D_A 251 // average window = 1000 msec
#define OR ||
void d_ini_cp_b(Panel_item, Event *);
void l_ini_cp1_b(Panel_item, Event *);
void k_ini_cp_b(Panel_item, Event *);
void l_ini_cp2_b(Panel_item, Event *);
void main_open_init(Panel_item, Event *);
void init_counts(Panel_item, Event *);
void init_diagdata(Panel_item, Event *);
void show_diagdata(Panel_item, Event *);
void show_counts(Panel_item, Event *);
void init_help(Panel_item, Event *);
void show_help(Panel_item, Event *);
//Global variables for drawing
Display *l_b_display, *l_b1_display, *l_b2_display, *d_b_display, *k_b_display, *my_display;
Window l_b_window, l_b1_window, l_b2_window, d_b_window, k_b_window, my_window;
GC gcLead0, gcLead1, gcLead2, gcdata, gckoeff, my_gc;
unsigned long background, foreground;
Colormap cmap;
XColor col, unused;
//Global data
int set_line_width=1;
int set_marker=1;
char set_color1[30]="green";
char set_color2[30]="blue";
char set_color3[30]="red";
char set_color4[30]="red";
char set_color5[30]="red";
char set_color6[30]="red";
//Other
char set_color7[30]="LightCyan1";
char set_color8[30]="yellow";
long click_ST80_0 = 0, click_STsb_0 = 0, click_ST80_f0 = 0;
long click_ST80_1 = 0, click_STsb_1 = 0, click_ST80_f1 = 0;
long click_ST80_2 = 0, click_STsb_2 = 0, click_ST80_f2 = 0;
Bool auto_save = FALSE;
int auto_save_counter = 0;
Bool fast0_center = FALSE;
Bool fast1_center = FALSE;
Bool fast2_center = FALSE;
Bool fast0_right = FALSE;
Bool fast1_right = FALSE;
Bool fast2_right = FALSE;
char message[60], message1[60], message2[60], message3[60];
char pr_buff[80];
//Input data variables
char inp_rec_name[80];
WFDB_Siginfo *siarray;
long nsig;
WFDB_Siginfo DB_s[WFDB_MAXSIG];
WFDB_Sample v_sample[3];
FILE *dataFileDescriptor = NULL;
long buff[5][15000];
//Save
FILE *file_save=NULL;
FILE *flinsave=NULL;
char save_name[20];
char save_name_lin[20];
Bool final_save = FALSE;
//Program status
Bool status_manual_mode=TRUE, status_unsubtracted=TRUE, status_consider_localref=TRUE;
Bool status_manual_mode1=TRUE, status_unsubtracted1=TRUE, status_consider_localref1=TRUE;
Bool status_manual_mode2=TRUE, status_unsubtracted2=TRUE, status_consider_localref2=TRUE;
//Diagram data
long time_scale_0=720, time_scale_1=720, time_scale_2=720; // 720 = 12 min
long time_scale_d=6; // 6 = 6sec
int data_scale=6; // 6 = 6 sec
long data_tick=160;
double data_grid_tick = 25.6; // 6 sec / 960 * 25.6 = 160 msec
long scale_time_tick=60; // 720 / 12 = 60
long diagram_time_begin_lead, diagram_time_end_lead;
long time_begin_lead, time_end_lead;
long ampl_0=100, ampl_1=100, ampl_2=100; // 100 = 100uV
long ampl_d=1000;
long auto_ampl_2[3];
float ampl_c=1.0;
long index_0, index_0_b, index_0_e;
long raw_last_index, fin_last_index;
long raw_display_begin, raw_display_end, fin_display_begin, fin_display_end;
Bool ovr0_l1=FALSE, ovr0_l2=FALSE;
Bool ovr1_l0=FALSE, ovr1_l2=FALSE;
Bool ovr2_l1=FALSE, ovr2_l0=FALSE;
Bool ovr0_app = FALSE, ovr1_app = FALSE, ovr2_app = FALSE;
Bool lead1_data=FALSE, lead2_data=FALSE;
Bool KL_coefficents=TRUE;
Bool ovr_coef=FALSE;
Bool allow_l0;
Bool allow_l1, allow_l2;
Bool x_lead =FALSE;
short Lead0_operation;
short Lead1_operation;
short Lead2_operation;
Bool change_atribute0=FALSE;
Bool change_atribute1=FALSE;
Bool change_atribute2=FALSE;
Bool how0=TRUE;
Bool how1=TRUE;
Bool how2=TRUE;
char ref_code[5];
int Data_lead=0;
Bool data_ovr_l0, data_ovr_l1, data_ovr_l2;
Bool data_ovrly_shift;
long data_mstime_index, reference_mstime_index;
long L_buff_M[6][LEN_BUFF_D], R_buff_M[6][LEN_BUFF_D],A_buff_M[6][LEN_BUFF_D_A];
long L_buff_R[6][LEN_BUFF_D], R_buff_R[6][LEN_BUFF_D],A_buff_R[6][LEN_BUFF_D_A];
Bool global_set;
Bool last_set_all;
int current_iso_m, current_j_m;
long current_nl, current_nr, current_mean_smp;
long ref_iso, ref_j, ref_dj;
long current_average_beat_time = 0;
long d_avrg_index = 0;
long current_average_window_index;
long current_average_window_time;
short data_ovrly=1;
Bool data_ovr_ref=FALSE;
Bool repeat_set =FALSE;
Bool repeat_set1=FALSE;
Bool repeat_set2=FALSE;
class def_click
{ public:
Bool first;
long x,y, time_index, raw, raw_l,raw_r, fine, fine_l, fine_r;
};
def_click click_l0, click_c0, click_r0;
def_click click_l1, click_c1, click_r1;
def_click click_l2, click_c2, click_r2;
def_click click_c;
class button_lead_status_def
{
public:
Bool Mark,Dmy, Auto, Subtr, Cmpt, OvrApp, OvrLds, GlR, SetLB, SetLE, DelLI, Isc, Rate_r, Cnd, AxS,Exm, Atr, Move, Del, DelA, ChAtr,ChAtrA, ConsLR, LcRef, Cancel, Rpt;
short Auto_s,Subtr_s,OvrApp_s,ConsLR_s;
void copy_button_status( button_lead_status_def source);
};
button_lead_status_def Lead0_buttons, Lead0_op_begin_status;
button_lead_status_def Lead1_buttons, Lead1_op_begin_status;
button_lead_status_def Lead2_buttons, Lead2_op_begin_status;
class data_fin_def
{
public:
long index;
int HR;
float l0_ST80,l0_ST20,l1_ST80,l1_ST20,l2_ST80,l2_ST20;
int STk1,STk2,STk3,STk4,STk5,
ST_f,
QRSk1,QRSk2,QRSk3,QRSk4,QRSk5,
QRS_f,
nPB, nPE, nISO, nQ, nJ, nTB, nTX, nTE;
float lin_v[3], sub_v[3];
void Init(void);
void Insert(data_fin_def value);
};
data_fin_def data_fin[LEN_BUFF_F];
data_fin_def data_raw[LEN_BUFF_R];
class lead_plot_button_status
{
public:
Bool HRate,HRRaw,STFine,STslFine,STslRaw,Episodes,HideHR,ISOJ,Mode9,Mode10,lead0,lead1,lead2,UnOvrly;
};
lead_plot_button_status lead0_plot_button_status;
lead_plot_button_status lead1_plot_button_status;
lead_plot_button_status lead2_plot_button_status;
class reference_def
{
public:
Bool set;
long raw_index, fine_index;
int code1, code2;
int lead, raw_HR, fine_HR;
int raw_ST80,raw_ST20, ST_sub, fine_ST80, fine_ST20, STd, ST80, STsl;
int nPB, nPE, nISO, nQ, nJ, nJ80, nTB, nTX, nTE, window, NL, NR, NS;
void copy_ref(reference_def source);
};
reference_def global_ref[3], act_ref_data[3], Marker[3], references[3][5000], loc_interval_b[3], loc_interval_e[3];
long references_index[3];
long reference_act[3]; // last active reference - set or ex
class ref_use_def
{
public:
Bool set, change;
long typ; // 1 - global, 2 - local
long index, lead;
};
ref_use_def act_reference[3];
void k_call_left(Xv_window, Event *, Notify_arg, Notify_event_type);
void k_call_center(Xv_window, Event *, Notify_arg, Notify_event_type);
void k_call_right(Xv_window, Event *, Notify_arg, Notify_event_type);
void d_call_left(Xv_window, Event *, Notify_arg, Notify_event_type);
void d_call_center(Xv_window, Event *, Notify_arg, Notify_event_type);
void d_call_right(Xv_window, Event *, Notify_arg, Notify_event_type);
void l_call_left(Xv_window, Event *, Notify_arg, Notify_event_type);
void l_call_center(Xv_window, Event *, Notify_arg, Notify_event_type);
void l_call_right(Xv_window, Event *, Notify_arg, Notify_event_type);
void l_call_left1(Xv_window, Event *, Notify_arg, Notify_event_type);
void l_call_center1(Xv_window, Event *, Notify_arg, Notify_event_type);
void l_call_right1(Xv_window, Event *, Notify_arg, Notify_event_type);
void l_call_left2(Xv_window, Event *, Notify_arg, Notify_event_type);
void l_call_center2(Xv_window, Event *, Notify_arg, Notify_event_type);
void l_call_right2(Xv_window, Event *, Notify_arg, Notify_event_type);
void l_ini_lcp_b(Panel_item, Event *);
void draw_grid_coeff(void);
void draw_ovrly_coeff(void);
void sub_op0_exec(void);
void sub_op1_exec(void);
void sub_op2_exec(void);
void insert_ref(int, reference_def, int, int);
void set_marker_l(int leadx);
void update_marker(int leadx,long cal);
void draw_grid_lead0(int leadx);
void show_data(int leadx, Bool xx_lead, Bool xx_kl);
void data_new_r_read(void);
void get_average_M(void);
void get_average_R(void);
void set_buttons_lead1_setGR(void);
void set_buttons_lead1(void);
void set_buttons_lead2_setGR(void);
void set_buttons_lead2(void);
void set_buttons_lead0(void);
//Global object definitions.
sem_0_m_bw_objects Sem_0_m_bw;
sem_0_k_bw_objects Sem_0_k_bw;
sem_0_o_pw_objects Sem_0_o_pw;
sem_0_q_pw_objects Sem_0_q_pw;
sem_0_w_pw_objects Sem_0_w_pw;
sem_0_d_bw_objects Sem_0_d_bw;
sem_0_l_bw_objects Sem_0_l_bw;
sem_0_l_bw1_objects Sem_0_l_bw1;
sem_0_l_bw2_objects Sem_0_l_bw2;
sem_0_d_pw_objects Sem_0_d_pw;
sem_0_c_pw_objects Sem_0_c_pw;
sem_0_h_pw_objects Sem_0_h_pw;
//User functions =========================================================================================
//void (*textsw_default_notifyx)(Textsw textsw, Attr_avlist attributes);
void myproc(Textsw textsw, Attr_avlist attributes)
{
int pass_on = FALSE;
Attr_avlist attrs;
for (attrs = attributes; *attrs; attrs = attr_next(attrs)) {
// switch ((Textsw_action)(*attrs)) {
// case TEXTSW_ACTION_TOOL_DESTROY:
ATTR_CONSUME(*attrs);
// break;
// case TEXTSW_ACTION_TOOL_QUIT:
// ATTR_CONSUME(*attrs);
// break;
// defaults:
pass_on = TRUE;
// break;
// }
}
if (pass_on) textsw_default_notify(textsw, attributes);
}
void reset_HR_lead0(int leadx)
{
switch (leadx) {
case 0:
lead0_plot_button_status.HRate=FALSE;
lead0_plot_button_status.HRRaw=FALSE;
lead0_plot_button_status.STFine=FALSE;
lead0_plot_button_status.STslFine=FALSE;
lead0_plot_button_status.STslRaw=FALSE;
lead0_plot_button_status.Episodes=FALSE;
lead0_plot_button_status.HideHR=FALSE;
lead0_plot_button_status.ISOJ=FALSE;
lead0_plot_button_status.Mode9=FALSE;
lead0_plot_button_status.Mode10=FALSE;
break;
case 1:
lead1_plot_button_status.HRate=FALSE;
lead1_plot_button_status.HRRaw=FALSE;
lead1_plot_button_status.STFine=FALSE;
lead1_plot_button_status.STslFine=FALSE;
lead1_plot_button_status.STslRaw=FALSE;
lead1_plot_button_status.Episodes=FALSE;
lead1_plot_button_status.HideHR=FALSE;
lead1_plot_button_status.ISOJ=FALSE;
lead1_plot_button_status.Mode9=FALSE;
lead1_plot_button_status.Mode10=FALSE;
break;
case 2:
lead2_plot_button_status.HRate=FALSE;
lead2_plot_button_status.HRRaw=FALSE;
lead2_plot_button_status.STFine=FALSE;
lead2_plot_button_status.STslFine=FALSE;
lead2_plot_button_status.STslRaw=FALSE;
lead2_plot_button_status.Episodes=FALSE;
lead2_plot_button_status.HideHR=FALSE;
lead2_plot_button_status.ISOJ=FALSE;
lead2_plot_button_status.Mode9=FALSE;
lead2_plot_button_status.Mode10=FALSE;
break;
} // end switch
}
void data_fin_def::Init(void)
{
index=0;
HR=0;
l0_ST80=0;l0_ST20=0;
l1_ST80=0;l1_ST20=0;
l2_ST80=0;l2_ST20=0;
STk1=0;STk2=0;STk3=0;STk4=0;STk5=0;
ST_f=0;
QRSk1=0;QRSk2=0;QRSk3=0;QRSk4=0;QRSk5=0;
QRS_f=0;
nPB=0; nPE=0; nISO=0; nQ=0; nJ=0; nTB=0; nTX=0; nTE=0;
lin_v[0]=0.0;lin_v[1]=0.0;lin_v[2]=0.0;
sub_v[0]=0.0; sub_v[1]=0.0;sub_v[2]=0.0;
} // data_fin_def::Init
void data_fin_def::Insert(data_fin_def value)
{
index=value.index;
HR=value.HR;
l0_ST80=value.l0_ST80;l0_ST20=value.l0_ST20;
l1_ST80=value.l1_ST80;l1_ST20=value.l1_ST20;
l2_ST80=value.l2_ST80;l2_ST20=value.l2_ST20;
STk1=value.STk1;STk2=value.STk2;STk3=value.STk3;STk4=value.STk4;STk5=value.STk5;
ST_f=value.ST_f;
QRSk1=value.QRSk1;QRSk2=value.QRSk2;QRSk3=value.QRSk3;QRSk4=value.QRSk4;QRSk5=value.QRSk5;
QRS_f=value.QRS_f;
nPB=value.nPB; nPE=value.nPE; nISO=value.nISO; nQ=value.nQ;
nJ=value.nJ; nTB=value.nTB; nTX=value.nTX; nTE=value.nTE;
} // data_fin_def::Insert
void reference_def::copy_ref(reference_def source)
{
set = source.set;
raw_index=source.raw_index;
fine_index=source.fine_index;
code1= source.code1;
code2 =source.code2;
lead=source.lead;
raw_HR=source.raw_HR; fine_HR=source.fine_HR;
raw_ST80=source.raw_ST80; raw_ST20 = source.raw_ST20;
fine_ST80 = source.fine_ST80; fine_ST20= source.fine_ST20;
STd = source.STd; STsl = source.STsl;
ST80=source.ST80;
ST_sub=source.ST_sub;
nPB = source.nPB; nPE = source.nPE;
nISO = source.nISO; nQ = source.nQ ; nJ = source.nJ; nJ80 = source.nJ80;
nTB = source.nTB; nTX = source.nTX; nTE = source.nTE;
window = source.window ; NL= source.NL; NR = source.NR; NS = source.NS;
} // reference_def::copy(reference_def source, dest)
void insert_ref(int leadx, reference_def source,int code1x, int code2x)
{
long i, j;
long ref_index;
references_index[leadx]++; ref_index=references_index[leadx];
for (i=0; (i < ref_index) && ( references[leadx][i].raw_index < source.raw_index ) ; i++);
if ( i < ref_index ) { for (j=ref_index; j > i; j--) references[leadx][j].copy_ref(references[leadx][j-1]);}
references[leadx][i].copy_ref(source);
references[leadx][i].code1=code1x;
references[leadx][i].code2=code2x;
reference_act[leadx]=i;
} // end insert_ref
void button_lead_status_def::copy_button_status( button_lead_status_def source)
{
Auto_s=source.Auto_s; Subtr_s=source.Subtr_s; OvrApp_s= source.OvrApp_s; ConsLR_s= source.ConsLR_s;
Mark = source.Mark; Dmy = source.Dmy; Auto = source.Auto; Subtr = source.Subtr; Cmpt = source.Cmpt;
OvrApp = source.OvrApp; OvrLds = source.OvrLds; GlR = source.GlR; SetLB = source.SetLB; SetLE = source.SetLE;
DelLI = source.DelLI; Isc = source.Isc; Rate_r = source.Rate_r; Cnd= source.Cnd;
AxS = source.AxS; Exm = source.Exm; Atr = source.Atr; Move = source.Move; Del = source.Del; DelA = source.DelA;
ChAtr = source.ChAtr; ChAtrA = source.ChAtrA; ConsLR = source.ConsLR; LcRef =source.LcRef;
Cancel=source.Cancel; Rpt= source.Rpt;
} // end copy_button_status
void warning_message(int lines)
{
xv_set(Sem_0_w_pw.w_m_message1, PANEL_LABEL_STRING,message1, NULL);
if ( lines < 2 ) strcpy(message2,"");
if ( lines < 3) strcpy(message3, "");
xv_set(Sem_0_w_pw.w_m_message2, PANEL_LABEL_STRING,message2, NULL);
xv_set(Sem_0_w_pw.w_m_message3, PANEL_LABEL_STRING,message3, NULL);
if (xv_get(Sem_0_w_pw.w_pw, FRAME_CLOSED))
xv_set(Sem_0_w_pw.w_pw, FRAME_CLOSED, FALSE, NULL);
xv_set(Sem_0_w_pw.w_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_w_pw.w_pw, XV_SHOW, TRUE, NULL);
} // end warnig_message
long Round(double value)
{
// Plain vanila round function
if(value >= 0.0)
return(long(value + 0.5));
else
return(long(value - 0.5));
}
long TimeToIndex(long time)
{
return((long)(time * double(FSAMP)));
}
void TimeToHoursMinSec(long time, long *hou, long *min, long *sec, long *hou_l)
{
long timeTemp;
timeTemp = time;
timeTemp = long(timeTemp / 60);
timeTemp = timeTemp * 60;
*sec = time - timeTemp;
time = long(time / 60);
timeTemp = time;
timeTemp = long(timeTemp / 60);
timeTemp = timeTemp * 60;
*min = time - timeTemp;
time = long(time / 60);
*hou_l = time;
timeTemp = time;
timeTemp = long(timeTemp / 24);
timeTemp = timeTemp * 24;
*hou = time - timeTemp;
}
long IndexToTime(long idx)
{
return(long(double(idx) / FSAMP));
}
long Coor_x_l0(long index)
{
long timex;
timex=long(double(index)*1000.0 / FSAMP);
return ((long)(160 + double(timex)*960.0 /(double) time_scale_0/1000.0));
} // coor_x_l0
long Coor_y_l0(float value)
{
return(60-Round(double(value)*20000.0/STAMPL/ampl_0)); // 20000.0 = 20 pix x 1000 uV
} // coor_y_l0
long Coor_y_l1(float value)
{
return(60-Round(double(value)*20000.0/STAMPL/ampl_1)); // 20000.0 = 20 pix x 1000 uV
} // coor_y_l1
long Coor_y_l2(float value)
{
return(60-Round(double(value)*20000.0/STAMPL/ampl_2)); // 20000.0 = 20 pix x 1000 uV
} // coor_y_l2
long Coor_x_data(long index)
{
long timex;
timex=long(double(index) * 1000.0 / FSAMP);
return ((long)(160 + double(timex)*960.0 /(double) data_scale / 1000.0));
} // coor_x_l0
long Coor_y_data_M(float value)
{
return(270-Round(double(value)*40000.0/STAMPL/ampl_d)); // 20000.0 = 20 pix x 1000 uV
} // coor_y_l0
void reset_global_reference(void) {
int l;
for (l=0; l < 3; l++ ) {
global_ref[l].set=FALSE;
global_ref[l].raw_index=0;
global_ref[l].fine_index=0;
global_ref[l].code1= 0;
global_ref[l].code2 =-1;
global_ref[l].lead=l;
global_ref[l].raw_HR=0; global_ref[l].fine_HR=0;
global_ref[l].raw_ST80=0; global_ref[l].raw_ST20 = 0;
global_ref[l].fine_ST80 = 0; global_ref[l].fine_ST20= 0;
global_ref[l].STd = 0; global_ref[l].STsl = 0; global_ref[l].ST_sub = 0;
global_ref[l].nPB = 0; global_ref[l].nPE = 0; global_ref[l].ST80 = 0;
global_ref[l].nISO = 0; global_ref[l].nQ =0 ; global_ref[l].nJ = 0; global_ref[l].nJ80 = 0;
global_ref[l].nTB = 0; global_ref[l].nTX = 0; global_ref[l].nTE = 0;
global_ref[l].window = 0; global_ref[l].NL=0; global_ref[l].NR = 0; global_ref[l].NS = 0;
act_ref_data[l].copy_ref(global_ref[l]);
references_index[l]=-1;
reference_act[l]=-1;
loc_interval_b[l].set=FALSE;
loc_interval_e[l].set=FALSE;
}
global_set=FALSE;
} // end reset_global_reference
float raw_st80(int leadx, long indexx)
{
float v;
switch (leadx) {
case 0: v=data_raw[indexx].l0_ST80; break;
case 1: v=data_raw[indexx].l1_ST80; break;
case 2: v=data_raw[indexx].l2_ST80; break;
} // end switch
return(v);
} // end raw_st80
Bool Is_code(int leadx, long indexx, int cod1, int cod2)
{
if ( cod1 == 0 && cod2 == 0 && global_ref[0].set && act_reference[leadx].change ) return(TRUE);
if ( indexx < 0 ) return(FALSE);
return((references[leadx][indexx].code1 == cod1) && (references[leadx][indexx].code2 == cod2));
} // end Is_code
void lin_function(int leadx)
{
long i, r_i, end_i;
float val_1, val_2;
double fk;
long tim_1, tim_2;
long first_r, last_r, next_r, GR_index,act_ind;
act_ind=reference_act[leadx];
end_i=references_index[leadx];
// temp insert GR
insert_ref(leadx,global_ref[leadx],0,0);
end_i=end_i+1;
GR_index=reference_act[leadx];
first_r=0; while (!Is_code(leadx,first_r,0,0)) first_r++;
last_r=end_i; while (!Is_code(leadx,last_r,0,0)) last_r--;
next_r=first_r;
val_1=raw_st80(leadx,references[leadx][first_r].raw_index);
val_2=raw_st80(leadx,references[leadx][first_r].raw_index);
tim_1=data_raw[references[leadx][first_r].raw_index].index;
tim_2=data_raw[references[leadx][first_r].raw_index].index;
fk=0.0;
i=0;
while ( i <= references[leadx][first_r].raw_index ){
data_raw[i].lin_v[leadx]=val_2;
data_raw[i].sub_v[leadx]=raw_st80(leadx,i)- val_2;
i++;
} // while befor first
while ( next_r < last_r ) {
val_1=val_2; tim_1=tim_2;
next_r++; while (!Is_code(leadx,next_r,0,0)) next_r++;
val_2=raw_st80(leadx,references[leadx][next_r].raw_index);
tim_2=data_raw[references[leadx][next_r].raw_index].index;
fk=(val_2 - val_1) / ( tim_2 - tim_1);
while ( i <= references[leadx][next_r].raw_index ){
data_raw[i].lin_v[leadx]=val_1 + fk * (data_raw[i].index - tim_1);
data_raw[i].sub_v[leadx]=raw_st80(leadx,i)- data_raw[i].lin_v[leadx];
i++;
} // while to next
} // while in ref interval
while ( i <= raw_last_index ){
data_raw[i].lin_v[leadx]=val_2;
data_raw[i].sub_v[leadx]=raw_st80(leadx,i)- val_2;
i++;
} // while after last set to end data
for (r_i=GR_index; r_i < end_i; r_i++) {
references[leadx][r_i].copy_ref( references[leadx][r_i+1]); }
reference_act[leadx]=act_ind;
references_index[leadx]--;
} // end lin_function
void get_display_code(int leadx, long indexx)
{
strcpy(ref_code,"??");
switch (references[leadx][indexx].code1){
case -1:if(Is_code(leadx,indexx,-1,1)) strcpy(ref_code,"BI");
if(Is_code(leadx,indexx,-1,7)) strcpy(ref_code,"BR");
if(Is_code(leadx,indexx,-1,11)) strcpy(ref_code,"BO");
break;
case -3:if(Is_code(leadx,indexx,-3,1)) strcpy(ref_code,"EI");
if(Is_code(leadx,indexx,-3,7)) strcpy(ref_code,"ER");
if(Is_code(leadx,indexx,-3,11)) strcpy(ref_code,"EO");
break;
case 0: if(Is_code(leadx,indexx,0,-1)) strcpy(ref_code,"GR");
if(Is_code(leadx,indexx,0,0)) strcpy(ref_code,"LR");
break;
case 2:if(Is_code(leadx,indexx,2,1)) strcpy(ref_code,"XI");
if(Is_code(leadx,indexx,2,7)) strcpy(ref_code,"XR");
if(Is_code(leadx,indexx,2,11)) strcpy(ref_code,"XO");
break;
case 4: if(Is_code(leadx,indexx,4,0)) strcpy(ref_code,"DY");
break;
case 10:if(Is_code(leadx,indexx,10,0)) strcpy(ref_code,"NO");
break;
case 11:if(Is_code(leadx,indexx,11,0)) strcpy(ref_code,"UR");
break;
case 12:if(Is_code(leadx,indexx,12,0)) strcpy(ref_code,"PR");
break;
case 13:if(Is_code(leadx,indexx,13,0)) strcpy(ref_code,"AX");
break;
case 14:if(Is_code(leadx,indexx,14,0)) strcpy(ref_code,"CC");
break;
case 15:if(Is_code(leadx,indexx,15,0)) strcpy(ref_code,"UB");
break;
case 16:if(Is_code(leadx,indexx,16,0)) strcpy(ref_code,"UE");
break;
case 17:if(Is_code(leadx,indexx,17,0)) strcpy(ref_code,"A6");
break;
case 18:if(Is_code(leadx,indexx,18,0)) strcpy(ref_code,"A7");
break;
} // end code1
// return(ref_code);
} // end get_display_code
Bool IS_free(int leadx, long indexx, int act_op)
{
long i;
Bool test= TRUE;
Bool test_l0=FALSE;
Bool test_l1=FALSE;
Bool test_l2=FALSE;
long code_0, code_1, code_2;
char d_c[2];
if ( global_ref[0].set ) {
if ( global_ref[0].raw_index == indexx ) {
strcpy(message1,"Attempt to overlap Global Reference !");
warning_message(1);
return(FALSE);
}
}
switch (leadx ){
case 0: test_l0=TRUE; if (act_op == 2) { test_l1=lead1_data; test_l2=lead2_data; }
break;
case 1: test_l1=TRUE; if (act_op == 2) { test_l0=TRUE; test_l2=lead2_data; }
break;
case 2: test_l2=TRUE; if (act_op == 2) { test_l0=TRUE; test_l1=TRUE; }
break;
}
if ( test_l0 ) {
test_l0=FALSE;
if ( references_index[0] > - 1) {
for (i=0; i <= references_index[0]; i++)
if ( indexx == references[0][i].raw_index ) { test=FALSE; test_l0=TRUE; code_0=i;}
}
} // test_l0
if ( test_l1 ) {
test_l1=FALSE;
if ( references_index[1] > - 1) {
for (i=0; i <= references_index[1]; i++)
if ( indexx == references[1][i].raw_index ) { test=FALSE; test_l1=TRUE; code_1=i;}
}
} // test_l1
if ( test_l2 ) {
test_l2=FALSE;
if ( references_index[2] > - 1) {
for (i=0; i <= references_index[2]; i++)
if ( indexx == references[2][i].raw_index ) { test=FALSE; test_l2=TRUE; code_2=i;}
}
} // test_l2
strcpy(message1,""); strcpy(message2,""); strcpy(message3,"");
if (test_l0 ) {
get_display_code(0,code_0);
sprintf(message1,"Lead 0: At %s:", mstimstr(data_raw[indexx].index));
sprintf(message2,"Attempt to overlap existing annotation (%s) !", ref_code);
}
if (test_l1 ) {
get_display_code(1,code_1);
sprintf(message1,"Lead 1: At %s:", mstimstr(data_raw[indexx].index));
sprintf(message2,"Attempt to overlap existing annotation (%s) !", ref_code);
}
if (test_l2 ) {
get_display_code(2,code_2);
sprintf(message1,"Lead 2: At %s:", mstimstr(data_raw[indexx].index));
sprintf(message2,"Attempt to overlap existing annotation (%s) !", ref_code);
}
if ( test_l0 OR test_l1 OR test_l2 ) warning_message(3);
return(test);
} // end IS_free
Bool Is_prop_mode(int leadx)
{
Bool test, t0, t1, t2;;
test= ( status_manual_mode && status_unsubtracted &&
status_manual_mode1 && status_unsubtracted1 &&
status_manual_mode2 && status_unsubtracted2);
t0= status_manual_mode && status_unsubtracted ;
t1= status_manual_mode1 && status_unsubtracted1;
t2= status_manual_mode2 && status_unsubtracted2;
switch (leadx){
case 0: test=test && Lead1_operation == 0 && Lead2_operation == 0;
t1= t1 && Lead1_operation == 0;
t2= t2 && Lead2_operation == 0;
break;
case 1: test=test && Lead0_operation == 0 && Lead2_operation == 0;
t0= t0 && Lead0_operation == 0;
t2= t2 && Lead2_operation == 0;
break;
case 2: test=test && Lead0_operation == 0 && Lead1_operation == 0;
t0= t0 && Lead0_operation == 0;
t1= t1 && Lead1_operation == 0;
break;
}
if ( ! test ) {
strcpy(message1,""); strcpy(message2,""); strcpy(message3,"");
if (! t0 ) sprintf(message1,"Incorrect mode in Lead 0 ! " );
if (! t1 ) sprintf(message2,"Incorrect mode in Lead 1 ! " );
if (! t2 ) sprintf(message3,"Incorrect mode in Lead 2 ! " );
warning_message(3);
}
return(test);
} // end Is_prop_mode
float avr_in_avrbeat(int i,int point, int mean_smp)
{
long iso_off_n;
float avr, avr1;
// i = lead
iso_off_n= 125-point;
switch (mean_smp) {
case 1: avr1 =A_buff_M[i][iso_off_n]; break;
case 3: avr1 = (A_buff_M[i][iso_off_n]+A_buff_M[i][iso_off_n-1]+A_buff_M[i][iso_off_n+1]) / 3.0; break;
case 5: avr1 = (A_buff_M[i][iso_off_n]+A_buff_M[i][iso_off_n-1]+A_buff_M[i][iso_off_n+1]+A_buff_M[i][iso_off_n-2]+A_buff_M[i][iso_off_n+2]) / 5.0; break;
case 7: avr1 = (A_buff_M[i][iso_off_n]+A_buff_M[i][iso_off_n-1]+A_buff_M[i][iso_off_n+1]+A_buff_M[i][iso_off_n-2]+A_buff_M[i][iso_off_n+2] + A_buff_M[i][iso_off_n-3]+A_buff_M[i][iso_off_n+3]) / 7.0; break;
}
avr =STAMPL * long(Round(1000.0* avr1/STAMPL))/1000.0;
return(avr);
} // end avr_in_avrbeat
float avr_in_avrbeat_r(int i,int point, int mean_smp)
{
long iso_off_n;
float avr, avr1;
iso_off_n= 125-point;
switch (mean_smp) {
case 1: avr1 =A_buff_R[i][iso_off_n]; break;
case 3: avr1 = (A_buff_R[i][iso_off_n]+A_buff_R[i][iso_off_n-1]+A_buff_R[i][iso_off_n+1]) / 3.0; break;
case 5: avr1 = (A_buff_R[i][iso_off_n]+A_buff_R[i][iso_off_n-1]+A_buff_R[i][iso_off_n+1]+A_buff_R[i][iso_off_n-2]+A_buff_R[i][iso_off_n+2]) / 5.0; break;
case 7: avr1 = (A_buff_R[i][iso_off_n]+A_buff_R[i][iso_off_n-1]+A_buff_R[i][iso_off_n+1]+A_buff_R[i][iso_off_n-2]+A_buff_R[i][iso_off_n+2] + A_buff_R[i][iso_off_n-3]+A_buff_R[i][iso_off_n+3]) / 7.0; break;
}
avr =STAMPL * long(Round(1000.0* avr1/STAMPL))/1000.0;
return(avr);
} // end avr_in_avrbeat_r
void plot_point_symbol(int s_type, long x, long y)
{
return;
} //end plot_point_symbol
int mk_uv(float x_v)
{
return((long)(Round(1000.0* x_v/STAMPL)));
}
void write_ref_data_l0(void)
{
long hours=0,hours_l=0, minutes=0, seconds=0;
int lead=0;
my_display=l_b_display; my_window=l_b_window; my_gc= gcLead0;
XAllocNamedColor(my_display, cmap,"white", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,54,130,92);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
if (Marker[lead].set ) {
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,55,130,12);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
sprintf(pr_buff, "RAW: %14s",mstimstr(data_raw[Marker[lead].raw_index].index));
XDrawString(my_display, my_window, my_gc, 2, 66, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]",data_raw[Marker[lead].raw_index].HR);
XDrawString(my_display, my_window, my_gc, 2, 78, pr_buff, strlen(pr_buff));
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,79,130,24);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
sprintf(pr_buff,"ST80:");
XDrawString(my_display, my_window, my_gc, 2, 90, pr_buff, strlen(pr_buff));
if ( reference_act[lead] == -1 && references_index[lead] == -1 ) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].l0_ST80),
act_ref_data[lead].raw_ST80); // **
} else if (reference_act[lead] > -1 ) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].l0_ST80),
references[lead][reference_act[lead]].raw_ST80 ); }
else
{ sprintf(pr_buff," %6d/%6s",mk_uv(data_raw[Marker[lead].raw_index].l0_ST80), " "); }
XDrawString(my_display, my_window, my_gc, 40, 90, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"STSb:");
XDrawString(my_display, my_window, my_gc, 2, 102, pr_buff, strlen(pr_buff));
if ( reference_act[lead] == -1 && references_index[lead] == -1) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].sub_v[lead]),
act_ref_data[lead].ST_sub );
} else if (reference_act[lead] > -1 ) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].sub_v[lead]),
references[lead][reference_act[lead]].ST_sub );
} else {
sprintf(pr_buff," %6d/%6s",mk_uv(data_raw[Marker[lead].raw_index].sub_v[lead]), " ");
}
XDrawString(my_display, my_window, my_gc, 40, 102, pr_buff, strlen(pr_buff));
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,109,130,12);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
sprintf(pr_buff, "FINE: %14s",mstimstr(data_fin[Marker[lead].fine_index].index));
XDrawString(my_display, my_window, my_gc, 2, 120, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]", data_fin[Marker[lead].fine_index].HR);
XDrawString(my_display, my_window, my_gc, 2, 132, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"ST80:");
XDrawString(my_display, my_window, my_gc, 2, 144, pr_buff, strlen(pr_buff));
if ( reference_act[lead] == -1 && references_index[lead] == -1) {
sprintf(pr_buff," %6d/%6d", mk_uv( data_fin[Marker[lead].fine_index].l0_ST80),
act_ref_data[lead].fine_ST80 );
} else if (reference_act[lead] > -1 ) {
sprintf(pr_buff," %6d/%6d", mk_uv( data_fin[Marker[lead].fine_index].l0_ST80),
references[lead][reference_act[lead]].fine_ST80 );
} else {
sprintf(pr_buff," %6d/%6s",mk_uv(data_fin[Marker[lead].fine_index].l0_ST80), " ");
}
XDrawString(my_display, my_window, my_gc, 40, 144, pr_buff, strlen(pr_buff));
}
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,13,130,24);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
if ( status_manual_mode ) XDrawString(my_display, my_window, my_gc, 2,24,"MANUAL MODE",11);
else XDrawString(my_display, my_window, my_gc, 2,24,"AUTOMATIC MODE",14);
if ( status_unsubtracted ) XDrawString(my_display, my_window, my_gc, 2,36,"UNSUBTRACTED",12);
else XDrawString(my_display, my_window, my_gc, 2,36,"SUBTRACTED",10);
if ( act_reference[0].set ){
if ( act_reference[0].typ == 1 ) sprintf(pr_buff, "ACTIVE: Global Ref");
if ( act_reference[0].typ == 2 ) sprintf(pr_buff, "ACTIVE: Local Ref");
}
else {
sprintf(pr_buff, "ACTIVE:");
}
XDrawString(my_display, my_window, my_gc, 2, 48, pr_buff, strlen(pr_buff));
}// write_ref_data_l0
void write_ref_data_l1(void)
{
long hours=0,hours_l=0, minutes=0, seconds=0;
int lead=1;
my_display=l_b1_display; my_window=l_b1_window; my_gc= gcLead1;
XAllocNamedColor(my_display, cmap,"white", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,54,130,92);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
if (Marker[lead].set ) {
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,55,130,12);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
sprintf(pr_buff, "RAW: %14s",mstimstr(data_raw[Marker[lead].raw_index].index));
XDrawString(my_display, my_window, my_gc, 2, 66, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]",data_raw[Marker[lead].raw_index].HR);
XDrawString(my_display, my_window, my_gc, 2, 78, pr_buff, strlen(pr_buff));
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,79,130,24);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
sprintf(pr_buff,"ST80:");
XDrawString(my_display, my_window, my_gc, 2, 90, pr_buff, strlen(pr_buff));
if ( reference_act[lead] == -1 && references_index[lead] == -1 ) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].l1_ST80),
act_ref_data[lead].raw_ST80); // **
} else if (reference_act[lead] > -1 ) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].l1_ST80),
references[lead][reference_act[lead]].raw_ST80 ); }
else
{ sprintf(pr_buff," %6d/%6s",mk_uv(data_raw[Marker[lead].raw_index].l1_ST80), " "); }
XDrawString(my_display, my_window, my_gc, 40, 90, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"STSb:");
XDrawString(my_display, my_window, my_gc, 2, 102, pr_buff, strlen(pr_buff));
if ( reference_act[lead] == -1 && references_index[lead] == -1) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].sub_v[lead]),
act_ref_data[lead].ST_sub ); // **
} else if (reference_act[lead] > -1 ) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].sub_v[lead]),
references[lead][reference_act[lead]].ST_sub );
} else {
sprintf(pr_buff," %6d/%6s",mk_uv(data_raw[Marker[lead].raw_index].sub_v[lead]), " ");
}
XDrawString(my_display, my_window, my_gc, 40, 102, pr_buff, strlen(pr_buff));
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,109,130,12);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
sprintf(pr_buff, "FINE: %14s",mstimstr(data_fin[Marker[lead].fine_index].index));
XDrawString(my_display, my_window, my_gc, 2, 120, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]", data_fin[Marker[lead].fine_index].HR);
XDrawString(my_display, my_window, my_gc, 2, 132, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"ST80:");
XDrawString(my_display, my_window, my_gc, 2, 144, pr_buff, strlen(pr_buff));
if ( reference_act[lead] == -1 && references_index[lead] == -1) {
sprintf(pr_buff," %6d/%6d", mk_uv( data_fin[Marker[lead].fine_index].l1_ST80),
act_ref_data[lead].fine_ST80 ); // **
} else if (reference_act[lead] > -1 ) {
sprintf(pr_buff," %6d/%6d", mk_uv( data_fin[Marker[lead].fine_index].l1_ST80),
references[lead][reference_act[lead]].fine_ST80 );
} else {
sprintf(pr_buff," %6d/%6s",mk_uv(data_fin[Marker[lead].fine_index].l1_ST80), " ");
}
XDrawString(my_display, my_window, my_gc, 40, 144, pr_buff, strlen(pr_buff));
}
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,13,130,24);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
if ( status_manual_mode1 ) XDrawString(my_display, my_window, my_gc, 2,24,"MANUAL MODE",11);
else XDrawString(my_display, my_window, my_gc, 2,24,"AUTOMATIC MODE",14);
if ( status_unsubtracted1 ) XDrawString(my_display, my_window, my_gc, 2,36,"UNSUBTRACTED",12);
else XDrawString(my_display, my_window, my_gc, 2,36,"SUBTRACTED",10);
if ( act_reference[1].set ){
if ( act_reference[1].typ == 1 ) sprintf(pr_buff, "ACTIVE: Global Ref");
if ( act_reference[1].typ == 2 ) sprintf(pr_buff, "ACTIVE: Local Ref");
}
else {
sprintf(pr_buff, "ACTIVE:");
}
XDrawString(my_display, my_window, my_gc, 2, 48, pr_buff, strlen(pr_buff));
}// write_ref_data_l1
void write_ref_data_l2(void)
{
long hours=0,hours_l=0, minutes=0, seconds=0;
int lead=2;
my_display=l_b2_display; my_window=l_b2_window; my_gc= gcLead2;
XAllocNamedColor(my_display, cmap,"white", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,54,130,92);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
if (Marker[lead].set ) {
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,55,130,12);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
sprintf(pr_buff, "RAW: %14s",mstimstr(data_raw[Marker[lead].raw_index].index));
XDrawString(my_display, my_window, my_gc, 2, 66, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]",data_raw[Marker[lead].raw_index].HR);
XDrawString(my_display, my_window, my_gc, 2, 78, pr_buff, strlen(pr_buff));
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,79,130,24);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
sprintf(pr_buff,"ST80:");
XDrawString(my_display, my_window, my_gc, 2, 90, pr_buff, strlen(pr_buff));
if ( reference_act[lead] == -1 && references_index[lead] == -1 ) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].l2_ST80),
act_ref_data[lead].raw_ST80); // **
} else if (reference_act[lead] > -1 ) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].l2_ST80),
references[lead][reference_act[lead]].raw_ST80 ); }
else
{ sprintf(pr_buff," %6d/%6s",mk_uv(data_raw[Marker[lead].raw_index].l2_ST80), " "); }
XDrawString(my_display, my_window, my_gc, 40, 90, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"STSb:");
XDrawString(my_display, my_window, my_gc, 2, 102, pr_buff, strlen(pr_buff));
if ( reference_act[lead] == -1 && references_index[lead] == -1) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].sub_v[lead]),
act_ref_data[lead].ST_sub ); // **
} else if (reference_act[lead] > -1 ) {
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[Marker[lead].raw_index].sub_v[lead]),
references[lead][reference_act[lead]].ST_sub );
} else {
sprintf(pr_buff," %6d/%6s",mk_uv(data_raw[Marker[lead].raw_index].sub_v[lead]), " ");
}
XDrawString(my_display, my_window, my_gc, 40, 102, pr_buff, strlen(pr_buff));
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,109,130,12);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
sprintf(pr_buff, "FINE: %14s",mstimstr(data_fin[Marker[lead].fine_index].index));
XDrawString(my_display, my_window, my_gc, 2, 120, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]", data_fin[Marker[lead].fine_index].HR);
XDrawString(my_display, my_window, my_gc, 2, 132, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"ST80:");
XDrawString(my_display, my_window, my_gc, 2, 144, pr_buff, strlen(pr_buff));
if ( reference_act[lead] == -1 && references_index[lead] == -1) {
sprintf(pr_buff," %6d/%6d", mk_uv( data_fin[Marker[lead].fine_index].l2_ST80),
act_ref_data[lead].fine_ST80 ); // **
} else if (reference_act[lead] > -1 ) {
sprintf(pr_buff," %6d/%6d", mk_uv( data_fin[Marker[lead].fine_index].l2_ST80),
references[lead][reference_act[lead]].fine_ST80 );
} else {
sprintf(pr_buff," %6d/%6s",mk_uv(data_fin[Marker[lead].fine_index].l2_ST80), " ");
}
XDrawString(my_display, my_window, my_gc, 40, 144, pr_buff, strlen(pr_buff));
}
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,13,130,24);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
if ( status_manual_mode2 ) XDrawString(my_display, my_window, my_gc, 2,24,"MANUAL MODE",11);
else XDrawString(my_display, my_window, my_gc, 2,24,"AUTOMATIC MODE",14);
if ( status_unsubtracted2 ) XDrawString(my_display, my_window, my_gc, 2,36,"UNSUBTRACTED",12);
else XDrawString(my_display, my_window, my_gc, 2,36,"SUBTRACTED",10);
if ( act_reference[2].set ){
if ( act_reference[2].typ == 1 ) sprintf(pr_buff, "ACTIVE: Global Ref");
if ( act_reference[2].typ == 2 ) sprintf(pr_buff, "ACTIVE: Local Ref");
}
else {
sprintf(pr_buff, "ACTIVE:");
}
XDrawString(my_display, my_window, my_gc, 2, 48, pr_buff, strlen(pr_buff));
}// write_ref_data_l2
void draw_lead0_A(void)
{
long i, begmisx, begmise, j, ischonbegx, ischonbege;
long x_0, x_1, x_x, y_0, y_1, y1_0, y1_1;
Bool act_loc;
// episodes
Bool pl_epi=FALSE, pl_epii=FALSE;
Bool epi_error=FALSE, epi_error_first=TRUE;
long ep_index=0;
int ep_status_i=0, ep_status_r=0, ep_status_o=0;
index_0_b=TimeToIndex(diagram_time_begin_lead);
index_0_e=TimeToIndex(diagram_time_begin_lead+time_scale_0);
index_0=index_0_b;
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
if ( ovr0_l1 ) {
XAllocNamedColor(my_display, cmap,set_color5, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
i=0;
while (data_raw[i].index < index_0_b) i++;
x_0=Coor_x_l0(data_raw[i].index-index_0_b); y_0=Coor_y_l0(data_raw[i].l1_ST80);
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b); y_1=Coor_y_l0(data_raw[i].l1_ST80);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
if ( ovr0_l2 ) {
XAllocNamedColor(my_display, cmap,set_color6, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
i=0;
while (data_raw[i].index < index_0_b) i++;
x_0=Coor_x_l0(data_raw[i].index-index_0_b); y_0=Coor_y_l0(data_raw[i].l2_ST80);
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b); y_1=Coor_y_l0(data_raw[i].l2_ST80);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
if ( ovr0_app ) {
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
i=0;
while (data_raw[i].index < index_0_b) i++;
x_0=Coor_x_l0(data_raw[i].index-index_0_b); y_0=Coor_y_l0(data_raw[i].lin_v[0]);
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b); y_1=Coor_y_l0(data_raw[i].lin_v[0]);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
index_0_b=TimeToIndex(diagram_time_begin_lead);
index_0_e=TimeToIndex(diagram_time_begin_lead+time_scale_0);
index_0=index_0_b;
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
i=0;
while (data_raw[i].index < index_0_b) i++;
raw_display_begin=i;
fin_display_begin=i;
x_0=Coor_x_l0(data_raw[i].index-index_0_b);
if (status_unsubtracted ) {y_0=Coor_y_l0(data_raw[i].l0_ST80);}
else {y_0=Coor_y_l0(data_raw[i].sub_v[0]);}
if (lead0_plot_button_status.HRRaw ) { y1_0=170-data_raw[i].HR/2;
XDrawString(my_display, my_window, my_gc, 2,161, "Heart Rate Raw [bpm]",20);}
if (lead0_plot_button_status.STslRaw ) { y1_0=60+Coor_y_l0(data_raw[i].l0_ST80-data_raw[i].l0_ST20);
XDrawString(my_display, my_window, my_gc, 2,161, "ST Slope Raw [uV]",17);}
if ((lead0_plot_button_status.Episodes ) && (references_index[0] >= 0)) {
XDrawString(my_display, my_window, my_gc, 2,161, "Episodes",8);}
begmisx = -1; begmise = -1; ischonbegx = -1; ischonbege = -1;
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ) {
if ((lead0_plot_button_status.Episodes ) && (references_index[0] >= 0)) {
while (( references[0][ep_index].raw_index <= i ) && ( ep_index <= references_index[0] )){
if (Is_code(0,ep_index,-1,1)){
if ( (ep_status_i == 0 ) && (ep_status_r == 0) && (ep_status_o == 0) ) { ep_status_i=1; pl_epi=TRUE; pl_epii=TRUE;}
else { epi_error = TRUE; pl_epi=FALSE; pl_epii=FALSE; } }
if (Is_code(0,ep_index,2,1)){
if (( ep_status_i == 1 ) && (ep_status_r == 0) && (ep_status_o == 0)) { ep_status_i=2; pl_epi=TRUE; pl_epii=TRUE;}
else { if (ep_status_i == 0) begmisx = i; ischonbegx = i; epi_error = TRUE; pl_epi=FALSE; pl_epii=FALSE;} }
if (Is_code(0,ep_index,-3,1)){
if (( ep_status_i == 2 ) && (ep_status_r == 0) && (ep_status_o == 0)) { ep_status_i=0; pl_epi=FALSE; pl_epii=FALSE;}
else { if (ep_status_i == 0) begmise = i; ischonbege = i; epi_error = TRUE; pl_epi=FALSE; pl_epii=FALSE;} }
if (Is_code(0,ep_index,-1,7)){
if (( ep_status_r == 0 ) && (ep_status_i == 0) && (ep_status_o == 0)) { ep_status_r=1; pl_epi=TRUE;}
else { epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(0,ep_index,2,7)){
if (( ep_status_r == 1 ) && (ep_status_i == 0) && (ep_status_o == 0)) { ep_status_r=2; pl_epi=TRUE;}
else { if (ep_status_r == 0) begmisx = i; epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(0,ep_index,-3,7)){
if (( ep_status_r == 2 ) && (ep_status_i == 0) && (ep_status_o == 0)) { ep_status_r=0; pl_epi=FALSE;}
else { if (ep_status_r == 0) begmise = i; epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(0,ep_index,-1,11)){
if (( ep_status_o == 0 ) && (ep_status_r == 0) && (ep_status_i == 0)) { ep_status_o=1; pl_epi=TRUE;}
else { epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(0,ep_index,2,11)){
if (( ep_status_o == 1 ) && (ep_status_r == 0) && (ep_status_i == 0)) { ep_status_o=2; pl_epi=TRUE;}
else { if (ep_status_o == 0) begmisx = i; epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(0,ep_index,-3,11)){
if (( ep_status_o == 2 ) && (ep_status_r == 0) && (ep_status_i == 0)) { ep_status_o=0; pl_epi=FALSE;}
else { if (ep_status_o == 0) begmise = i; epi_error = TRUE; pl_epi=FALSE; } }
if ( epi_error) sprintf(message2, "Time: %14s",mstimstr(data_raw[references[0][ep_index].raw_index].index));
ep_index++;
if ((ep_index > references_index[0] ) && ((ep_status_i != 0) || (ep_status_r != 0) || (ep_status_o != 0)) ) {
epi_error=TRUE;
sprintf(message2, "Time: %14s",mstimstr(data_raw[references[0][references_index[0]].raw_index].index)); }
if ( epi_error && epi_error_first ) {
strcpy(message1,"Lead 0: Inconsistent episode !");
//
// warning_message(2);
//
epi_error=FALSE; ep_status_i=0; ep_status_r=0; ep_status_o=0; epi_error_first=FALSE; }
}
if (pl_epi) {
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,116, x_0,120);
// XDrawLine(my_display, my_window, my_gc, x_0,146, x_0,150);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
// pl_epi=ep_status != 0;
}
// if (pl_epii) {
// XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
// XDrawLine(my_display, my_window, my_gc, x_0,136, x_0,140);
// XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
// // pl_epi=ep_status != 0;
// }
} // end episodes
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b);
if (status_unsubtracted ) {y_1=Coor_y_l0(data_raw[i].l0_ST80);}
else {y_1=Coor_y_l0(data_raw[i].sub_v[0]);}
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,156, x_0,160);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
if (lead0_plot_button_status.HRRaw ){
y1_1=170-data_raw[i].HR/2;
XDrawLine(my_display, my_window, my_gc, x_0,y1_0, x_1,y1_1);
y1_0=y1_1;
}
if (lead0_plot_button_status.STslRaw ){
y1_1=60+Coor_y_l0(data_raw[i].l0_ST80-data_raw[i].l0_ST20);
XDrawLine(my_display, my_window, my_gc, x_0,y1_0, x_1,y1_1);
y1_0=y1_1;
}
x_0=x_1; y_0=y_1;
}
} // end while
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,156, x_0,160);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
if (begmisx != -1 && begmise != -1) {
j=begmise; begmisx = begmise = -1;
x_x=Coor_x_l0(data_raw[j].index-index_0_b);
while ( (data_raw[j].index >= index_0_b ) && ( j >= 0) ) {
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_x,116, x_x,120);
// XDrawLine(my_display, my_window, my_gc, x_x,146, x_x,150);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
j--;
x_x=Coor_x_l0(data_raw[j].index-index_0_b);
}
}
// if (ischonbegx != -1 && ischonbege != -1) {
// j=ischonbegx; ischonbegx = ischonbege = -1;
// x_x=Coor_x_l0(data_raw[j].index-index_0_b);
// while ( (data_raw[j].index >= index_0_b ) && ( j >= 0) ) {
// XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
// XDrawLine(my_display, my_window, my_gc, x_x,136, x_x,140);
// XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
// j--;
// x_x=Coor_x_l0(data_raw[j].index-index_0_b);
// }
// }
raw_display_end=i-1;
fin_display_end=raw_display_end;
while ( (data_fin[fin_display_end].index < index_0_e) && ( fin_display_end < fin_last_index) ) fin_display_end++;
fin_display_end=fin_display_end-1;
i=0;
while (data_fin[i].index < index_0_b) i++;
fin_display_begin=i;
if (lead0_plot_button_status.HRate OR lead0_plot_button_status.STFine OR lead0_plot_button_status.STslFine OR lead0_plot_button_status.ISOJ ){
x_0=Coor_x_l0(data_fin[i].index-index_0_b);
if (lead0_plot_button_status.HRate ) { y_0=170-data_fin[i].HR/2; XDrawString(my_display, my_window, my_gc, 2,161, "Heart Rate [bpm]",16);}
if (lead0_plot_button_status.STFine ) { y_0=60+Coor_y_l0(data_fin[i].l0_ST80);
XDrawString(my_display, my_window, my_gc, 2,161, "ST Fine [uV]",12);}
if (lead0_plot_button_status.STslFine ) { y_0=60+Coor_y_l0(data_fin[i].l0_ST80-data_fin[i].l0_ST20);
XDrawString(my_display, my_window, my_gc, 2,161, "ST Slope Fine [uV]",18);}
if (lead0_plot_button_status.ISOJ ) { y_0=(long)(160-1000.0*(data_fin[i].nISO +data_fin[i].nJ)/FSAMP/3);
XDrawString(my_display, my_window, my_gc, 2,161, "ISO - J [ms]",12);}
while ( (data_fin[i].index < index_0_e) && ( i < fin_last_index) ) {
i++;
x_1=Coor_x_l0(data_fin[i].index-index_0_b);
if (lead0_plot_button_status.HRate ) y_1=170-data_fin[i].HR/2;
if (lead0_plot_button_status.STFine ) y_1=60+Coor_y_l0(data_fin[i].l0_ST80);
if (lead0_plot_button_status.STslFine ) y_1=60+Coor_y_l0(data_fin[i].l0_ST80-data_fin[i].l0_ST20);
if (lead0_plot_button_status.ISOJ ) y_1=(long)(160-1000.0*(data_fin[i].nISO +data_fin[i].nJ)/FSAMP/3);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,160, x_0,163);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
x_0=x_1; y_0=y_1;
}
} // end while
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,160, x_0,163);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
fin_display_end=i-1;
} // if hrate
if ( references_index[0] >= 0 ){
for (i=0; i <= references_index[0]; i++){
if ( (data_raw[references[0][i].raw_index].index >= index_0_b) && (data_raw[references[0][i].raw_index].index <= index_0_e) ) {
act_loc=FALSE;
if ( Is_code(0,i,0,0) ){
act_loc= act_reference[0].set && ( act_reference[0].typ == 2 ) && (act_reference[0].index == i);
if (( i == reference_act[0] ) OR act_loc ) {
XAllocNamedColor(my_display, cmap,set_color1, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
x_0=Coor_x_l0(data_raw[references[0][i].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 10 ,10, "LR",2);
if (( i == reference_act[0] ) OR act_loc ) {
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
}
else // other ref
{
if ( i == reference_act[0] ) {
XAllocNamedColor(my_display, cmap,set_color2, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
x_0=Coor_x_l0(data_raw[references[0][i].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
get_display_code(0,i);
XDrawString(my_display, my_window, my_gc, x_0 - 10 ,10, ref_code,2);
if ( i == reference_act[0] ) {
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
}
}
} // end for
} // plot ref.
if ( loc_interval_b[0].set && (data_raw[loc_interval_b[0].raw_index].index >= index_0_b) && (data_raw[loc_interval_b[0].raw_index].index <= index_0_e) ) {
x_0=Coor_x_l0(data_raw[loc_interval_b[0].raw_index].index-index_0_b);
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 9 ,20, "B",1);
}
if ( loc_interval_e[0].set && (data_raw[loc_interval_e[0].raw_index].index >= index_0_b) && (data_raw[loc_interval_e[0].raw_index].index <= index_0_e) ) {
x_0=Coor_x_l0(data_raw[loc_interval_e[0].raw_index].index-index_0_b);
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 9 ,20, "E",1);
}
if ( global_set && (data_raw[global_ref[0].raw_index].index >= index_0_b) && (data_raw[global_ref[0].raw_index].index <= index_0_e) ) {
XAllocNamedColor(my_display, cmap,set_color1, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
x_0=Coor_x_l0(data_raw[global_ref[0].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 10 ,10, "GR",2);
}
if ( Marker[0].set && (data_raw[Marker[0].raw_index].index >= index_0_b) && (data_raw[Marker[0].raw_index].index <= index_0_e) ) {
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
x_0=Coor_x_l0(data_raw[Marker[0].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 11 ,20, "M",1);
x_1=Coor_x_l0(data_fin[Marker[0].fine_index].index-index_0_b);
if ( x_1 == x_0) x_1++;
XDrawLine(my_display, my_window, my_gc, x_1,80, x_1,160);
} // end marker
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
} // end draw_lead0_A(void)
void draw_lead1_A(void)
{
long i, begmisx, begmise, j, ischonbegx, ischonbege;
long x_0, x_1, x_x, y_0, y_1, y1_0,y1_1;
Bool act_loc;
Bool pl_epi=FALSE, pl_epii=FALSE;
Bool epi_error=FALSE, epi_error_first=TRUE;
long ep_index=0;
int ep_status_i=0, ep_status_r=0, ep_status_o=0;
index_0_b=TimeToIndex(diagram_time_begin_lead);
index_0_e=TimeToIndex(diagram_time_begin_lead+time_scale_0);
index_0=index_0_b;
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
if ( ovr1_l0 ) {
XAllocNamedColor(my_display, cmap,set_color4, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
i=0;
while (data_raw[i].index < index_0_b) i++;
x_0=Coor_x_l0(data_raw[i].index-index_0_b); y_0=Coor_y_l1(data_raw[i].l0_ST80);
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b); y_1=Coor_y_l1(data_raw[i].l0_ST80);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
if ( ovr1_l2 ) {
XAllocNamedColor(my_display, cmap,set_color6, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
i=0;
while (data_raw[i].index < index_0_b) i++;
x_0=Coor_x_l0(data_raw[i].index-index_0_b); y_0=Coor_y_l1(data_raw[i].l2_ST80);
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b); y_1=Coor_y_l1(data_raw[i].l2_ST80);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
if ( ovr1_app ) {
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
i=0;
while (data_raw[i].index < index_0_b) i++;
x_0=Coor_x_l0(data_raw[i].index-index_0_b); y_0=Coor_y_l1(data_raw[i].lin_v[1]);
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b); y_1=Coor_y_l1(data_raw[i].lin_v[1]);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
i=0;
while (data_raw[i].index < index_0_b) i++;
raw_display_begin=i;
x_0=Coor_x_l0(data_raw[i].index-index_0_b);
if (status_unsubtracted1 ) {y_0=Coor_y_l1(data_raw[i].l1_ST80);}
else {y_0=Coor_y_l1(data_raw[i].sub_v[1]);}
if (lead1_plot_button_status.HRRaw ) { y1_0=170-data_raw[i].HR/2;
XDrawString(my_display, my_window, my_gc, 2,161, "Heart Rate Raw [bpm]",20);}
if (lead1_plot_button_status.STslRaw ) { y1_0=60+Coor_y_l1(data_raw[i].l1_ST80-data_raw[i].l1_ST20);
XDrawString(my_display, my_window, my_gc, 2,161, "ST Slope Raw [uV]",17);}
if ((lead1_plot_button_status.Episodes ) && (references_index[1] >= 0)) {
XDrawString(my_display, my_window, my_gc, 2,161, "Episodes",8);}
begmisx = -1; begmise = -1; ischonbegx = -1; ischonbege = -1;
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
if ((lead1_plot_button_status.Episodes ) && (references_index[1] >= 0)) {
while (( references[1][ep_index].raw_index <= i ) && ( ep_index <= references_index[1] )){
if (Is_code(1,ep_index,-1,1)){
if ( (ep_status_i == 0 ) && (ep_status_r == 0) && (ep_status_o == 0) ) { ep_status_i=1; pl_epi=TRUE; pl_epii=TRUE;}
else { epi_error = TRUE; pl_epi=FALSE; pl_epii=FALSE; } }
if (Is_code(1,ep_index,2,1)){
if (( ep_status_i == 1 ) && (ep_status_r == 0) && (ep_status_o == 0)) { ep_status_i=2; pl_epi=TRUE; pl_epii=TRUE;}
else { if (ep_status_i == 0) begmisx = i; ischonbegx = i; epi_error = TRUE; pl_epi=FALSE; pl_epii=FALSE;} }
if (Is_code(1,ep_index,-3,1)){
if (( ep_status_i == 2 ) && (ep_status_r == 0) && (ep_status_o == 0)) { ep_status_i=0; pl_epi=FALSE; pl_epii=FALSE;}
else { if (ep_status_i == 0) begmise = i; ischonbege = i; epi_error = TRUE; pl_epi=FALSE; pl_epii=FALSE;} }
if (Is_code(1,ep_index,-1,7)){
if (( ep_status_r == 0 ) && (ep_status_i == 0) && (ep_status_o == 0)) { ep_status_r=1; pl_epi=TRUE;}
else { epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(1,ep_index,2,7)){
if (( ep_status_r == 1 ) && (ep_status_i == 0) && (ep_status_o == 0)) { ep_status_r=2; pl_epi=TRUE;}
else { if (ep_status_r == 0) begmisx = i; epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(1,ep_index,-3,7)){
if (( ep_status_r == 2 ) && (ep_status_i == 0) && (ep_status_o == 0)) { ep_status_r=0; pl_epi=FALSE;}
else { if (ep_status_r == 0) begmise = i; epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(1,ep_index,-1,11)){
if (( ep_status_o == 0 ) && (ep_status_r == 0) && (ep_status_i == 0)) { ep_status_o=1; pl_epi=TRUE;}
else { epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(1,ep_index,2,11)){
if (( ep_status_o == 1 ) && (ep_status_r == 0) && (ep_status_i == 0)) { ep_status_o=2; pl_epi=TRUE;}
else { if (ep_status_o == 0) begmisx = i; epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(1,ep_index,-3,11)){
if (( ep_status_o == 2 ) && (ep_status_r == 0) && (ep_status_i == 0)) { ep_status_o=0; pl_epi=FALSE;}
else { if (ep_status_o == 0) begmise = i; epi_error = TRUE; pl_epi=FALSE; } }
if ( epi_error) sprintf(message2, "Time: %14s",mstimstr(data_raw[references[1][ep_index].raw_index].index));
ep_index++;
if ((ep_index > references_index[1] ) && ((ep_status_i != 0) || (ep_status_r != 0) || (ep_status_o != 0)) ) {
epi_error=TRUE;
sprintf(message2, "Time: %14s",mstimstr(data_raw[references[1][references_index[1]].raw_index].index));
}
if ( epi_error && epi_error_first ) {
strcpy(message1,"Lead 1: Inconsistent episode !");
//
// warning_message(2);
//
epi_error=FALSE; ep_status_i=0; ep_status_r=0; ep_status_o=0; epi_error_first=FALSE; }
}
if (pl_epi) {
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,116, x_0,120);
// XDrawLine(my_display, my_window, my_gc, x_0,146, x_0,150);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
// pl_epi=ep_status != 0;
}
// if (pl_epii) {
// XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
// XDrawLine(my_display, my_window, my_gc, x_0,136, x_0,140);
// XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
// // pl_epi=ep_status != 0;
// }
} // end episodes
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b);
if (status_unsubtracted1) {y_1=Coor_y_l1(data_raw[i].l1_ST80);}
else {y_1=Coor_y_l1(data_raw[i].sub_v[1]);}
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,156, x_0,160);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
if (lead1_plot_button_status.HRRaw ){
y1_1=170-data_raw[i].HR/2;
XDrawLine(my_display, my_window, my_gc, x_0,y1_0, x_1,y1_1);
y1_0=y1_1;
}
if (lead1_plot_button_status.STslRaw ){
y1_1=60+Coor_y_l1(data_raw[i].l1_ST80-data_raw[i].l1_ST20);
XDrawLine(my_display, my_window, my_gc, x_0,y1_0, x_1,y1_1);
y1_0=y1_1;
}
x_0=x_1; y_0=y_1;
}
} // end while
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,156, x_0,160);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
if (begmisx != -1 && begmise != -1) {
j=begmise; begmisx = begmise = -1;
x_x=Coor_x_l0(data_raw[j].index-index_0_b);
while ( (data_raw[j].index >= index_0_b ) && ( j >= 0) ) {
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_x,116, x_x,120);
// XDrawLine(my_display, my_window, my_gc, x_x,146, x_x,150);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
j--;
x_x=Coor_x_l0(data_raw[j].index-index_0_b);
}
}
// if (ischonbegx != -1 && ischonbege != -1) {
// j=ischonbegx; ischonbegx = ischonbege = -1;
// x_x=Coor_x_l0(data_raw[j].index-index_0_b);
// while ( (data_raw[j].index >= index_0_b ) && ( j >= 0) ) {
// XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
// XDrawLine(my_display, my_window, my_gc, x_x,136, x_x,140);
// XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
// j--;
// x_x=Coor_x_l0(data_raw[j].index-index_0_b);
// }
// }
raw_display_end=i-1;
fin_display_end=raw_display_end;
while ( (data_fin[fin_display_end].index < index_0_e) && ( fin_display_end < fin_last_index) ) fin_display_end++;
fin_display_end=fin_display_end-1;
i=0;
while (data_fin[i].index < index_0_b) i++;
fin_display_begin=i;
if (lead1_plot_button_status.HRate OR lead1_plot_button_status.STFine OR lead1_plot_button_status.STslFine OR lead1_plot_button_status.ISOJ ){
x_0=Coor_x_l0(data_fin[i].index-index_0_b);
if (lead1_plot_button_status.HRate ) { y_0=170-data_fin[i].HR/2; XDrawString(my_display, my_window, my_gc, 2,161, "Heart Rate [bpm]",16);}
if (lead1_plot_button_status.STFine ) { y_0=60+Coor_y_l1(data_fin[i].l1_ST80);
XDrawString(my_display, my_window, my_gc, 2,161, "ST Fine [uV]",12);}
if (lead1_plot_button_status.STslFine ) { y_0=60+Coor_y_l1(data_fin[i].l1_ST80-data_fin[i].l1_ST20);
XDrawString(my_display, my_window, my_gc, 2,161, "ST Slope Fine [uV]",18);}
if (lead1_plot_button_status.ISOJ ) { y_0=(long)(160-1000.0*(data_fin[i].nISO +data_fin[i].nJ)/FSAMP/3);
XDrawString(my_display, my_window, my_gc, 2,161, "ISO - J [ms]",12);}
while ( (data_fin[i].index < index_0_e) && ( i < fin_last_index) ) {
i++;
x_1=Coor_x_l0(data_fin[i].index-index_0_b);
if (lead1_plot_button_status.HRate ) y_1=170-data_fin[i].HR/2;
if (lead1_plot_button_status.STFine ) y_1=60+Coor_y_l1(data_fin[i].l1_ST80);
if (lead1_plot_button_status.STslFine ) y_1=60+Coor_y_l1(data_fin[i].l1_ST80-data_fin[i].l1_ST20);
if (lead1_plot_button_status.ISOJ ) y_1=(long)(160-1000.0*(data_fin[i].nISO +data_fin[i].nJ)/FSAMP/3);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,160, x_0,163);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
x_0=x_1; y_0=y_1;
}
} // end while
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,160, x_0,163);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
fin_display_end=i-1;
} // if hrate
if ( references_index[1] >= 0 ){
for (i=0; i <= references_index[1]; i++){
if ( (data_raw[references[1][i].raw_index].index >= index_0_b) && (data_raw[references[1][i].raw_index].index <= index_0_e) ) {
act_loc=FALSE;
if ( Is_code(1,i,0,0) ){
act_loc= act_reference[1].set && ( act_reference[1].typ == 2 ) && (act_reference[1].index == i);
if (( i == reference_act[1] ) OR act_loc ) {
XAllocNamedColor(my_display, cmap,set_color1, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
x_0=Coor_x_l0(data_raw[references[1][i].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 10 ,10, "LR",2);
if (( i == reference_act[1] ) OR act_loc ) {
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
}
else // other ref
{
if ( i == reference_act[1] ) {
XAllocNamedColor(my_display, cmap,set_color2, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
x_0=Coor_x_l0(data_raw[references[1][i].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
get_display_code(1,i);
XDrawString(my_display, my_window, my_gc, x_0 - 10 ,10, ref_code,2);
if ( i == reference_act[1] ) {
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
}
}
} // end for
} // plot ref.
if ( loc_interval_b[1].set && (data_raw[loc_interval_b[1].raw_index].index >= index_0_b) && (data_raw[loc_interval_b[1].raw_index].index <= index_0_e) ) {
x_0=Coor_x_l0(data_raw[loc_interval_b[1].raw_index].index-index_0_b);
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 9 ,20, "B",1);
}
if ( loc_interval_e[1].set && (data_raw[loc_interval_e[1].raw_index].index >= index_0_b) && (data_raw[loc_interval_e[1].raw_index].index <= index_0_e) ) {
x_0=Coor_x_l0(data_raw[loc_interval_e[1].raw_index].index-index_0_b);
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 9 ,20, "E",1);
}
if ( global_set && (data_raw[global_ref[1].raw_index].index >= index_0_b) && (data_raw[global_ref[1].raw_index].index <= index_0_e) ) {
XAllocNamedColor(my_display, cmap,set_color1, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
x_0=Coor_x_l0(data_raw[global_ref[1].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 10 ,10, "GR",2);
}
if ( Marker[1].set && (data_raw[Marker[1].raw_index].index >= index_0_b) && (data_raw[Marker[1].raw_index].index <= index_0_e) ) {
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
x_0=Coor_x_l0(data_raw[Marker[1].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 11 ,20, "M",1);
x_1=Coor_x_l0(data_fin[Marker[1].fine_index].index-index_0_b);
if ( x_1 == x_0) x_1++;
XDrawLine(my_display, my_window, my_gc, x_1,80, x_1,160);
} // end marker
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
} // end draw_lead1_A(void)
void draw_lead2_A(void)
{
long i, begmisx, begmise, j, ischonbegx, ischonbege;
long x_0, x_1, x_x, y_0, y_1, y1_0,y1_1;
Bool act_loc;
Bool pl_epi=FALSE, pl_epii=FALSE;
Bool epi_error=FALSE, epi_error_first=TRUE;
long ep_index=0;
int ep_status_i=0, ep_status_r=0, ep_status_o=0;
index_0_b=TimeToIndex(diagram_time_begin_lead);
index_0_e=TimeToIndex(diagram_time_begin_lead+time_scale_0);
index_0=index_0_b;
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
if ( ovr2_l0 ) {
XAllocNamedColor(my_display, cmap,set_color4, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
i=0;
while (data_raw[i].index < index_0_b) i++;
x_0=Coor_x_l0(data_raw[i].index-index_0_b); y_0=Coor_y_l2(data_raw[i].l0_ST80);
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b); y_1=Coor_y_l2(data_raw[i].l0_ST80);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
if ( ovr2_l1 ) {
XAllocNamedColor(my_display, cmap,set_color5, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
i=0;
while (data_raw[i].index < index_0_b) i++;
x_0=Coor_x_l0(data_raw[i].index-index_0_b); y_0=Coor_y_l2(data_raw[i].l1_ST80);
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b); y_1=Coor_y_l2(data_raw[i].l1_ST80);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
if ( ovr2_app ) {
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
i=0;
while (data_raw[i].index < index_0_b) i++;
x_0=Coor_x_l0(data_raw[i].index-index_0_b); y_0=Coor_y_l2(data_raw[i].lin_v[2]);
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b); y_1=Coor_y_l2(data_raw[i].lin_v[2]);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
i=0;
while (data_raw[i].index < index_0_b) i++;
raw_display_begin=i;
x_0=Coor_x_l0(data_raw[i].index-index_0_b);
if (status_unsubtracted2 ) {y_0=Coor_y_l2(data_raw[i].l2_ST80);}
else {y_0=Coor_y_l2(data_raw[i].sub_v[2]);}
if (lead2_plot_button_status.HRRaw ) { y1_0=170-data_raw[i].HR/2;
XDrawString(my_display, my_window, my_gc, 2,161, "Heart Rate Raw [bpm]",20);}
if (lead2_plot_button_status.STslRaw ) { y1_0=60+Coor_y_l2(data_raw[i].l2_ST80-data_raw[i].l2_ST20);
XDrawString(my_display, my_window, my_gc, 2,161, "ST Slope Raw [uV]",17);}
if ((lead2_plot_button_status.Episodes ) && (references_index[2] >= 0)) {
XDrawString(my_display, my_window, my_gc, 2,161, "Episodes",8);}
begmisx = -1; begmise = -1; ischonbegx = -1; ischonbege = -1;
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
if ((lead2_plot_button_status.Episodes ) && (references_index[2] >= 0)) {
while (( references[2][ep_index].raw_index <= i ) && ( ep_index <= references_index[2] )){
if (Is_code(2,ep_index,-1,1)){
if ( (ep_status_i == 0 ) && (ep_status_r == 0) && (ep_status_o == 0) ) { ep_status_i=1; pl_epi=TRUE; pl_epii=TRUE;}
else { epi_error = TRUE; pl_epi=FALSE; pl_epii=FALSE;} }
if (Is_code(2,ep_index,2,1)){
if (( ep_status_i == 1 ) && (ep_status_r == 0) && (ep_status_o == 0)) { ep_status_i=2; pl_epi=TRUE; pl_epii=TRUE;}
else { if (ep_status_i == 0) begmisx = i; ischonbegx = i; epi_error = TRUE; pl_epi=FALSE; pl_epii=FALSE;} }
if (Is_code(2,ep_index,-3,1)){
if (( ep_status_i == 2 ) && (ep_status_r == 0) && (ep_status_o == 0)) { ep_status_i=0; pl_epi=FALSE; pl_epii=FALSE;}
else { if (ep_status_i == 0) begmise = i; ischonbege = i; epi_error = TRUE; pl_epi=FALSE; pl_epii=FALSE;} }
if (Is_code(2,ep_index,-1,7)){
if (( ep_status_r == 0 ) && (ep_status_i == 0) && (ep_status_o == 0)) { ep_status_r=1; pl_epi=TRUE;}
else { epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(2,ep_index,2,7)){
if (( ep_status_r == 1 ) && (ep_status_i == 0) && (ep_status_o == 0)) { ep_status_r=2; pl_epi=TRUE;}
else { if (ep_status_r == 0) begmisx = i; epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(2,ep_index,-3,7)){
if (( ep_status_r == 2 ) && (ep_status_i == 0) && (ep_status_o == 0)) { ep_status_r=0; pl_epi=FALSE;}
else { if (ep_status_r == 0) begmise = i; epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(2,ep_index,-1,11)){
if (( ep_status_o == 0 ) && (ep_status_r == 0) && (ep_status_i == 0)) { ep_status_o=1; pl_epi=TRUE;}
else { epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(2,ep_index,2,11)){
if (( ep_status_o == 1 ) && (ep_status_r == 0) && (ep_status_i == 0)) { ep_status_o=2; pl_epi=TRUE;}
else { if (ep_status_o == 0) begmisx = i; epi_error = TRUE; pl_epi=FALSE; } }
if (Is_code(2,ep_index,-3,11)){
if (( ep_status_o == 2 ) && (ep_status_r == 0) && (ep_status_i == 0)) { ep_status_o=0; pl_epi=FALSE;}
else { if (ep_status_o == 0) begmise = i; epi_error = TRUE; pl_epi=FALSE; } }
if ( epi_error) sprintf(message2, "Time: %14s",mstimstr(data_raw[references[2][ep_index].raw_index].index));
ep_index++;
if ((ep_index > references_index[2] ) && ((ep_status_i != 0) || (ep_status_r != 0) || (ep_status_o != 0)) ) {
epi_error=TRUE;
sprintf(message2, "Time: %14s",mstimstr(data_raw[references[2][references_index[2]].raw_index].index));
}
if ( epi_error && epi_error_first ) {
strcpy(message1,"Lead 2: Inconsistent episode !");
//
// warning_message(2);
//
epi_error=FALSE; ep_status_i=0; ep_status_r=0; ep_status_o=0; epi_error_first=FALSE; }
}
if (pl_epi) {
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,116, x_0,120);
// XDrawLine(my_display, my_window, my_gc, x_0,146, x_0,150);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
}
// if (pl_epii) {
// XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
// XDrawLine(my_display, my_window, my_gc, x_0,136, x_0,140);
// XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
// // pl_epi=ep_status != 0;
// }
} // end episodes
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b);
if (status_unsubtracted2 ) {y_1=Coor_y_l2(data_raw[i].l2_ST80);}
else {y_1=Coor_y_l2(data_raw[i].sub_v[2]);}
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,156, x_0,160);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
if (lead2_plot_button_status.HRRaw ){
y1_1=170-data_raw[i].HR/2;
XDrawLine(my_display, my_window, my_gc, x_0,y1_0, x_1,y1_1);
y1_0=y1_1;
}
if (lead2_plot_button_status.STslRaw ){
y1_1=60+Coor_y_l2(data_raw[i].l2_ST80-data_raw[i].l2_ST20);
XDrawLine(my_display, my_window, my_gc, x_0,y1_0, x_1,y1_1);
y1_0=y1_1;
}
x_0=x_1; y_0=y_1;
}
} // end while
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,156, x_0,160);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
if (begmisx != -1 && begmise != -1) {
j=begmise; begmisx = begmise = -1;
x_x=Coor_x_l0(data_raw[j].index-index_0_b);
while ( (data_raw[j].index >= index_0_b ) && ( j >= 0) ) {
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_x,116, x_x,120);
// XDrawLine(my_display, my_window, my_gc, x_x,146, x_x,150);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
j--;
x_x=Coor_x_l0(data_raw[j].index-index_0_b);
}
}
// if (ischonbegx != -1 && ischonbege != -1) {
// j=ischonbegx; ischonbegx = ischonbege = -1;
// x_x=Coor_x_l0(data_raw[j].index-index_0_b);
// while ( (data_raw[j].index >= index_0_b ) && ( j >= 0) ) {
// XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
// XDrawLine(my_display, my_window, my_gc, x_x,136, x_x,140);
// XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
// j--;
// x_x=Coor_x_l0(data_raw[j].index-index_0_b);
// }
// }
raw_display_end=i-1;
fin_display_end=raw_display_end;
while ( (data_fin[fin_display_end].index < index_0_e) && ( fin_display_end < fin_last_index) ) fin_display_end++;
fin_display_end=fin_display_end-1;
i=0;
while (data_fin[i].index < index_0_b) i++;
fin_display_begin=i;
if (lead2_plot_button_status.HRate OR lead2_plot_button_status.STFine OR lead2_plot_button_status.STslFine OR lead2_plot_button_status.ISOJ ){
x_0=Coor_x_l0(data_fin[i].index-index_0_b);
if (lead2_plot_button_status.HRate ) { y_0=170-data_fin[i].HR/2; XDrawString(my_display, my_window, my_gc, 2,161, "Heart Rate [bpm]",16);}
if (lead2_plot_button_status.STFine ) { y_0=60+Coor_y_l2(data_fin[i].l2_ST80);
XDrawString(my_display, my_window, my_gc, 2,161, "ST Fine [uV]",12);}
if (lead2_plot_button_status.STslFine ) { y_0=60+Coor_y_l2(data_fin[i].l2_ST80-data_fin[i].l2_ST20);
XDrawString(my_display, my_window, my_gc, 2,161, "ST Slope Fine [uV]",18);}
if (lead2_plot_button_status.ISOJ ) { y_0=(long)(160-1000.0*(data_fin[i].nISO +data_fin[i].nJ)/FSAMP/3);
XDrawString(my_display, my_window, my_gc, 2,161, "ISO - J [ms]",12);}
while ( (data_fin[i].index < index_0_e) && ( i < fin_last_index) ) {
i++;
x_1=Coor_x_l0(data_fin[i].index-index_0_b);
if (lead2_plot_button_status.HRate ) y_1=170-data_fin[i].HR/2;
if (lead2_plot_button_status.STFine ) y_1=60+Coor_y_l2(data_fin[i].l2_ST80);
if (lead2_plot_button_status.STslFine ) y_1=60+Coor_y_l2(data_fin[i].l2_ST80-data_fin[i].l2_ST20);
if (lead2_plot_button_status.ISOJ ) y_1=(long)(160-1000.0*(data_fin[i].nISO +data_fin[i].nJ)/FSAMP/3);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,160, x_0,163);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
x_0=x_1; y_0=y_1;
}
} // end while
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XDrawLine(my_display, my_window, my_gc, x_0,160, x_0,163);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
fin_display_end=i-1;
} // if hrate
if ( references_index[2] >= 0 ){
for (i=0; i <= references_index[2]; i++){
if ( (data_raw[references[2][i].raw_index].index >= index_0_b) && (data_raw[references[2][i].raw_index].index <= index_0_e) ) {
act_loc=FALSE;
if ( Is_code(2,i,0,0) ){
act_loc= act_reference[2].set && ( act_reference[2].typ == 2 ) && (act_reference[2].index == i);
if (( i == reference_act[2] ) OR act_loc ) {
XAllocNamedColor(my_display, cmap,set_color1, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
x_0=Coor_x_l0(data_raw[references[2][i].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 10 ,10, "LR",2);
if (( i == reference_act[2] ) OR act_loc ) {
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
}
else // other ref
{
if ( i == reference_act[2] ) {
XAllocNamedColor(my_display, cmap,set_color2, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
x_0=Coor_x_l0(data_raw[references[2][i].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
get_display_code(2,i);
XDrawString(my_display, my_window, my_gc, x_0 - 10 ,10, ref_code,2);
if ( i == reference_act[2] ) {
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
}
}
} // end for
} // plot ref.
if ( loc_interval_b[2].set && (data_raw[loc_interval_b[2].raw_index].index >= index_0_b) && (data_raw[loc_interval_b[2].raw_index].index <= index_0_e) ) {
x_0=Coor_x_l0(data_raw[loc_interval_b[2].raw_index].index-index_0_b);
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 9 ,20, "B",1);
}
if ( loc_interval_e[2].set && (data_raw[loc_interval_e[2].raw_index].index >= index_0_b) && (data_raw[loc_interval_e[2].raw_index].index <= index_0_e) ) {
x_0=Coor_x_l0(data_raw[loc_interval_e[2].raw_index].index-index_0_b);
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 9 ,20, "E",1);
}
if ( global_set && (data_raw[global_ref[2].raw_index].index >= index_0_b) && (data_raw[global_ref[2].raw_index].index <= index_0_e) ) {
XAllocNamedColor(my_display, cmap,set_color1, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
x_0=Coor_x_l0(data_raw[global_ref[2].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 10 ,10, "GR",2);
}
if ( Marker[2].set && (data_raw[Marker[2].raw_index].index >= index_0_b) && (data_raw[Marker[2].raw_index].index <= index_0_e) ) {
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
x_0=Coor_x_l0(data_raw[Marker[2].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,160);
XDrawString(my_display, my_window, my_gc, x_0 - 11 ,20, "M",1);
x_1=Coor_x_l0(data_fin[Marker[2].fine_index].index-index_0_b);
if ( x_1 == x_0) x_1++;
XDrawLine(my_display, my_window, my_gc, x_1,80, x_1,160);
} // end marker
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
} // end draw_lead2_A(void)
void draw_grid_lead0(int lead)
{
Bool draw_type_B, draw_type_C, draw_type_D, draw_type_E;
switch(lead){
case 0: my_display=l_b_display; my_window=l_b_window; my_gc= gcLead0;
draw_type_B=lead0_plot_button_status.HRate OR lead0_plot_button_status.HRRaw;
draw_type_C=lead0_plot_button_status.STFine OR lead0_plot_button_status.STslFine OR
lead0_plot_button_status.STslRaw ;
draw_type_D=lead0_plot_button_status.Episodes;
draw_type_E=lead0_plot_button_status.ISOJ;
break;
case 1: my_display=l_b1_display; my_window=l_b1_window; my_gc= gcLead1;
draw_type_B=lead1_plot_button_status.HRate OR lead1_plot_button_status.HRRaw;
draw_type_C=lead1_plot_button_status.STFine OR lead1_plot_button_status.STslFine OR
lead1_plot_button_status.STslRaw ;
draw_type_D=lead1_plot_button_status.Episodes;
draw_type_E=lead1_plot_button_status.ISOJ;
break;
case 2: my_display=l_b2_display; my_window=l_b2_window; my_gc= gcLead2;
draw_type_B=lead2_plot_button_status.HRate OR lead2_plot_button_status.HRRaw;
draw_type_C=lead2_plot_button_status.STFine OR lead2_plot_button_status.STslFine OR
lead2_plot_button_status.STslRaw ;
draw_type_D=lead2_plot_button_status.Episodes;
draw_type_E=lead2_plot_button_status.ISOJ;
break;
}
XGCValues line_type;
long c_Time=0, hours=0,hours_l=0, minutes=0, seconds=0;
char pr_time[8];
int i,j, lx, lxx, ampl, imax;
long x_0, x_1, y_0, y_1;
XClearWindow(my_display, my_window);
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
cmap=XDefaultColormap(my_display, DefaultScreen(my_display));
XAllocNamedColor(my_display, cmap,"white", &col, & unused);
XSetBackground(my_display, my_gc, col.pixel);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XDrawLine(my_display, my_window, my_gc, 1120, 0, 1120,180);
XDrawLine(my_display, my_window, my_gc, 160, 0, 160,180);
XDrawLine(my_display, my_window, my_gc, 160,60, 1120,60);
XDrawLine(my_display, my_window, my_gc, 160,120, 1120,120);
line_type.line_style=LineOnOffDash;
XChangeGC(my_display, my_gc, GCLineStyle,&line_type);
XDrawLine(my_display, my_window, my_gc, 160,10, 1120,10);
XDrawLine(my_display, my_window, my_gc, 160,20, 1120,20);
XDrawLine(my_display, my_window, my_gc, 160,30, 1120,30);
XDrawLine(my_display, my_window, my_gc, 160,40, 1120,40);
XDrawLine(my_display, my_window, my_gc, 160,50, 1120,50);
XDrawLine(my_display, my_window, my_gc, 160,70, 1120,70);
XDrawLine(my_display, my_window, my_gc, 160,80, 1120,80);
XDrawLine(my_display, my_window, my_gc, 160,90, 1120,90);
XDrawLine(my_display, my_window, my_gc, 160,100, 1120,100);
XDrawLine(my_display, my_window, my_gc, 160,110, 1120,110);
XDrawLine(my_display, my_window, my_gc, 160,130, 1120,130);
XDrawLine(my_display, my_window, my_gc, 160,140, 1120,140);
XDrawLine(my_display, my_window, my_gc, 160,150, 1120,150);
XDrawLine(my_display, my_window, my_gc, 160,160, 1120,160);
XDrawString(my_display, my_window, my_gc, 142,20, " 2",2);
XDrawString(my_display, my_window, my_gc, 142,40, " 1",2);
XDrawString(my_display, my_window, my_gc, 142,60, " 0",2);
XDrawString(my_display, my_window, my_gc, 142,80, "-1",2);
XDrawLine(my_display, my_window, my_gc, 1120, 0, 1120,180);
XDrawLine(my_display, my_window, my_gc, 160, 0, 160,180);
XDrawLine(my_display, my_window, my_gc, 160,60, 1120,60);
XDrawLine(my_display, my_window, my_gc, 160,120, 1120,120);
line_type.line_style=LineOnOffDash;
XChangeGC(my_display, my_gc, GCLineStyle,&line_type);
XDrawLine(my_display, my_window, my_gc, 160,10, 1120,10);
XDrawLine(my_display, my_window, my_gc, 160,20, 1120,20);
XDrawLine(my_display, my_window, my_gc, 160,30, 1120,30);
XDrawLine(my_display, my_window, my_gc, 160,40, 1120,40);
XDrawLine(my_display, my_window, my_gc, 160,50, 1120,50);
XDrawLine(my_display, my_window, my_gc, 160,70, 1120,70);
XDrawLine(my_display, my_window, my_gc, 160,80, 1120,80);
XDrawLine(my_display, my_window, my_gc, 160,90, 1120,90);
XDrawLine(my_display, my_window, my_gc, 160,100, 1120,100);
XDrawLine(my_display, my_window, my_gc, 160,110, 1120,110);
XDrawLine(my_display, my_window, my_gc, 160,130, 1120,130);
XDrawLine(my_display, my_window, my_gc, 160,140, 1120,140);
XDrawLine(my_display, my_window, my_gc, 160,150, 1120,150);
XDrawLine(my_display, my_window, my_gc, 160,160, 1120,160);
XDrawLine(my_display, my_window, my_gc, 240,10, 240,180);
XDrawLine(my_display, my_window, my_gc, 320,10, 320,180);
XDrawLine(my_display, my_window, my_gc, 400,10, 400,180);
XDrawLine(my_display, my_window, my_gc, 480,10, 480,180);
XDrawLine(my_display, my_window, my_gc, 560,10, 560,180);
XDrawLine(my_display, my_window, my_gc, 640,10, 640,180);
XDrawLine(my_display, my_window, my_gc, 720,10, 720,180);
XDrawLine(my_display, my_window, my_gc, 800,10, 800,180);
XDrawLine(my_display, my_window, my_gc, 880,10, 880,180);
XDrawLine(my_display, my_window, my_gc, 960,10, 960,180);
XDrawLine(my_display, my_window, my_gc, 1040,10, 1040,180);
line_type.line_style=LineSolid;
XChangeGC(my_display, gcLead0, GCLineStyle,&line_type);
XDrawString(my_display, my_window, my_gc, 2,174, "[time]",6);
sprintf(pr_buff, "[units] [uV] R:%s[%d]", inp_rec_name, lead);
XDrawString(my_display, my_window, my_gc, 2,12,pr_buff, strlen(pr_buff));
XAllocNamedColor(my_display, cmap,"white", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,54,130,38);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
c_Time = diagram_time_begin_lead;
for(i = 0; i < 12; i++)
{
TimeToHoursMinSec(c_Time, &hours, &minutes, &seconds, &hours_l);
sprintf(pr_time, "%ld:%ld:%ld", hours_l, minutes, seconds);
XDrawString(my_display, my_window, my_gc, (162 + i * 80), 174, pr_time, strlen(pr_time));
c_Time +=scale_time_tick;
}
if (draw_type_B ){
XDrawString(my_display, my_window, my_gc, 134,120, "100",3);
XDrawString(my_display, my_window, my_gc, 136,140, " 60",3);
}
if (draw_type_C ){
XDrawString(my_display, my_window, my_gc, 142,100, " 1",2);
XDrawString(my_display, my_window, my_gc, 142,120, " 0",2);
XDrawString(my_display, my_window, my_gc, 142,140, "-1",2);
}
if (draw_type_E ){
XDrawString(my_display, my_window, my_gc, 134,120, "120",3);
XDrawString(my_display, my_window, my_gc, 136,140, " 60",3);
}
switch(lead){
case 0:
write_ref_data_l0();
draw_lead0_A();set_buttons_lead0();
break;
case 1:
write_ref_data_l1();
draw_lead1_A();set_buttons_lead1();
break;
case 2:
write_ref_data_l2();
draw_lead2_A();set_buttons_lead2();
break;
} // end lead
} // end draw_grid_lead0
void draw_ovrly_coeff(void)
{
int i;
long x_0, x_1, y_0, y_1;
my_display=k_b_display; my_window=k_b_window; my_gc= gckoeff;
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
index_0_b=TimeToIndex(diagram_time_begin_lead);
index_0_e=TimeToIndex(diagram_time_begin_lead+time_scale_0);
index_0=index_0_b;
if ( ovr_coef ) {
XAllocNamedColor(my_display, cmap,"white", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 100,144,30,14);
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
i=raw_display_begin;
x_0=Coor_x_l0(data_raw[i].index-index_0_b);
if ( KL_coefficents ) {
y_0=(long)(157-(double(data_raw[i].ST_f) /5.0 /ampl_c));
}
else {
y_0=(long)(157-(double(data_raw[i].QRS_f) /5.0 /ampl_c));
}
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b);
if ( KL_coefficents ) {
y_1=(long)(157-(double(data_raw[i].ST_f) /5.0 /ampl_c));
}
else {
y_1=(long)(157-(double(data_raw[i].QRS_f) /5.0 /ampl_c));
}
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XDrawString(my_display, my_window, my_gc, 5,157, "KL 5 ......................Dist..",34);
}
} // end draw_ovrly_coeff(void);
void draw_grid_coeff(void)
{
my_display=k_b_display; my_window=k_b_window; my_gc= gckoeff;
XGCValues line_type;
long c_Time=0, hours=0,hours_l=0, minutes=0, seconds=0;
char pr_time[8], pr_m[1];
int i,j, lx, lxx, ampl, imax;
long x_0, x_1, y_0, y_1;
XClearWindow(my_display, my_window);
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
cmap=XDefaultColormap(my_display, DefaultScreen(my_display));
XAllocNamedColor(my_display, cmap,"white", &col, & unused);
XSetBackground(my_display, my_gc, col.pixel);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XDrawLine(my_display, my_window, my_gc, 1120, 0, 1120,196);
XDrawLine(my_display, my_window, my_gc, 160, 0, 160,196);
XDrawLine(my_display, my_window, my_gc, 160,37, 1120,37);
XDrawLine(my_display, my_window, my_gc, 160,67, 1120,67);
XDrawLine(my_display, my_window, my_gc, 160,97, 1120,97);
XDrawLine(my_display, my_window, my_gc, 160,127, 1120,127);
XDrawLine(my_display, my_window, my_gc, 160,157, 1120,157);
line_type.line_style=LineOnOffDash;
XChangeGC(my_display, my_gc, GCLineStyle,&line_type);
XDrawLine(my_display, my_window, my_gc, 160,7, 1120,7);
XDrawLine(my_display, my_window, my_gc, 160,17, 1120,17);
XDrawLine(my_display, my_window, my_gc, 160,27, 1120,27);
XDrawLine(my_display, my_window, my_gc, 160,47, 1120,47);
XDrawLine(my_display, my_window, my_gc, 160,57, 1120,57);
XDrawLine(my_display, my_window, my_gc, 160,77, 1120,77);
XDrawLine(my_display, my_window, my_gc, 160,87, 1120,87);
XDrawLine(my_display, my_window, my_gc, 160,107, 1120,107);
XDrawLine(my_display, my_window, my_gc, 160,117, 1120,117);
XDrawLine(my_display, my_window, my_gc, 160,137, 1120,137);
XDrawLine(my_display, my_window, my_gc, 160,147, 1120,147);
XDrawLine(my_display, my_window, my_gc, 160,167, 1120,167);
XDrawLine(my_display, my_window, my_gc, 160,177, 1120,177);
XDrawString(my_display, my_window, my_gc, 145,17, " 1",2);
XDrawString(my_display, my_window, my_gc, 145,37, " 0",2);
XDrawString(my_display, my_window, my_gc, 145,67, " 0",2);
XDrawString(my_display, my_window, my_gc, 145,97, " 0",2);
XDrawString(my_display, my_window, my_gc, 145,127, " 0",2);
XDrawString(my_display, my_window, my_gc, 145,157, " 0",2);
XDrawString(my_display, my_window, my_gc, 145,177, "-1",2);
XDrawString(my_display, my_window, my_gc, 145,47, " 1",2);
XDrawString(my_display, my_window, my_gc, 145,77, " 1",2);
XDrawString(my_display, my_window, my_gc, 145,107, " 1",2);
XDrawString(my_display, my_window, my_gc, 145,137, " 1",2);
XDrawLine(my_display, my_window, my_gc, 240,7, 240,180);
XDrawLine(my_display, my_window, my_gc, 320,7, 320,180);
XDrawLine(my_display, my_window, my_gc, 400,7, 400,180);
XDrawLine(my_display, my_window, my_gc, 480,7, 480,180);
XDrawLine(my_display, my_window, my_gc, 560,7, 560,180);
XDrawLine(my_display, my_window, my_gc, 640,7, 640,180);
XDrawLine(my_display, my_window, my_gc, 720,7, 720,180);
XDrawLine(my_display, my_window, my_gc, 800,7, 800,180);
XDrawLine(my_display, my_window, my_gc, 880,7, 880,180);
XDrawLine(my_display, my_window, my_gc, 960,7, 960,180);
XDrawLine(my_display, my_window, my_gc, 1040,7, 1040,180);
line_type.line_style=LineSolid;
XChangeGC(my_display, gcLead0, GCLineStyle,&line_type);
XDrawString(my_display, my_window, my_gc, 2,190, "[time]",6);
sprintf(pr_buff, "[units] [std] R:%s", inp_rec_name);
XDrawString(my_display, my_window, my_gc, 2,12,pr_buff, strlen(pr_buff));
c_Time = diagram_time_begin_lead;
for(i = 0; i < 12; i++)
{
TimeToHoursMinSec(c_Time, &hours, &minutes, &seconds, &hours_l);
sprintf(pr_time, "%ld:%ld:%ld", hours, minutes, seconds);
XDrawString(my_display, my_window, my_gc, (162 + i * 80), 190, pr_time, strlen(pr_time));
c_Time +=scale_time_tick;
}
int k1_0, k2_0, k3_0, k4_0, k5_0, k1_1, k2_1, k3_1, k4_1, k5_1;
index_0_b=TimeToIndex(diagram_time_begin_lead);
index_0_e=TimeToIndex(diagram_time_begin_lead+time_scale_0);
index_0=index_0_b;
XDrawString(my_display, my_window, my_gc, 5,37, "KL 1 ..................................",40);
XDrawString(my_display, my_window, my_gc, 5,67, "KL 2 ..................................",40);
XDrawString(my_display, my_window, my_gc, 5,97, "KL 3 ..................................",40);
XDrawString(my_display, my_window, my_gc, 5,127, "KL 4 ..................................",40);
XDrawString(my_display, my_window, my_gc, 5,157, "KL 5 ..................................",40);
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
i=0;
while (data_raw[i].index < index_0_b) i++;
raw_display_begin=i;
x_0=Coor_x_l0(data_raw[i].index-index_0_b);
if ( KL_coefficents ) {
k1_0=(int)(37-(double(data_raw[i].STk1) /5.0 /ampl_c));
k2_0=(int)(67-(double(data_raw[i].STk2) /5.0 /ampl_c));
k3_0=(int)(97-(double(data_raw[i].STk3) /5.0 /ampl_c));
k4_0=(int)(127-(double(data_raw[i].STk4) /5.0 /ampl_c));
k5_0=(int)(157-(double(data_raw[i].STk5) /5.0 /ampl_c));
}
else {
k1_0=(int)(37-(double(data_raw[i].QRSk1) /5.0 /ampl_c));
k2_0=(int)(67-(double(data_raw[i].QRSk2) /5.0 /ampl_c));
k3_0=(int)(97-(double(data_raw[i].QRSk3) /5.0 /ampl_c));
k4_0=(int)(127-(double(data_raw[i].QRSk4) /5.0 /ampl_c));
k5_0=(int)(157-(double(data_raw[i].QRSk5) /5.0 /ampl_c));
}
while ( (data_raw[i].index < index_0_e ) && ( i < raw_last_index) ){
i++;
x_1=Coor_x_l0(data_raw[i].index-index_0_b);
if ( KL_coefficents ) {
k1_1=(int)(37-(double(data_raw[i].STk1) /5.0 /ampl_c));
k2_1=(int)(67-(double(data_raw[i].STk2) /5.0 /ampl_c));
k3_1=(int)(97-(double(data_raw[i].STk3) /5.0 /ampl_c));
k4_1=(int)(127-(double(data_raw[i].STk4) /5.0 /ampl_c));
k5_1=(int)(157-(double(data_raw[i].STk5) /5.0 /ampl_c));
}
else {
k1_1=(int)(37-(double(data_raw[i].QRSk1) /5.0 /ampl_c));
k2_1=(int)(67-(double(data_raw[i].QRSk2) /5.0 /ampl_c));
k3_1=(int)(97-(double(data_raw[i].QRSk3) /5.0 /ampl_c));
k4_1=(int)(127-(double(data_raw[i].QRSk4) /5.0 /ampl_c));
k5_1=(int)(157-(double(data_raw[i].QRSk5) /5.0 /ampl_c));
}
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,k1_0, x_1,k1_1); k1_0=k1_1;
XDrawLine(my_display, my_window, my_gc, x_0,k2_0, x_1,k2_1); k2_0=k2_1;
XDrawLine(my_display, my_window, my_gc, x_0,k3_0, x_1,k3_1); k3_0=k3_1;
XDrawLine(my_display, my_window, my_gc, x_0,k4_0, x_1,k4_1); k4_0=k4_1;
XDrawLine(my_display, my_window, my_gc, x_0,k5_0, x_1,k5_1); k5_0=k5_1;
x_0=x_1;
}
} // end while
raw_display_end=i-1;
draw_ovrly_coeff();
for (i=0; i<= 2; i++){
if ( Marker[i].set && (data_raw[Marker[i].raw_index].index >= index_0_b) && (data_raw[Marker[i].raw_index].index <= index_0_e) ) {
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
x_0=Coor_x_l0(data_raw[Marker[i].raw_index].index-index_0_b);
XDrawLine(my_display, my_window, my_gc, x_0,10, x_0,177);
sprintf(pr_m,"%d",i);
XDrawString(my_display, my_window, my_gc, x_0 - 6 ,10, pr_m,1);
} // end marker
}
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
} // end draw_grid_coeff
void data_new_r_read(void)
{
long i,j,i_fin;
long data_b_0, data_e_0, t_index;
char time[15], time_b[15],time_e[15];
long R_end;
data_b_0=reference_mstime_index - (150 * FSAMP + FSAMP / 2 ); // - 150 sec= 2.5 min as max display offset + 1/2 avr ( 1000 ms /2 )
data_e_0=reference_mstime_index + (150 * FSAMP + FSAMP / 2 ); // + 150 sec as max display offset
i=LEN_BUFF_D-1;
while ( data_b_0 < 0 ){
L_buff_R[0][i]=0; L_buff_R[1][i]=0; L_buff_R[2][i]=0; L_buff_R[3][i]=0; L_buff_R[4][i]=0; L_buff_R[5][i]=0;
data_b_0++;
i--;
}
t_index=data_b_0;
i_fin=0;
while ( data_fin[i_fin].index < t_index ) i_fin++;
isigsettime(data_b_0);
while ( i >= 0 ) {
if (getvec(v_sample) <= 0)
{
fprintf(stderr,"Error reading data (1)\n");
exit(-1);
}
for (j = 0; j< nsig; j++)
L_buff_R[j][i]=v_sample[j];
L_buff_R[4][i]=t_index;
if ( t_index == data_fin[i_fin].index ) {
L_buff_R[5][i]=1; i_fin++;
}
else {
L_buff_R[5][i]=0;
}
t_index++;
i--;
}
for (j = 0; j< 6; j++)
R_buff_R[j][0]= L_buff_R[j][0];
i=1;
R_end= LEN_BUFF_D;
while ( data_raw[raw_last_index].index < data_e_0 ){
R_buff_R[0][data_e_0]=0; R_buff_R[1][data_e_0]=0; R_buff_R[2][data_e_0]=0; R_buff_R[3][data_e_0]=0; R_buff_R[4][data_e_0]=0; R_buff_R[5][data_e_0]=0;
data_e_0--;
R_end--;
}
while ( i < R_end ) {
if (getvec(v_sample) <= 0)
{
fprintf(stderr,"Error reading data (2)\n");
exit(-1);
}
for (j = 0; j< nsig; j++)
R_buff_R[j][i]=v_sample[j];
R_buff_R[4][i]=t_index;
if ( t_index == data_fin[i_fin].index ) {
R_buff_R[5][i]=1; i_fin++;
}
else {
R_buff_R[5][i]=0;
}
t_index++;
i++;
}
i--;
} // end data_new_r_read
void data_new_m_read(void)
{
long i,j,i_fin;
long data_b_0, data_e_0, t_index;
char time[15], time_b[15],time_e[15];
long R_end;
data_b_0=data_mstime_index - (150 * FSAMP + FSAMP / 2 ); // - 150 sec= 2.5 min as max display offset + 1/2 avr ( 1000 ms /2 )
data_e_0=data_mstime_index + (150 * FSAMP + FSAMP / 2 ); // + 150 sec as max display offset
i=LEN_BUFF_D-1;
while ( data_b_0 < 0 ){
L_buff_M[0][i]=0; L_buff_M[1][i]=0; L_buff_M[2][i]=0; L_buff_M[3][i]=0; L_buff_M[4][i]=0; L_buff_M[5][i]=0;
data_b_0++;
i--;
}
t_index=data_b_0;
i_fin=0;
while ( data_fin[i_fin].index < t_index ) i_fin++;
isigsettime(data_b_0);
while ( i >= 0 )
{
if (getvec(v_sample) <= 0)
{
fprintf(stderr,"Error reading data (3)\n");
exit(-1);
}
for (j = 0; j< nsig; j++)
L_buff_M[j][i]=v_sample[j];
L_buff_M[4][i]=t_index;
if ( t_index == data_fin[i_fin].index ) {
L_buff_M[5][i]=1; i_fin++;
}
else {
L_buff_M[5][i]=0;
}
t_index++;
i--;
}
for (j = 0; j< 6; j++)
R_buff_M[j][0]= L_buff_M[j][0];
i=1;
R_end= LEN_BUFF_D-1;
while ( data_raw[raw_last_index].index < data_e_0 ){
R_buff_M[0][R_end]=0; R_buff_M[1][R_end]=0; R_buff_M[2][R_end]=0; R_buff_M[3][R_end]=0; R_buff_M[4][R_end]=0; R_buff_M[5][R_end]=0;
data_e_0--;
R_end--;
}
while ( i < R_end)
{
if (getvec(v_sample) <= 0)
{
fprintf(stderr,"Error reading data (4)\n");
exit(-1);
}
for (j = 0; j< nsig; j++)
R_buff_M[j][i]=v_sample[j];
R_buff_M[4][i]=t_index;
if ( t_index == data_fin[i_fin].index ) {
R_buff_M[5][i]=1; i_fin++;
}
else {
R_buff_M[5][i]=0;
}
t_index++;
i++;
}
i--;
} // end data_new_m_read
void data_plot_marker_x(int Data_lead_x, int pos)
{
long d_display_index;
long j;
long i;
long x_0, x_1, y_0, y_1, y_s;
float y;
long x;
char time[15], time_b[15];
float v_iso, v_j, v_j80;
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
d_display_index= data_scale * FSAMP / 2;
v_iso = avr_in_avrbeat(Data_lead_x, Marker[Data_lead].nISO,Marker[Data_lead].NS);
v_j = avr_in_avrbeat(Data_lead_x,- Marker[Data_lead].nJ,Marker[Data_lead].NS);
v_j80 = avr_in_avrbeat(Data_lead_x,- Marker[Data_lead].nJ80,Marker[Data_lead].NS);
i=d_display_index;
y=L_buff_M[Data_lead_x][i]- v_iso;
x=L_buff_M[4][i]-L_buff_M[4][d_display_index];
x_0=Coor_x_data(x); y_0=Coor_y_data_M(y)+pos;
while ( i > d_avrg_index ){
i--;
y=L_buff_M[Data_lead_x][i]- v_iso;
x=L_buff_M[4][i]-L_buff_M[4][d_display_index];
x_1=Coor_x_data(x); y_1=Coor_y_data_M(y)+pos;
if ( L_buff_M[5][i] == 1 ) XDrawString(my_display, my_window, my_gc, x_0,191, "*",1);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XDrawLine(my_display, my_window, my_gc, x_0,y_0-10, x_0,y_0+10);
i = d_avrg_index;
y=A_buff_M[Data_lead_x][125-i]- v_iso;
x=L_buff_M[4][i]-L_buff_M[4][d_display_index];
x_0=Coor_x_data(x); y_0=Coor_y_data_M(y)+pos;
XDrawLine(my_display, my_window, my_gc, x_0,y_0-10, x_0,y_0+10);
while ( i > -d_avrg_index ){
if (( i == Marker[Data_lead].nISO ) && ( data_scale < 3 ))
{
y_s=Coor_y_data_M(0.0)+pos;
plot_point_symbol(set_marker, x_0, y_s);
}
if (( -i == Marker[Data_lead].nJ ) && ( data_scale < 3 )) {
y_s=Coor_y_data_M(v_j- v_iso)+pos;
plot_point_symbol(set_marker, x_0, y_s);
}
i--;
y=A_buff_M[Data_lead_x][125-i]- v_iso;
if ( i >= 0 ) { x=L_buff_M[4][i]-L_buff_M[4][d_display_index];
if ( L_buff_M[5][i] == 1 ) XDrawString(my_display, my_window, my_gc, x_0,191, "*",1);
}
else { x=R_buff_M[4][-i]-L_buff_M[4][d_display_index];
if ( R_buff_M[5][-i] == 1 ) XDrawString(my_display, my_window, my_gc, x_0,191, "*",1);
}
x_1=Coor_x_data(x); y_1=Coor_y_data_M(y)+pos;
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
if (( -i == Marker[Data_lead].nJ80 ) && ( data_scale < 3 )) {
y_s=Coor_y_data_M(v_j80 - v_iso)+pos;
plot_point_symbol(set_marker, x_0, y_s);
}
} // end while
XDrawLine(my_display, my_window, my_gc, x_0,y_0-10, x_0,y_0+10);
i = d_avrg_index;
y=R_buff_M[Data_lead_x][i]- v_iso;
x=R_buff_M[4][i]-L_buff_M[4][d_display_index];
x_0=Coor_x_data(x); y_0=Coor_y_data_M(y)+pos;
XDrawLine(my_display, my_window, my_gc, x_0,y_0-10, x_0,y_0+10);
while ( i < d_display_index ){
i++;
y=R_buff_M[Data_lead_x][i]- v_iso;
x=R_buff_M[4][i]-L_buff_M[4][d_display_index];
x_1=Coor_x_data(x); y_1=Coor_y_data_M(y)+pos;
if ( R_buff_M[5][i] == 1 ) XDrawString(my_display, my_window, my_gc, x_0,191, "*",1);
if ((x_1 > x_0 ) OR PLOT_ALL ) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
} // data_plot_marker_x
void data_plot_marker(void)
{
int pos0, pos1, pos2, posx;
pos0=0; pos1=0; pos2=0; posx=0;
if ( data_ovrly_shift ) { pos0= -40; pos1=0; pos2=40;
switch ( Data_lead){
case 0: posx=pos0; break;
case 1: posx=pos1; break;
case 2: posx=pos2; break;
};
};
if ( data_ovr_l0 ) {
XAllocNamedColor(my_display, cmap,set_color4, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
data_plot_marker_x(0,pos0);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
if ( data_ovr_l1 ) {
XAllocNamedColor(my_display, cmap,set_color5, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
data_plot_marker_x(1,pos1);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
if ( data_ovr_l2 ) {
XAllocNamedColor(my_display, cmap,set_color6, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
data_plot_marker_x(2,pos2);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
data_plot_marker_x(Data_lead,posx);
} // end data_plot_marker
void data_plot_ref_x(int Data_lead_x ,int pos, Bool plot_box, int Data_lead_x_act)
{
long d_display_index;
long j;
long i;
long x_0, x_1, y_0, y_1, y_s;
float y;
long x;
char time[15], time_b[15];
float v_iso, v_j, v_j80;
XSetLineAttributes(my_display, my_gc,set_line_width, LineSolid, CapRound, JoinRound);
d_display_index= data_scale * FSAMP / 2;
i=d_display_index;
v_iso = avr_in_avrbeat_r(Data_lead_x, act_ref_data[Data_lead_x_act].nISO,act_ref_data[Data_lead_x_act].NS);
v_j = avr_in_avrbeat_r(Data_lead_x,- act_ref_data[Data_lead_x_act].nJ,act_ref_data[Data_lead_x_act].NS);
v_j80 = avr_in_avrbeat_r(Data_lead_x,- act_ref_data[Data_lead_x_act].nJ80,act_ref_data[Data_lead_x_act].NS);
i=d_display_index;
y=L_buff_R[Data_lead_x][i]-v_iso;
x=L_buff_R[4][i]-L_buff_R[4][d_display_index];
x_0=Coor_x_data(x); y_0=Coor_y_data_M(y)-180+pos;
while ( i > d_avrg_index ){
i--;
y=L_buff_R[Data_lead_x][i]-v_iso;
x=L_buff_R[4][i]-L_buff_R[4][d_display_index];
x_1=Coor_x_data(x); y_1=Coor_y_data_M(y)-180+pos;
if ( L_buff_R[5][i] == 1 ) XDrawString(my_display, my_window, my_gc, x_0,20, "*",1);
if ((x_1 > x_0 ) OR PLOT_ALL) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XDrawLine(my_display, my_window, my_gc, x_0,y_0-10, x_0,y_0+10);
i = d_avrg_index;
y=A_buff_R[Data_lead_x][125-i]-v_iso;
x=L_buff_R[4][i]-L_buff_R[4][d_display_index];
x_0=Coor_x_data(x); y_0=Coor_y_data_M(y)-180+pos;
XDrawLine(my_display, my_window, my_gc, x_0,y_0-10, x_0,y_0+10);
while ( i > -d_avrg_index ){
if (( i == act_ref_data[Data_lead_x_act].nISO ) && (plot_box ) && ( data_scale < 3 )){
y_s=Coor_y_data_M(0.0)-180+pos;
plot_point_symbol(set_marker, x_0, y_s);
}
if (( -i == act_ref_data[Data_lead_x_act].nJ ) && (plot_box ) && ( data_scale < 3 )){
y_s=Coor_y_data_M(v_j - v_iso)-180+pos;
plot_point_symbol(set_marker, x_0, y_s);
}
i--;
y=A_buff_R[Data_lead_x][125-i]- v_iso;
if ( i >= 0 ) { x=L_buff_R[4][i]-L_buff_R[4][d_display_index];
if (( L_buff_R[5][i] == 1 ) && ( !data_ovr_ref)) XDrawString(my_display, my_window, my_gc, x_0,20, "*",1);
}
else { x=R_buff_R[4][-i]-L_buff_R[4][d_display_index];
if (( R_buff_R[5][-i] == 1 ) && ( !data_ovr_ref)) XDrawString(my_display, my_window, my_gc, x_0,20, "*",1);
}
x_1=Coor_x_data(x); y_1=Coor_y_data_M(y)-180+pos;
if ((x_1 > x_0 ) OR PLOT_ALL) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
if (( -i == act_ref_data[Data_lead_x_act].nJ80 ) && (plot_box ) && ( data_scale < 3 )){
y_s=Coor_y_data_M(v_j80 - v_iso)-180+pos;
plot_point_symbol(set_marker, x_0, y_s);
}
} // end while
XDrawLine(my_display, my_window, my_gc, x_0,y_0-10, x_0,y_0+10);
i = d_avrg_index;
y=R_buff_R[Data_lead_x][i]- v_iso;
x=R_buff_R[4][i]-L_buff_R[4][d_display_index];
x_0=Coor_x_data(x); y_0=Coor_y_data_M(y)-180+pos;
XDrawLine(my_display, my_window, my_gc, x_0,y_0-10, x_0,y_0+10);
while ( i < d_display_index ){
i++;
y=R_buff_R[Data_lead_x][i]- v_iso;
x=R_buff_R[4][i]-L_buff_R[4][d_display_index];
x_1=Coor_x_data(x); y_1=Coor_y_data_M(y)-180+pos;
if ( R_buff_R[5][i] == 1 ) XDrawString(my_display, my_window, my_gc, x_0,20, "*",1);
if ((x_1 > x_0 ) OR PLOT_ALL) {
XDrawLine(my_display, my_window, my_gc, x_0,y_0, x_1,y_1);
x_0=x_1; y_0=y_1;
}
} // end while
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
} // data_plot_ref_x
void data_plot_reference(void)
{
long d_display_index;
char time[15], time_b[15];
int pos0, pos1, pos2, posx;
pos0=0; pos1=0; pos2=0; posx=0;
if ( data_ovrly_shift ) { pos0= -40; pos1=0; pos2=40;
switch ( Data_lead){
case 0: posx=pos0; break;
case 1: posx=pos1; break;
case 2: posx=pos2; break;
};
};
if ( data_ovr_l0 ) {
XAllocNamedColor(my_display, cmap,set_color4, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
data_plot_ref_x(0,pos0, TRUE, Data_lead);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
if ( data_ovr_l1 ) {
XAllocNamedColor(my_display, cmap,set_color5, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
data_plot_ref_x(1,pos1, TRUE, Data_lead);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
if ( data_ovr_l2 ) {
XAllocNamedColor(my_display, cmap,set_color6, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
data_plot_ref_x(2,pos2, TRUE, Data_lead);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
if ( data_ovr_ref ) {
XAllocNamedColor(my_display, cmap,set_color3, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
data_plot_ref_x(Data_lead,posx+180, FALSE, Data_lead);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
}
data_plot_ref_x(Data_lead,posx, TRUE, Data_lead);
} // end data_plot_reference
void draw_grid_data(void)
{
XGCValues line_type;
int i,x, x_0, x_1;
long d_display_index;
float v_j80, v_j20, v_iso, v_isor, v_j80r;
float v_j80_str, v_j20_str, v_iso_str, v_isor_str, v_j80r_str;
int v_j80_str_i, v_j20_str_i, v_slo_str_i, v_dev_str_i;
d_display_index= data_scale * FSAMP / 2;
// XClearWindow(my_display, my_window, 0, 0, 1128,1087);
XAllocNamedColor(my_display, cmap,"white", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 0, 0, 1128, 1087);
XSetLineAttributes(my_display, my_gc,1, LineSolid, CapRound, JoinRound);
cmap=XDefaultColormap(my_display, DefaultScreen(my_display));
XAllocNamedColor(my_display, cmap,set_color7, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
x=L_buff_R[4][d_avrg_index]-L_buff_R[4][d_display_index];
x_0=Coor_x_data(x);
x=R_buff_R[4][d_avrg_index]-L_buff_R[4][d_display_index];
x_1=Coor_x_data(x);
if ( d_avrg_index > 0 ) XFillRectangle(my_display, my_window, my_gc, x_0,0,x_1-x_0,550); // 360
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XDrawLine(my_display, my_window, my_gc, 1120, 0, 1120,550); //
XDrawLine(my_display, my_window, my_gc, 160, 0, 160,550); //
XDrawLine(my_display, my_window, my_gc, 160,90, 1120,90); //
XDrawLine(my_display, my_window, my_gc, 160,180, 1120,180); //
XDrawLine(my_display, my_window, my_gc, 160,270, 1120,270); //
XDrawLine(my_display, my_window, my_gc, 160,550, 1120,550); //
XDrawLine(my_display, my_window, my_gc, 640,0, 640,550); //
line_type.line_style=LineOnOffDash;
XChangeGC(my_display, my_gc, GCLineStyle,&line_type);
XDrawLine(my_display, my_window, my_gc, 160,10, 1120,10);
for (i=30; i <= 550; i+=20) // < 360
XDrawLine(my_display, my_window, my_gc, 160,i, 1120,i);
x=(int)data_grid_tick;
i=1;
while(x < 480)
{
XDrawLine(my_display, my_window, my_gc, 640 + x, 0, 640 + x, 550); // 360
XDrawLine(my_display, my_window, my_gc, 639 - x, 0, 639 - x, 550); // 360
i++;
x = (int)(i * data_grid_tick);
}
XDrawString(my_display, my_window, my_gc, 143,10, " 2",2);
XDrawString(my_display, my_window, my_gc, 143,50, " 1",2);
XDrawString(my_display, my_window, my_gc, 143,90, " 0",2);
XDrawString(my_display, my_window, my_gc, 143,130, "-1",2);
XDrawString(my_display, my_window, my_gc, 143,170, "-2",2);
XDrawString(my_display, my_window, my_gc, 143,190, " 2",2);
XDrawString(my_display, my_window, my_gc, 143,230, " 1",2);
XDrawString(my_display, my_window, my_gc, 143,270, " 0",2);
XDrawString(my_display, my_window, my_gc, 143,310, "-1",2);
XDrawString(my_display, my_window, my_gc, 143,350, "-2",2);
XDrawString(my_display, my_window, my_gc, 143,390, "-3",2); //
XDrawString(my_display, my_window, my_gc, 143,430, "-4",2); //
XDrawString(my_display, my_window, my_gc, 143,470, "-5",2); //
XDrawString(my_display, my_window, my_gc, 143,510, "-6",2); //
XDrawString(my_display, my_window, my_gc, 143,550, "-7",2); //
sprintf(pr_buff, "[units] [uV] R:%s", inp_rec_name);
XDrawString(my_display, my_window, my_gc, 2,12,pr_buff, strlen(pr_buff));
if ( act_reference[Data_lead].set ){
sprintf(pr_buff,"Refer.");
XDrawString(my_display, my_window, my_gc, 2,90, pr_buff,strlen(pr_buff));
sprintf(pr_buff,"%s", mstimstr(data_fin[act_ref_data[Data_lead].fine_index].index));
XDrawString(my_display, my_window, my_gc, 50,90, pr_buff,strlen(pr_buff));
v_isor = avr_in_avrbeat_r(Data_lead, act_ref_data[Data_lead].nISO,act_ref_data[Data_lead].NS);
v_j80r = avr_in_avrbeat_r(Data_lead,- act_ref_data[Data_lead].nJ80,act_ref_data[Data_lead].NS);
}
else {
XDrawString(my_display, my_window, my_gc, 2,90, "NO Reference set .....",22);
v_isor=0.0;
v_j80r= avr_in_avrbeat(Data_lead,- Marker[Data_lead].nJ80,Marker[Data_lead].NS)
-avr_in_avrbeat(Data_lead, Marker[Data_lead].nISO,Marker[Data_lead].NS);
}
if ( Marker[Data_lead].set ) {
v_iso = avr_in_avrbeat(Data_lead, Marker[Data_lead].nISO,Marker[Data_lead].NS);
v_j20 = avr_in_avrbeat(Data_lead,- (Marker[Data_lead].nJ+5),Marker[Data_lead].NS);
v_j80 = avr_in_avrbeat(Data_lead,- Marker[Data_lead].nJ80,Marker[Data_lead].NS);
XAllocNamedColor(my_display, cmap,set_color8, &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
XFillRectangle(my_display, my_window, my_gc, 1,13,140,25);
XAllocNamedColor(my_display, cmap,"black", &col, & unused);
XSetForeground(my_display, my_gc, col.pixel);
sprintf(pr_buff,"HRate: %d [bpm]",Marker[Data_lead].fine_HR);
XDrawString(my_display, my_window, my_gc, 2,36, pr_buff,strlen(pr_buff));
sprintf(pr_buff,"Mean:");
XDrawString(my_display, my_window, my_gc, 2,54, pr_buff,strlen(pr_buff));
if ( reference_act[Data_lead] == -1 && references_index[Data_lead] == -1) {
sprintf(pr_buff,"%4d/%5d",Marker[Data_lead].NS, act_ref_data[Data_lead].NS );
} else if ( reference_act[Data_lead] > -1 ) {
sprintf(pr_buff,"%4d/%4d",Marker[Data_lead].NS,
references[Data_lead][reference_act[Data_lead]].NS );
} else {
sprintf(pr_buff,"%4d/%4s",Marker[Data_lead].NS, " " );
}
XDrawString(my_display, my_window, my_gc, 46,54, pr_buff,strlen(pr_buff));
sprintf(pr_buff,"[smp]");
XDrawString(my_display, my_window, my_gc, 105,54, pr_buff,strlen(pr_buff));
sprintf(pr_buff,"ABeat:");
XDrawString(my_display, my_window, my_gc, 2,66, pr_buff,strlen(pr_buff));
if ( reference_act[Data_lead] == -1 && references_index[Data_lead] == -1) {
sprintf(pr_buff,"%4d/%4d",Marker[Data_lead].window, act_ref_data[Data_lead].window );
} else if ( reference_act[Data_lead] > -1 ) {
sprintf(pr_buff,"%4d/%4d",Marker[Data_lead].window,
references[Data_lead][reference_act[Data_lead]].window );
} else {
sprintf(pr_buff,"%4d/%4s",Marker[Data_lead].window, " ");
}
XDrawString(my_display, my_window, my_gc, 42,66, pr_buff,strlen(pr_buff));
sprintf(pr_buff,"[sec]");
XDrawString(my_display, my_window, my_gc, 112,66, pr_buff,strlen(pr_buff));
strcpy(pr_buff,"PB:");
strcpy(pr_buff,"PE:");
sprintf(pr_buff,"ISO:");
if ( reference_act[Data_lead] == -1 && references_index[Data_lead] == -1 ) {
sprintf(pr_buff,"%4d/%4d",-1000* Marker[Data_lead].nISO/FSAMP,
-1000* act_ref_data[Data_lead].nISO/FSAMP);
} else if ( reference_act[Data_lead] > -1) {
sprintf(pr_buff,"%4d/%4d",-1000* Marker[Data_lead].nISO/FSAMP,
-1000* references[Data_lead][reference_act[Data_lead]].nISO/FSAMP);
} else {
sprintf(pr_buff,"%4d/%4s",-1000* Marker[Data_lead].nISO/FSAMP, " ");
}
sprintf(pr_buff,"[ms]");
strcpy(pr_buff,"Q:");
sprintf(pr_buff,"J: ");
if ( reference_act[Data_lead] == -1 && references_index[Data_lead] == -1 ) {
sprintf(pr_buff,"%4d/%4d",1000* Marker[Data_lead].nJ/FSAMP,
1000* act_ref_data[Data_lead].nJ/FSAMP);
} else if ( reference_act[Data_lead] > -1 ) {
sprintf(pr_buff,"%4d/%4d",1000* Marker[Data_lead].nJ/FSAMP,
1000* references[Data_lead][reference_act[Data_lead]].nJ/FSAMP);
} else {
sprintf(pr_buff,"%4d/%4s",1000* Marker[Data_lead].nJ/FSAMP, " ");
}
sprintf(pr_buff,"[ms]");
sprintf(pr_buff,"ST:");
if ( reference_act[Data_lead] == -1 && references_index[Data_lead] == -1) {
sprintf(pr_buff,"%4d/%4d", 1000*Marker[Data_lead].nJ80/FSAMP,
1000* act_ref_data[Data_lead].nJ80/FSAMP);
} else if ( reference_act[Data_lead] > -1 ) {
sprintf(pr_buff,"%4d/%4d", 1000*Marker[Data_lead].nJ80/FSAMP,
1000* references[Data_lead][reference_act[Data_lead]].nJ80/FSAMP);
} else {
sprintf(pr_buff,"%4d/%4s", 1000*Marker[Data_lead].nJ80/FSAMP, " ");
}
sprintf(pr_buff,"[ms]");
strcpy(pr_buff,"TB:" );
strcpy(pr_buff,"TX:");
strcpy(pr_buff,"TE:" );
sprintf(pr_buff,"Marker");
XDrawString(my_display, my_window, my_gc, 2,270, pr_buff,strlen(pr_buff));
sprintf(pr_buff,"%s", mstimstr(data_fin[Marker[Data_lead].fine_index].index));
XDrawString(my_display, my_window, my_gc, 50,270, pr_buff,strlen(pr_buff));
if ( reference_act[Data_lead] == -1) {
v_j80_str_i = act_ref_data[Data_lead].ST80;
v_j20_str_i = act_ref_data[Data_lead].ST80 -
act_ref_data[Data_lead].STsl;
v_slo_str_i = act_ref_data[Data_lead].STsl;
v_dev_str_i = act_ref_data[Data_lead].STd;
} else {
v_j80_str_i = references[Data_lead][reference_act[Data_lead]].ST80;
v_j20_str_i = references[Data_lead][reference_act[Data_lead]].ST80 -
references[Data_lead][reference_act[Data_lead]].STsl;
v_slo_str_i = references[Data_lead][reference_act[Data_lead]].STsl;
v_dev_str_i = references[Data_lead][reference_act[Data_lead]].STd;
}
sprintf(pr_buff,"ST80:");
if (reference_act[Data_lead] == -1 && references_index[Data_lead] > -1)
sprintf(pr_buff, "%6d/%6s", mk_uv(v_j80 - v_iso), " ");
else sprintf(pr_buff, "%6d/%6d", mk_uv(v_j80 - v_iso), v_j80_str_i);
sprintf(pr_buff,"ST20:");
if (reference_act[Data_lead] == -1 && references_index[Data_lead] > -1)
sprintf(pr_buff, "%6d/%6s", mk_uv(v_j20 - v_iso), " ");
else sprintf(pr_buff, "%6d/%6d", mk_uv(v_j20 - v_iso), v_j20_str_i);
sprintf(pr_buff,"STsl:");
if (reference_act[Data_lead] == -1 && references_index[Data_lead] > -1)
sprintf(pr_buff, "%6d/%6s", mk_uv(v_j80- v_j20), " ");
else sprintf(pr_buff, "%6d/%6d", mk_uv(v_j80- v_j20), v_slo_str_i);
sprintf(pr_buff,"STdev:");
if (reference_act[Data_lead] == -1 && references_index[Data_lead] > -1)
sprintf(pr_buff,"%6d/%6s",mk_uv(v_j80- v_iso - (v_j80r-v_isor )), " ");
else sprintf(pr_buff,"%6d/%6d",mk_uv(v_j80- v_iso - (v_j80r-v_isor )),v_dev_str_i );
}
else {
XDrawString(my_display, my_window, my_gc, 2,270, "NO Marker set ........",22);
}
XDrawString(my_display, my_window, my_gc, 2, 24, "FINE MODE", 9);
sprintf(pr_buff, "Time tick: %ld msec", data_tick);
XDrawString(my_display, my_window, my_gc, 2, 358, pr_buff, strlen(pr_buff));
}; // end draw_grid_data
void get_average_M(void)
{
long i, j, l;
long n_av=1;
current_nl=0; current_nr=0;
for ( i= d_avrg_index; i >= 0; i--){
for (j=0; j < 6; j++)
{ A_buff_M[j][125-i]= L_buff_M[j][i];
A_buff_M[j][125+i]= R_buff_M[j][i];}
}
for ( i=1; i <= current_average_window_index; i++) {
if ( L_buff_M[5][i] == 1 ) {
n_av++; current_nl++;
for (l=0; l < nsig; l++)
for ( j= d_avrg_index; j >= -d_avrg_index; j--) A_buff_M[l][125-j] += L_buff_M[l][i+j];
}
if ( R_buff_M[5][i] == 1 ) {
n_av++; current_nr++;
for (l=0; l < nsig; l++)
for ( j= d_avrg_index; j >= -d_avrg_index; j--) A_buff_M[l][125-j] += R_buff_M[l][i-j];
}
}
for ( i= d_avrg_index; i >= -d_avrg_index; i--){
for (j=0; j < nsig; j++)
A_buff_M[j][125-i] = Round(( (double)A_buff_M[j][125-i]) / n_av);
}
} // end get_average_M
void get_average_R(void)
{
long i, j, l, n_av=1;
long ref_average_window_index;
ref_average_window_index = current_average_window_index;
for ( i= d_avrg_index; i >= 0; i--){
for (j=0; j < nsig; j++)
A_buff_R[j][125-i]= L_buff_R[j][i];
for (j=0; j < nsig; j++)
A_buff_R[j][125+i]= R_buff_R[j][i];
}
for ( i=1; i <= ref_average_window_index; i++) {
if ( L_buff_R[5][i] == 1 ) {
n_av++;
for (l=0; l < nsig; l++)
for ( j= d_avrg_index; j >= -d_avrg_index; j--) A_buff_R[l][125-j] += L_buff_R[l][i+j];
}
if ( R_buff_R[5][i] == 1 ) {
n_av++;
for (l=0; l < nsig; l++)
for ( j= d_avrg_index; j >= -d_avrg_index; j--) A_buff_R[l][125-j] += R_buff_R[l][i-j];
}
}
for ( i= d_avrg_index; i >= -d_avrg_index; i--){
for (j=0; j < nsig; j++)
A_buff_R[j][125-i] = Round(( (double)A_buff_R[j][125-i]) / n_av);
}
} // end get_average_R
void show_data(int leadx, Bool xx_lead, Bool xx_kl)
{
if (xx_kl) draw_grid_coeff();
if (( leadx == Data_lead ) || xx_lead ) {
my_display=d_b_display;
my_window=d_b_window;
my_gc=gcdata;
if ( Marker[Data_lead].set ) {
data_mstime_index= data_fin[Marker[Data_lead].fine_index].index;
data_new_m_read();
update_marker(Data_lead,999);
}
draw_grid_data();
if ( Marker[Data_lead].set ) {
data_plot_marker();
}
if ( act_reference[Data_lead].set ) {
reference_mstime_index= data_fin[act_ref_data[Data_lead].fine_index].index; //r
data_new_r_read(); //r
get_average_R(); //r
data_plot_reference();
}
}
} // end show_data
//**
void set_buttons_lead0()
{
Bool selected;
Bool loc_int_set;
Bool sel_lr;
if (Lead0_buttons.Auto_s == 1)
{ status_manual_mode=TRUE; }
else
{ status_manual_mode=FALSE;}
if (Lead0_buttons.Subtr_s == 1)
{ xv_set(Sem_0_l_bw.l_b_Subtr, PANEL_LABEL_STRING, "Subtr", NULL);status_unsubtracted =TRUE; }
else
{ xv_set(Sem_0_l_bw.l_b_Subtr, PANEL_LABEL_STRING, "UnSubtr", NULL); status_unsubtracted =FALSE;}
if (Lead0_buttons.OvrApp_s == 1)
{xv_set(Sem_0_l_bw.l_b_OvrApp, PANEL_LABEL_STRING, "OvrApp", NULL); ovr0_app = FALSE;}
else
{xv_set(Sem_0_l_bw.l_b_OvrApp, PANEL_LABEL_STRING, "UnOvAp", NULL); ovr0_app = TRUE;}
if (Lead0_buttons.ConsLR ){
if (Lead0_buttons.ConsLR_s == 1)
{ xv_set(Sem_0_l_bw.l_b_ConsLR, PANEL_LABEL_STRING, "ConsLR", NULL); status_consider_localref =TRUE;
sel_lr=Is_code(0,reference_act[0],0,0) && status_manual_mode && status_unsubtracted;}
else
{xv_set(Sem_0_l_bw.l_b_ConsLR, PANEL_LABEL_STRING, "ConsGR", NULL); status_consider_localref =FALSE;
sel_lr=TRUE;}
}
selected = reference_act[0] >= 0;
if ( status_manual_mode && !status_unsubtracted && Is_code(0,reference_act[0],0,0) ) selected=FALSE;
loc_int_set = loc_interval_b[0].set && loc_interval_e[0].set;
xv_set(Sem_0_l_bw.l_b_Mark, PANEL_INACTIVE,! Lead0_buttons.Mark,NULL);
xv_set(Sem_0_l_bw.l_b_Subtr, PANEL_INACTIVE,! Lead0_buttons.Subtr,NULL);
xv_set(Sem_0_l_bw.l_b_OvrApp, PANEL_INACTIVE,! Lead0_buttons.OvrApp,NULL);
xv_set(Sem_0_l_bw.l_b_OvrLds_menu, PANEL_INACTIVE,! Lead0_buttons.OvrLds,NULL);
xv_set(Sem_0_l_bw.l_b_Exm, PANEL_INACTIVE,! Lead0_buttons.Exm,NULL);
xv_set(Sem_0_l_bw.l_b_ConsLR, PANEL_INACTIVE,! (Lead0_buttons.ConsLR && sel_lr),NULL);
};// set_buttons_lead0
void set_buttons_lead0_start()
{
Lead0_buttons.Auto_s = 1; Lead0_buttons.Subtr_s=1; Lead0_buttons.OvrApp_s=1; Lead0_buttons.ConsLR_s=1;
Lead0_buttons.Mark=TRUE;Lead0_buttons.Dmy=FALSE; Lead0_buttons.Auto= FALSE; Lead0_buttons.Subtr=FALSE; Lead0_buttons.Cmpt= TRUE;
Lead0_buttons.OvrApp= TRUE; Lead0_buttons.OvrLds= TRUE; Lead0_buttons.GlR =TRUE; Lead0_buttons.SetLB= FALSE;
Lead0_buttons.SetLE= FALSE; Lead0_buttons.DelLI= FALSE;
Lead0_buttons.Isc= FALSE; Lead0_buttons.Rate_r= FALSE;
Lead0_buttons.Cnd= FALSE; Lead0_buttons.AxS= FALSE; Lead0_buttons.Atr= FALSE; Lead0_buttons.Exm= FALSE; Lead0_buttons.Move= FALSE;
Lead0_buttons.Del= FALSE; Lead0_buttons.DelA= FALSE; Lead0_buttons.ChAtr= FALSE; Lead0_buttons.ChAtrA= FALSE;
Lead0_buttons.ConsLR= FALSE;
Lead0_buttons.LcRef= FALSE; Lead0_buttons.Cancel= FALSE; Lead0_buttons.Rpt= FALSE;
};// set_buttons_lead0_start
void set_buttons_lead0_reset_all()
{
Lead0_buttons.Mark=FALSE; Lead0_buttons.Dmy=FALSE; Lead0_buttons.Auto= FALSE; Lead0_buttons.Subtr=FALSE; Lead0_buttons.Cmpt= TRUE;
Lead0_buttons.OvrApp= TRUE; Lead0_buttons.OvrLds= TRUE; Lead0_buttons.GlR =FALSE; Lead0_buttons.SetLB= FALSE;
Lead0_buttons.SetLE= FALSE; Lead0_buttons.DelLI= FALSE; Lead0_buttons.Isc= FALSE; Lead0_buttons.Rate_r= FALSE;
Lead0_buttons.Cnd= FALSE; Lead0_buttons.AxS= FALSE; Lead0_buttons.Atr= FALSE; Lead0_buttons.Exm= FALSE; Lead0_buttons.Move= FALSE;
Lead0_buttons.Del= FALSE; Lead0_buttons.DelA= FALSE; Lead0_buttons.ChAtr= FALSE; Lead0_buttons.ChAtrA= FALSE;
Lead0_buttons.ConsLR= FALSE;
Lead0_buttons.LcRef= FALSE; Lead0_buttons.Cancel= TRUE; Lead0_buttons.Rpt= FALSE;
};// set_buttons_lead0_reset_all
void set_buttons_lead0_setGR()
{
Lead0_buttons.Auto_s = 1;
Lead0_buttons.Subtr_s= 1;
Lead0_buttons.ConsLR_s = 1;
Lead0_buttons.Mark=TRUE;Lead0_buttons.Dmy=TRUE; Lead0_buttons.Auto= TRUE; Lead0_buttons.Subtr=TRUE; Lead0_buttons.Cmpt= TRUE;
Lead0_buttons.OvrApp= TRUE; Lead0_buttons.OvrLds= TRUE; Lead0_buttons.GlR =TRUE; Lead0_buttons.SetLB= TRUE;
Lead0_buttons.SetLE= TRUE; Lead0_buttons.DelLI= loc_interval_b[0].set || loc_interval_e[0].set;
Lead0_buttons.Isc= FALSE; Lead0_buttons.Rate_r= FALSE;
Lead0_buttons.Cnd= TRUE; Lead0_buttons.AxS= TRUE; Lead0_buttons.Atr= FALSE; Lead0_buttons.Exm= TRUE; Lead0_buttons.Move= TRUE;
Lead0_buttons.Del= TRUE; Lead0_buttons.DelA= FALSE; Lead0_buttons.ChAtr= FALSE; Lead0_buttons.ChAtrA= FALSE;
Lead0_buttons.ConsLR= Is_code(0,reference_act[0],0,0) || !status_consider_localref;
Lead0_buttons.LcRef= TRUE; Lead0_buttons.Cancel= FALSE; Lead0_buttons.Rpt= FALSE;
};// set_buttons_lead0_setGR
void set_buttons_lead0_unsubtr_manual()
{
Lead0_buttons.ConsLR_s = 1;
Lead0_buttons.Mark=TRUE;Lead0_buttons.Dmy=TRUE; Lead0_buttons.Auto= TRUE; Lead0_buttons.Subtr=TRUE; Lead0_buttons.Cmpt= TRUE;
Lead0_buttons.OvrApp= TRUE; Lead0_buttons.OvrLds= TRUE; Lead0_buttons.GlR =TRUE; Lead0_buttons.SetLB= TRUE;
Lead0_buttons.SetLE= TRUE; Lead0_buttons.DelLI= loc_interval_b[0].set || loc_interval_e[0].set;
Lead0_buttons.Isc= FALSE; Lead0_buttons.Rate_r= FALSE;
Lead0_buttons.Cnd= TRUE; Lead0_buttons.AxS= TRUE; Lead0_buttons.Atr= FALSE; Lead0_buttons.Exm= TRUE; Lead0_buttons.Move= TRUE;
Lead0_buttons.Del= TRUE; Lead0_buttons.DelA= FALSE; Lead0_buttons.ChAtr= FALSE; Lead0_buttons.ChAtrA= FALSE;
Lead0_buttons.ConsLR= Is_code(0,reference_act[0],0,0) || !status_consider_localref;
Lead0_buttons.LcRef= TRUE; Lead0_buttons.Cancel= FALSE; Lead0_buttons.Rpt= FALSE;
};// set_buttons_lead0_unsubtr_manual
void set_buttons_lead0_subtr_manual()
{
Lead0_buttons.ConsLR_s = 1;
Lead0_buttons.Mark=TRUE;Lead0_buttons.Dmy=FALSE; Lead0_buttons.Auto= TRUE; Lead0_buttons.Subtr=TRUE; Lead0_buttons.Cmpt= TRUE;
Lead0_buttons.OvrApp= TRUE; Lead0_buttons.OvrLds= TRUE; Lead0_buttons.GlR =FALSE; Lead0_buttons.SetLB= TRUE;
Lead0_buttons.SetLE= TRUE; Lead0_buttons.DelLI= loc_interval_b[0].set || loc_interval_e[0].set;
Lead0_buttons.Isc= FALSE; Lead0_buttons.Rate_r= FALSE;
Lead0_buttons.Cnd= FALSE; Lead0_buttons.AxS= FALSE; Lead0_buttons.Atr= TRUE; Lead0_buttons.Exm= TRUE; Lead0_buttons.Move= TRUE;
Lead0_buttons.Del= TRUE; Lead0_buttons.DelA= FALSE; Lead0_buttons.ChAtr= TRUE; Lead0_buttons.ChAtrA= FALSE;
Lead0_buttons.ConsLR= FALSE;
Lead0_buttons.LcRef= FALSE; Lead0_buttons.Cancel= FALSE; Lead0_buttons.Rpt= FALSE;
};// set_buttons_lead0_subtr_manual
void set_buttons_lead0_subtr_auto()
{
Lead0_buttons.ConsLR_s = 1;
Lead0_buttons.Mark=TRUE;Lead0_buttons.Dmy=FALSE; Lead0_buttons.Auto= TRUE; Lead0_buttons.Subtr=TRUE; Lead0_buttons.Cmpt= TRUE;
Lead0_buttons.OvrApp= TRUE; Lead0_buttons.OvrLds= TRUE; Lead0_buttons.GlR =FALSE; Lead0_buttons.SetLB= TRUE;
Lead0_buttons.SetLE= TRUE; Lead0_buttons.DelLI= loc_interval_b[0].set || loc_interval_e[0].set;
Lead0_buttons.Isc= TRUE; Lead0_buttons.Rate_r= TRUE;
Lead0_buttons.Cnd= FALSE; Lead0_buttons.AxS= FALSE; Lead0_buttons.Atr= FALSE; Lead0_buttons.Exm= TRUE; Lead0_buttons.Move= FALSE;
Lead0_buttons.Del= FALSE; Lead0_buttons.DelA= TRUE; Lead0_buttons.ChAtr= FALSE; Lead0_buttons.ChAtrA= TRUE;
Lead0_buttons.ConsLR= FALSE;
Lead0_buttons.LcRef= FALSE; Lead0_buttons.Cancel= FALSE; Lead0_buttons.Rpt= FALSE;
};// set_buttons_lead0_subtr_auto
void set_buttons_lead0_unsubtr_auto()
{
Lead0_buttons.ConsLR_s = 1;
Lead0_buttons.Mark=TRUE;Lead0_buttons.Dmy=FALSE; Lead0_buttons.Auto= TRUE; Lead0_buttons.Subtr=TRUE; Lead0_buttons.Cmpt= TRUE;
Lead0_buttons.OvrApp= TRUE; Lead0_buttons.OvrLds= TRUE; Lead0_buttons.GlR =FALSE; Lead0_buttons.SetLB= TRUE;
Lead0_buttons.SetLE= TRUE; Lead0_buttons.DelLI= loc_interval_b[0].set || loc_interval_e[0].set;
Lead0_buttons.Isc= FALSE; Lead0_buttons.Rate_r= FALSE;
Lead0_buttons.Cnd= FALSE; Lead0_buttons.AxS= FALSE; Lead0_buttons.Atr= FALSE; Lead0_buttons.Exm= TRUE; Lead0_buttons.Move= FALSE;
Lead0_buttons.Del= FALSE; Lead0_buttons.DelA= TRUE; Lead0_buttons.ChAtr= FALSE; Lead0_buttons.ChAtrA= TRUE;
Lead0_buttons.ConsLR= FALSE;
Lead0_buttons.LcRef= FALSE; Lead0_buttons.Cancel= FALSE; Lead0_buttons.Rpt= FALSE;
};// set_buttons_lead0_unsubtr_auto
void set_buttons_lead0_conslr()
{
Lead0_buttons.Mark=TRUE;Lead0_buttons.Dmy=FALSE; Lead0_buttons.Auto= FALSE; Lead0_buttons.Subtr=FALSE; Lead0_buttons.Cmpt= TRUE;
Lead0_buttons.OvrApp= TRUE; Lead0_buttons.OvrLds= TRUE; Lead0_buttons.GlR =FALSE; Lead0_buttons.SetLB= TRUE;
Lead0_buttons.SetLE= TRUE; Lead0_buttons.DelLI= loc_interval_b[0].set || loc_interval_e[0].set;
Lead0_buttons.Isc= FALSE; Lead0_buttons.Rate_r= FALSE;
Lead0_buttons.Cnd= FALSE; Lead0_buttons.AxS= FALSE; Lead0_buttons.Atr= FALSE; Lead0_buttons.Exm= TRUE; Lead0_buttons.Move= FALSE;
Lead0_buttons.Del= FALSE; Lead0_buttons.DelA= FALSE; Lead0_buttons.ChAtr= FALSE; Lead0_buttons.ChAtrA= FALSE;
Lead0_buttons.ConsLR= Is_code(0,reference_act[0],0,0) || !status_consider_localref;
Lead0_buttons.LcRef= FALSE; Lead0_buttons.Cancel= FALSE; Lead0_buttons.Rpt= FALSE;
};// set_buttons_lead0_conslr
void update_marker(int leadx,long cal)
{
float v_isor, v_j80r, v_iso, v_j20, v_j80;
Marker[leadx].window = 2 * current_average_window_time;
Marker[leadx].NS=current_mean_smp;
get_average_M();
Marker[leadx].NL=current_nl; Marker[leadx].NR=current_nr;
v_iso = avr_in_avrbeat(leadx, Marker[leadx].nISO,Marker[leadx].NS);
v_j20 = avr_in_avrbeat(leadx,- (Marker[leadx].nJ+5),Marker[leadx].NS);
v_j80 = avr_in_avrbeat(leadx,- Marker[leadx].nJ80,Marker[leadx].NS);
if ( act_reference[leadx].set ){
v_isor = avr_in_avrbeat_r(leadx, act_ref_data[leadx].nISO,act_ref_data[leadx].NS);
v_j80r = avr_in_avrbeat_r(leadx,- act_ref_data[leadx].nJ80,act_ref_data[leadx].NS);
}
else {
v_isor=0.0;
v_j80r=v_j80-v_iso;
}
Marker[leadx].ST80 = mk_uv(v_j80 - v_iso);
Marker[leadx].STd = mk_uv(v_j80- v_iso - (v_j80r-v_isor ));
Marker[leadx].STsl = mk_uv(v_j80- v_j20);
Marker[leadx].ST_sub = mk_uv(data_raw[Marker[leadx].raw_index].sub_v[leadx]);
switch (leadx) {
case 0:
Marker[leadx].fine_ST80 = mk_uv(data_fin[Marker[leadx].fine_index].l0_ST80);
Marker[leadx].raw_ST80 = mk_uv(data_raw[Marker[leadx].raw_index].l0_ST80);
Marker[leadx].fine_ST20 = mk_uv(data_fin[Marker[leadx].fine_index].l0_ST20);
Marker[leadx].raw_ST20 = mk_uv(data_raw[Marker[leadx].raw_index].l0_ST20);
break;
case 1:
Marker[leadx].fine_ST80 = mk_uv(data_fin[Marker[leadx].fine_index].l1_ST80);
Marker[leadx].raw_ST80 = mk_uv(data_raw[Marker[leadx].raw_index].l1_ST80);
Marker[leadx].fine_ST20 = mk_uv(data_fin[Marker[leadx].fine_index].l1_ST20);
Marker[leadx].raw_ST20 = mk_uv(data_raw[Marker[leadx].raw_index].l1_ST20);
break;
case 2:
Marker[leadx].fine_ST80 = mk_uv(data_fin[Marker[leadx].fine_index].l2_ST80);
Marker[leadx].raw_ST80 = mk_uv(data_raw[Marker[leadx].raw_index].l2_ST80);
Marker[leadx].fine_ST20 = mk_uv(data_fin[Marker[leadx].fine_index].l2_ST20);
Marker[leadx].raw_ST20 = mk_uv(data_raw[Marker[leadx].raw_index].l2_ST20);
break;
}
} // end update_marker
void update_global_ref(int leadx, Bool iso_j, long cal)
{
global_ref[leadx].window=Marker[leadx].window;
global_ref[leadx].NS=Marker[leadx].NS;
global_ref[leadx].NL=Marker[leadx].NL;
global_ref[leadx].NR=Marker[leadx].NR;
if (iso_j ) {
global_ref[leadx].nISO=Marker[leadx].nISO;
global_ref[leadx].nJ=Marker[leadx].nJ;
global_ref[leadx].nJ80=Marker[leadx].nJ80;
}
global_ref[leadx].ST80=Marker[leadx].ST80;
global_ref[leadx].STd=Marker[leadx].STd;
global_ref[leadx].STsl=Marker[leadx].STsl;
global_ref[leadx].ST_sub=Marker[leadx].ST_sub;
global_ref[leadx].fine_ST80=Marker[leadx].fine_ST80;
global_ref[leadx].raw_ST80=Marker[leadx].raw_ST80;
global_ref[leadx].fine_ST20=Marker[leadx].fine_ST20;
global_ref[leadx].raw_ST20=Marker[leadx].raw_ST20;
} // end update_global_ref
void update_act_ann(int leadx, long indexx, Bool iso_j, long cal)
{
float v_isor, v_j80r, v_iso, v_j20, v_j80;
if (indexx >= 0 ) {
references[leadx][indexx].window=Marker[leadx].window;
references[leadx][indexx].NL=Marker[leadx].NL;
references[leadx][indexx].NR=Marker[leadx].NR;
references[leadx][indexx].NS=Marker[leadx].NS;
if (iso_j ) {
references[leadx][indexx].nISO=Marker[leadx].nISO;
references[leadx][indexx].nJ=Marker[leadx].nJ;
references[leadx][indexx].nJ80=Marker[leadx].nJ80;
}
v_iso = avr_in_avrbeat(leadx, references[leadx][indexx].nISO,references[leadx][indexx].NS);
v_j20 = avr_in_avrbeat(leadx,- (references[leadx][indexx].nJ+5),references[leadx][indexx].NS);
v_j80 = avr_in_avrbeat(leadx,- references[leadx][indexx].nJ80,references[leadx][indexx].NS);
if ( act_reference[leadx].set ){
v_isor = avr_in_avrbeat_r(leadx, act_ref_data[leadx].nISO,act_ref_data[leadx].NS);
v_j80r = avr_in_avrbeat_r(leadx,- act_ref_data[leadx].nJ80,act_ref_data[leadx].NS);
}
else { v_isor=0.0; v_j80r=v_j80-v_iso;
}
references[leadx][indexx].ST80 = mk_uv(v_j80 - v_iso);
references[leadx][indexx].STd = mk_uv(v_j80- v_iso - (v_j80r-v_isor ));
references[leadx][indexx].STsl = mk_uv(v_j80- v_j20);
references[leadx][indexx].ST_sub = mk_uv(data_raw[references[leadx][indexx].raw_index].sub_v[leadx]);
references[leadx][indexx].fine_ST80=Marker[leadx].fine_ST80;
references[leadx][indexx].raw_ST80=Marker[leadx].raw_ST80;
references[leadx][indexx].fine_ST20=Marker[leadx].fine_ST20;
references[leadx][indexx].raw_ST20=Marker[leadx].raw_ST20;
}
} // end update_act_ann
void set_marker_l(int leadx)
{
int vj;
Marker[leadx].fine_HR = data_fin[Marker[leadx].fine_index].HR;
Marker[leadx].nPB = data_fin[Marker[leadx].fine_index].nPB;
Marker[leadx].nPE = data_fin[Marker[leadx].fine_index].nPE;
Marker[leadx].nQ = data_fin[Marker[leadx].fine_index].nQ;
Marker[leadx].nISO = data_fin[Marker[leadx].fine_index].nISO;
Marker[leadx].nJ = data_fin[Marker[leadx].fine_index].nJ;
current_j_m= Marker[leadx].nJ;
current_iso_m= Marker[leadx].nISO;
vj = 20;
if ( ( Marker[leadx].fine_HR >= 100 ) && ( Marker[leadx].fine_HR < 110 )) vj=18;
if ( ( Marker[leadx].fine_HR >= 110 ) && ( Marker[leadx].fine_HR < 120 )) vj=16;
if ( Marker[leadx].fine_HR >= 120 ) vj=15;
Marker[leadx].nJ80 = Marker[leadx].nJ + vj;
Marker[leadx].nTB = data_fin[Marker[leadx].fine_index].nTB;
Marker[leadx].nTX = data_fin[Marker[leadx].fine_index].nTX;
Marker[leadx].nTE = data_fin[Marker[leadx].fine_index].nTE;
Marker[leadx].raw_HR = data_raw[Marker[leadx].raw_index].HR;
Marker[leadx].window = 2 * current_average_window_time;
Marker[leadx].NS=current_mean_smp;
Marker[leadx].ST_sub = mk_uv(data_raw[Marker[leadx].raw_index].sub_v[leadx]);
Marker[leadx].STd = mk_uv(0);
Marker[leadx].lead=leadx;
switch (leadx) {
case 0:
Marker[0].fine_ST80 = mk_uv(data_fin[Marker[0].fine_index].l0_ST80);
Marker[0].raw_ST80 = mk_uv(data_raw[Marker[0].raw_index].l0_ST80);
Marker[0].fine_ST20 = mk_uv(data_fin[Marker[0].fine_index].l0_ST20);
Marker[0].raw_ST20 = mk_uv(data_raw[Marker[0].raw_index].l0_ST20);
break;
case 1:
Marker[1].fine_ST80 = mk_uv(data_fin[Marker[1].fine_index].l1_ST80);
Marker[1].raw_ST80 = mk_uv(data_raw[Marker[1].raw_index].l1_ST80);
Marker[1].fine_ST20 = mk_uv(data_fin[Marker[1].fine_index].l1_ST20);
Marker[1].raw_ST20 = mk_uv(data_raw[Marker[1].raw_index].l1_ST20);
break;
case 2:
Marker[2].fine_ST80 = mk_uv(data_fin[Marker[2].fine_index].l2_ST80);
Marker[2].raw_ST80 = mk_uv(data_raw[Marker[2].raw_index].l2_ST80);
Marker[2].fine_ST20 = mk_uv(data_fin[Marker[2].fine_index].l2_ST20);
Marker[2].raw_ST20 = mk_uv(data_raw[Marker[2].raw_index].l2_ST20);
break;
} // end switch
if (last_set_all ) { Marker[0].set = FALSE; Marker[1].set = FALSE; Marker[2].set = FALSE;
reference_act[0]=-1; reference_act[1]=-1; reference_act[2]=-1; x_lead =TRUE;
switch (leadx) {
case 0: if (lead1_data) draw_grid_lead0(1);
if (lead2_data) draw_grid_lead0(2);
break;
case 1: draw_grid_lead0(0);
if (lead2_data) draw_grid_lead0(2);
break;
case 2:
draw_grid_lead0(0); draw_grid_lead0(1);
break; }
}
last_set_all= FALSE;
Marker[leadx].set= TRUE;
Marker[leadx].code1=-1;
data_mstime_index= data_fin[Marker[leadx].fine_index].index;
act_reference[0].change=FALSE;
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
data_new_m_read();
update_marker(leadx,1);
} // end set_marker_l
void set_marker_r(int leadx_op)
{
int vj;
Marker[0].fine_HR = data_fin[Marker[0].fine_index].HR;
Marker[0].nPB = data_fin[Marker[0].fine_index].nPB;
Marker[0].nPE = data_fin[Marker[0].fine_index].nPE;
Marker[0].nQ = data_fin[Marker[0].fine_index].nQ;
if (leadx_op == 2) {
if (current_j_m == 0)
Marker[0].nJ = data_fin[Marker[0].fine_index].nJ;
else
Marker[0].nJ=current_j_m;
if (current_iso_m == 0)
Marker[0].nISO = data_fin[Marker[0].fine_index].nISO;
else
Marker[0].nISO=current_iso_m;
}
else {
Marker[0].nISO = data_fin[Marker[0].fine_index].nISO;
Marker[0].nJ = data_fin[Marker[0].fine_index].nJ;
current_j_m=Marker[0].nJ;
current_iso_m=Marker[0].nISO;
}
vj = 20;
if ( ( Marker[0].fine_HR >= 100 ) && ( Marker[0].fine_HR < 110 )) vj=18;
if ( ( Marker[0].fine_HR >= 110 ) && ( Marker[0].fine_HR < 120 )) vj=16;
if ( Marker[0].fine_HR >= 120 ) vj=15;
Marker[0].nJ80 = Marker[0].nJ + vj;
Marker[0].nTB = data_fin[Marker[0].fine_index].nTB;
Marker[0].nTX = data_fin[Marker[0].fine_index].nTX;
Marker[0].nTE = data_fin[Marker[0].fine_index].nTE;
Marker[0].raw_HR = data_raw[Marker[0].raw_index].HR;
Marker[0].window = 2 * current_average_window_time;
Marker[0].NS = current_mean_smp;
Marker[1].copy_ref(Marker[0]); Marker[2].copy_ref(Marker[0]);
Marker[1].lead=1; Marker[2].lead=2;
Marker[0].fine_ST80 = mk_uv(data_fin[Marker[0].fine_index].l0_ST80);
Marker[1].fine_ST80 = mk_uv(data_fin[Marker[0].fine_index].l1_ST80);
Marker[2].fine_ST80 = mk_uv(data_fin[Marker[0].fine_index].l2_ST80);
Marker[0].raw_ST80 = mk_uv(data_raw[Marker[0].raw_index].l0_ST80);
Marker[1].raw_ST80 = mk_uv(data_raw[Marker[0].raw_index].l1_ST80);
Marker[2].raw_ST80 = mk_uv(data_raw[Marker[0].raw_index].l2_ST80);
Marker[0].ST_sub = mk_uv(data_raw[Marker[0].raw_index].sub_v[0]);
Marker[1].ST_sub = mk_uv(data_raw[Marker[0].raw_index].sub_v[1]);
Marker[2].ST_sub = mk_uv(data_raw[Marker[0].raw_index].sub_v[2]);
Marker[0].fine_ST20 = mk_uv(data_fin[Marker[0].fine_index].l0_ST20);
Marker[1].fine_ST20 = mk_uv(data_fin[Marker[0].fine_index].l1_ST20);
Marker[2].fine_ST20 = mk_uv(data_fin[Marker[0].fine_index].l2_ST20);
Marker[0].raw_ST20 = mk_uv(data_raw[Marker[0].raw_index].l0_ST20);
Marker[1].raw_ST20 = mk_uv(data_raw[Marker[0].raw_index].l1_ST20);
Marker[2].raw_ST20 = mk_uv(data_raw[Marker[0].raw_index].l2_ST20);
Marker[0].STd = mk_uv(0); Marker[1].STd = mk_uv(0); Marker[2].STd = mk_uv(0);
Marker[0].set= TRUE; Marker[1].set = lead1_data; Marker[2].set=lead2_data;
Marker[0].code1=-1; Marker[1].code1=-1; Marker[2].code1=-1;
data_mstime_index= data_fin[Marker[0].fine_index].index;
data_new_m_read();
update_marker(0,2);
if (Marker[1].set ) {update_marker(1,1003); }
if (Marker[2].set ) {update_marker(2,2004); }
act_reference[0].change=FALSE;
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
} // end set_marker_r
void new_global_reference(int cal)
{
long i;
float off_r_0, off_r_1, off_r_2;
off_r_0 = data_raw[Marker[0].raw_index].l0_ST80;
off_r_1 = data_raw[Marker[1].raw_index].l1_ST80;
off_r_2 = data_raw[Marker[2].raw_index].l2_ST80;
for (i=0; i <= raw_last_index; i++ ){
data_raw[i].l0_ST80 = data_raw[i].l0_ST80 - off_r_0;
data_raw[i].l0_ST20 = data_raw[i].l0_ST20 - off_r_0;
data_raw[i].l1_ST80 = data_raw[i].l1_ST80 - off_r_1;
data_raw[i].l1_ST20 = data_raw[i].l1_ST20 - off_r_1;
data_raw[i].l2_ST80 = data_raw[i].l2_ST80 - off_r_2;
data_raw[i].l2_ST20 = data_raw[i].l2_ST20 - off_r_2;
data_raw[i].lin_v[0] = 0.; data_raw[i].lin_v[1] = 0.; data_raw[i].lin_v[2] = 0.;
data_raw[i].sub_v[0] = 0.; data_raw[i].sub_v[1] = 0.; data_raw[i].sub_v[2] = 0.;
}
for (i=0; i <= fin_last_index; i++ ){
data_fin[i].l0_ST80 = data_fin[i].l0_ST80 - off_r_0;
data_fin[i].l0_ST20 = data_fin[i].l0_ST20 - off_r_0;
data_fin[i].l1_ST80 = data_fin[i].l1_ST80 - off_r_1;
data_fin[i].l1_ST20 = data_fin[i].l1_ST20 - off_r_1;
data_fin[i].l2_ST80 = data_fin[i].l2_ST80 - off_r_2;
data_fin[i].l2_ST20 = data_fin[i].l2_ST20 - off_r_2;
}
} // end new_global_reference(void)
void sub_op0_start(void)
{
if (!repeat_set ) Lead0_op_begin_status.copy_button_status(Lead0_buttons);
switch (Lead0_operation) {
case 0: return;
case 1:
allow_l0=TRUE;
set_buttons_lead0_reset_all(); if (!repeat_set ) Lead0_buttons.Rpt= TRUE; set_buttons_lead0();
break;
case 9:
allow_l0=TRUE;
set_buttons_lead0_reset_all(); set_buttons_lead0();
break;
}
}; // sub_op0_start
void sub_op0_exec(void)
{
long r_i;
int del_code1, del_code2, ii;
long i_r, end_i, l_b, l_e;
long GR_index,act_ind, act_ind_r;
Bool no_gr1, test, test1;
Bool refresh_all =FALSE;
Bool no_other, no_gr2, no_other2;
long l_l_b, l_l_e;
Bool refresh;
refresh=FALSE; x_lead=FALSE;
switch (Lead0_operation) {
case 0: return;
case 1:
if (IS_free(0, click_l0.raw,1)) {
Marker[0].set=TRUE;
Marker[0].raw_index=click_l0.raw; Marker[0].fine_index=click_l0.fine;
allow_l0=FALSE;
set_marker_l(0);
draw_grid_lead0(0);
show_data(0, x_lead, TRUE);
if (repeat_set ) {
allow_l0=TRUE;
set_buttons_lead0_reset_all(); set_buttons_lead0();
}
else {
Lead0_operation=0;
Lead0_buttons.copy_button_status(Lead0_op_begin_status);
set_buttons_lead0();
}
}
else {
Lead0_operation=0;
Lead0_buttons.copy_button_status(Lead0_op_begin_status);
set_buttons_lead0();
}
break;
case 9:
refresh_all=FALSE;
if ( references_index[0] > -1 ) {
for (r_i=0; (r_i < references_index[0] ) && ( click_l0.raw > references[0][r_i].raw_index); r_i++);
if ( click_l0.raw != references[0][r_i].raw_index ) {
if ((r_i <= references_index[0] ) && (r_i > 0 )){
if ( ( data_raw[click_l0.raw].index-
data_raw[ references[0][r_i-1].raw_index].index ) <
( data_raw[ references[0][r_i].raw_index].index -
data_raw[click_l0.raw].index) ) r_i=r_i-1;
}
}
if ( abs(click_l0.x - Coor_x_l0( data_raw[ references[0][r_i].raw_index].index-TimeToIndex(diagram_time_begin_lead))) <= 7 ) {
if ( Is_code(0,r_i,4,0) )
if ( Is_prop_mode(0) ) last_set_all = TRUE;
if ((! Is_code(0,r_i,4,0) ) OR
( Is_prop_mode(0) &&
Is_code(0,r_i,4,0))) {
if (last_set_all ) { Marker[1].set=FALSE; Marker[2].set=FALSE; refresh_all=TRUE;
reference_act[1]=-1; reference_act[2] =-1; last_set_all=FALSE; x_lead=TRUE; }
Marker[0].copy_ref( references[0][r_i]);
Marker[0].set=TRUE;
current_j_m=Marker[0].nJ;
current_iso_m=Marker[0].nISO;
reference_act[0]=r_i;
data_mstime_index= data_fin[Marker[0].fine_index].index;
act_reference[0].change=FALSE;
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
data_new_m_read();
update_marker(0,190);
}
if (! (status_consider_localref) && Is_code(0,r_i,0,0) ) {
act_ref_data[0].copy_ref(references[0][reference_act[0]]);
act_reference[0].set=TRUE;
act_reference[0].change=FALSE;
act_reference[0].typ=2; // local
act_reference[0].index=reference_act[0];
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
reference_mstime_index= data_fin[act_ref_data[0].fine_index].index;
data_new_r_read();
get_average_R();
update_marker(0,193);
}
if (Is_code(0,r_i,4,0) ) { // dy
if (Is_prop_mode(0) ) {
last_set_all=TRUE;
if ( references_index[1] > -1){
for (r_i=0; (r_i <= references_index[1] ) && ( references[0][reference_act[0]].raw_index > references[1][r_i].raw_index); r_i++);
if ( (r_i <= references_index[1] ) && ( r_i > -1 )) {
if ( references[0][reference_act[0]].raw_index == references[1][r_i].raw_index ) {
Marker[1].copy_ref( references[1][r_i]);
Marker[1].set=TRUE;
reference_act[1]=r_i;
update_marker(1,100190); refresh_all=TRUE;
}}
} // end set lead1
if ( references_index[2] > -1){
for (r_i=0; (r_i <= references_index[2] ) && ( references[0][reference_act[0]].raw_index > references[2][r_i].raw_index); r_i++);
if ( (r_i <= references_index[2] ) && ( r_i > -1 )) {
if ( references[0][reference_act[0]].raw_index == references[2][r_i].raw_index ) {
Marker[2].copy_ref( references[2][r_i]); Marker[2].set=TRUE; reference_act[2]=r_i;
update_marker(2,200190); refresh_all=TRUE;
}}
}
}}
draw_grid_lead0(0);
if (refresh_all && lead1_data ) draw_grid_lead0(1);
if (refresh_all && lead2_data ) draw_grid_lead0(2);
show_data(0, x_lead,TRUE);
} }
if (fast0_center) break;
Lead0_op_begin_status.ConsLR= Is_code(0,reference_act[0],0,0) || !status_consider_localref;
Lead0_buttons.copy_button_status(Lead0_op_begin_status);
set_buttons_lead0();
Lead0_operation=0;
break;
}
refresh=FALSE;
}; // sub_op0_exec
void sub_op0_cancel(void)
{
Lead0_buttons.copy_button_status(Lead0_op_begin_status);
repeat_set =FALSE;
switch (Lead0_operation) {
case 0: return;
case 1:
allow_l0=FALSE;
break;
case 9:
allow_l0=FALSE;
break;
}
Lead0_buttons.Cancel=FALSE;set_buttons_lead0();
Lead0_operation=0;
}; // sub_op0_cancel
//**
void set_buttons_lead1()
{
Bool selected;
Bool loc_int_set;
Bool sel_lr;
if (Lead1_buttons.Auto_s == 1)
{ status_manual_mode1=TRUE; }
else
{ status_manual_mode1=FALSE;}
if (Lead1_buttons.Subtr_s == 1)
{ xv_set(Sem_0_l_bw1.l_b_Subtr1, PANEL_LABEL_STRING, "Subtr", NULL);status_unsubtracted1 =TRUE; }
else
{ xv_set(Sem_0_l_bw1.l_b_Subtr1, PANEL_LABEL_STRING, "UnSubtr", NULL); status_unsubtracted1 =FALSE;}
if (Lead1_buttons.OvrApp_s == 1)
{xv_set(Sem_0_l_bw1.l_b_OvrApp1, PANEL_LABEL_STRING, "OvrApp", NULL); ovr1_app = FALSE;}
else
{xv_set(Sem_0_l_bw1.l_b_OvrApp1, PANEL_LABEL_STRING, "UnOvAp", NULL); ovr1_app = TRUE;}
if (Lead1_buttons.ConsLR ){
if (Lead1_buttons.ConsLR_s == 1)
{ xv_set(Sem_0_l_bw1.l_b_ConsLR1, PANEL_LABEL_STRING, "ConsLR", NULL); status_consider_localref1 =TRUE;
sel_lr=Is_code(1,reference_act[1],0,0) && status_manual_mode1 && status_unsubtracted1;}
else
{xv_set(Sem_0_l_bw1.l_b_ConsLR1, PANEL_LABEL_STRING, "ConsGR", NULL); status_consider_localref1 =FALSE;
sel_lr=TRUE;}
}
selected = reference_act[1] >= 0;
if ( status_manual_mode1 && !status_unsubtracted1 && Is_code(1,reference_act[1],0,0) ) selected=FALSE;
loc_int_set = loc_interval_b[1].set && loc_interval_e[1].set;
xv_set(Sem_0_l_bw1.l_b_Mark1, PANEL_INACTIVE,! Lead1_buttons.Mark,NULL);
xv_set(Sem_0_l_bw1.l_b_Subtr1, PANEL_INACTIVE,! Lead1_buttons.Subtr,NULL);
xv_set(Sem_0_l_bw1.l_b_OvrApp1, PANEL_INACTIVE,! Lead1_buttons.OvrApp,NULL);
xv_set(Sem_0_l_bw1.l_b_OvrLds_menu1, PANEL_INACTIVE,! Lead1_buttons.OvrLds,NULL);
xv_set(Sem_0_l_bw1.l_b_Exm1, PANEL_INACTIVE,! Lead1_buttons.Exm,NULL);
xv_set(Sem_0_l_bw1.l_b_ConsLR1, PANEL_INACTIVE,! (Lead1_buttons.ConsLR && sel_lr),NULL);
} // set_buttons_lead1
void set_buttons_lead1_start()
{
Lead1_buttons.Auto_s = 1; Lead1_buttons.Subtr_s=1; Lead1_buttons.OvrApp_s=1; Lead1_buttons.ConsLR_s=1;
Lead1_buttons.Mark=TRUE;Lead1_buttons.Dmy=FALSE; Lead1_buttons.Auto= FALSE; Lead1_buttons.Subtr=FALSE; Lead1_buttons.Cmpt= TRUE;
Lead1_buttons.OvrApp= TRUE; Lead1_buttons.OvrLds= TRUE; Lead1_buttons.GlR =TRUE; Lead1_buttons.SetLB= FALSE;
Lead1_buttons.SetLE= FALSE; Lead1_buttons.DelLI= FALSE;
Lead1_buttons.Isc= FALSE; Lead1_buttons.Rate_r= FALSE;
Lead1_buttons.Cnd= FALSE; Lead1_buttons.AxS= FALSE; Lead1_buttons.Atr= FALSE; Lead1_buttons.Exm= FALSE; Lead1_buttons.Move= FALSE;
Lead1_buttons.Del= FALSE; Lead1_buttons.DelA= FALSE; Lead1_buttons.ChAtr= FALSE; Lead1_buttons.ChAtrA= FALSE;
Lead1_buttons.ConsLR= FALSE;
Lead1_buttons.LcRef= FALSE; Lead1_buttons.Cancel= FALSE; Lead1_buttons.Rpt= FALSE;
};// set_buttons_lead1_start
void set_buttons_lead1_reset_all()
{
Lead1_buttons.Mark=FALSE; Lead1_buttons.Dmy=FALSE; Lead1_buttons.Auto= FALSE; Lead1_buttons.Subtr=FALSE; Lead1_buttons.Cmpt= TRUE;
Lead1_buttons.OvrApp= TRUE; Lead1_buttons.OvrLds= TRUE; Lead1_buttons.GlR =FALSE; Lead1_buttons.SetLB= FALSE;
Lead1_buttons.SetLE= FALSE; Lead1_buttons.DelLI= FALSE; Lead1_buttons.Isc= FALSE; Lead1_buttons.Rate_r= FALSE;
Lead1_buttons.Cnd= FALSE; Lead1_buttons.AxS= FALSE; Lead1_buttons.Atr= FALSE; Lead1_buttons.Exm= FALSE; Lead1_buttons.Move= FALSE;
Lead1_buttons.Del= FALSE; Lead1_buttons.DelA= FALSE; Lead1_buttons.ChAtr= FALSE; Lead1_buttons.ChAtrA= FALSE;
Lead1_buttons.ConsLR= FALSE;
Lead1_buttons.LcRef= FALSE; Lead1_buttons.Cancel= TRUE; Lead1_buttons.Rpt= FALSE;
};// set_buttons_lead1_reset_all
void set_buttons_lead1_setGR()
{
Lead1_buttons.Auto_s = 1;
Lead1_buttons.Subtr_s= 1;
Lead1_buttons.ConsLR_s = 1;
Lead1_buttons.Mark=TRUE;Lead1_buttons.Dmy=TRUE; Lead1_buttons.Auto= TRUE; Lead1_buttons.Subtr=TRUE; Lead1_buttons.Cmpt= TRUE;
Lead1_buttons.OvrApp= TRUE; Lead1_buttons.OvrLds= TRUE; Lead1_buttons.GlR =TRUE; Lead1_buttons.SetLB= TRUE;
Lead1_buttons.SetLE= TRUE; Lead1_buttons.DelLI= loc_interval_b[1].set || loc_interval_e[1].set;
Lead1_buttons.Isc= FALSE; Lead1_buttons.Rate_r= FALSE;
Lead1_buttons.Cnd= TRUE; Lead1_buttons.AxS= TRUE; Lead1_buttons.Atr= FALSE; Lead1_buttons.Exm= TRUE; Lead1_buttons.Move= TRUE;
Lead1_buttons.Del= TRUE; Lead1_buttons.DelA= FALSE; Lead1_buttons.ChAtr= FALSE; Lead1_buttons.ChAtrA= FALSE;
Lead1_buttons.ConsLR= Is_code(1,reference_act[1],0,0) || !status_consider_localref1;
Lead1_buttons.LcRef= TRUE; Lead1_buttons.Cancel= FALSE; Lead1_buttons.Rpt= FALSE;
};// set_buttons_lead1_setGR
void set_buttons_lead1_unsubtr_manual()
{
Lead1_buttons.ConsLR_s = 1;
Lead1_buttons.Mark=TRUE;Lead1_buttons.Dmy=TRUE; Lead1_buttons.Auto= TRUE; Lead1_buttons.Subtr=TRUE; Lead1_buttons.Cmpt= TRUE;
Lead1_buttons.OvrApp= TRUE; Lead1_buttons.OvrLds= TRUE; Lead1_buttons.GlR =TRUE; Lead1_buttons.SetLB= TRUE;
Lead1_buttons.SetLE= TRUE; Lead1_buttons.DelLI= loc_interval_b[1].set || loc_interval_e[1].set;
Lead1_buttons.Isc= FALSE; Lead1_buttons.Rate_r= FALSE;
Lead1_buttons.Cnd= TRUE; Lead1_buttons.AxS= TRUE; Lead1_buttons.Atr= FALSE; Lead1_buttons.Exm= TRUE; Lead1_buttons.Move= TRUE;
Lead1_buttons.Del= TRUE; Lead1_buttons.DelA= FALSE; Lead1_buttons.ChAtr= FALSE; Lead1_buttons.ChAtrA= FALSE;
Lead1_buttons.ConsLR= Is_code(1,reference_act[1],0,0) || !status_consider_localref1;
Lead1_buttons.LcRef= TRUE; Lead1_buttons.Cancel= FALSE; Lead1_buttons.Rpt= FALSE;
};// set_buttons_lead1_unsubtr_manual
void set_buttons_lead1_subtr_manual()
{
Lead1_buttons.ConsLR_s = 1;
Lead1_buttons.Mark=TRUE;Lead1_buttons.Dmy=FALSE; Lead1_buttons.Auto= TRUE; Lead1_buttons.Subtr=TRUE; Lead1_buttons.Cmpt= TRUE;
Lead1_buttons.OvrApp= TRUE; Lead1_buttons.OvrLds= TRUE; Lead1_buttons.GlR =FALSE; Lead1_buttons.SetLB= TRUE;
Lead1_buttons.SetLE= TRUE; Lead1_buttons.DelLI= loc_interval_b[1].set || loc_interval_e[1].set;
Lead1_buttons.Isc= FALSE; Lead1_buttons.Rate_r= FALSE;
Lead1_buttons.Cnd= FALSE; Lead1_buttons.AxS= FALSE; Lead1_buttons.Atr= TRUE; Lead1_buttons.Exm= TRUE; Lead1_buttons.Move= TRUE;
Lead1_buttons.Del= TRUE; Lead1_buttons.DelA= FALSE; Lead1_buttons.ChAtr= TRUE; Lead1_buttons.ChAtrA= FALSE;
Lead1_buttons.ConsLR= FALSE;
Lead1_buttons.LcRef= FALSE; Lead1_buttons.Cancel= FALSE; Lead1_buttons.Rpt= FALSE;
};// set_buttons_lead1_subtr_manual
void set_buttons_lead1_subtr_auto()
{
Lead1_buttons.ConsLR_s = 1;
Lead1_buttons.Mark=TRUE;Lead1_buttons.Dmy=FALSE; Lead1_buttons.Auto= TRUE; Lead1_buttons.Subtr=TRUE; Lead1_buttons.Cmpt= TRUE;
Lead1_buttons.OvrApp= TRUE; Lead1_buttons.OvrLds= TRUE; Lead1_buttons.GlR =FALSE; Lead1_buttons.SetLB= TRUE;
Lead1_buttons.SetLE= TRUE; Lead1_buttons.DelLI= loc_interval_b[1].set || loc_interval_e[1].set;
Lead1_buttons.Isc= TRUE; Lead1_buttons.Rate_r= TRUE;
Lead1_buttons.Cnd= FALSE; Lead1_buttons.AxS= FALSE; Lead1_buttons.Atr= FALSE; Lead1_buttons.Exm= TRUE; Lead1_buttons.Move= FALSE;
Lead1_buttons.Del= FALSE; Lead1_buttons.DelA= TRUE; Lead1_buttons.ChAtr= FALSE; Lead1_buttons.ChAtrA= TRUE;
Lead1_buttons.ConsLR= FALSE;
Lead1_buttons.LcRef= FALSE; Lead1_buttons.Cancel= FALSE; Lead1_buttons.Rpt= FALSE;
};// set_buttons_lead1_subtr_auto
void set_buttons_lead1_unsubtr_auto()
{
Lead1_buttons.ConsLR_s = 1;
Lead1_buttons.Mark=TRUE;Lead1_buttons.Dmy=FALSE; Lead1_buttons.Auto= TRUE; Lead1_buttons.Subtr=TRUE; Lead1_buttons.Cmpt= TRUE;
Lead1_buttons.OvrApp= TRUE; Lead1_buttons.OvrLds= TRUE; Lead1_buttons.GlR =FALSE; Lead1_buttons.SetLB= TRUE;
Lead1_buttons.SetLE= TRUE; Lead1_buttons.DelLI= loc_interval_b[1].set || loc_interval_e[1].set;
Lead1_buttons.Isc= FALSE; Lead1_buttons.Rate_r= FALSE;
Lead1_buttons.Cnd= FALSE; Lead1_buttons.AxS= FALSE; Lead1_buttons.Atr= FALSE; Lead1_buttons.Exm= TRUE; Lead1_buttons.Move= FALSE;
Lead1_buttons.Del= FALSE; Lead1_buttons.DelA= TRUE; Lead1_buttons.ChAtr= FALSE; Lead1_buttons.ChAtrA= TRUE;
Lead1_buttons.ConsLR= FALSE;
Lead1_buttons.LcRef= FALSE; Lead1_buttons.Cancel= FALSE; Lead1_buttons.Rpt= FALSE;
};// set_buttons_lead1_unsubtr_auto
void set_buttons_lead1_conslr()
{
Lead1_buttons.Mark=TRUE;Lead1_buttons.Dmy=FALSE; Lead1_buttons.Auto= FALSE; Lead1_buttons.Subtr=FALSE; Lead1_buttons.Cmpt= TRUE;
Lead1_buttons.OvrApp= TRUE; Lead1_buttons.OvrLds= TRUE; Lead1_buttons.GlR =FALSE; Lead1_buttons.SetLB= TRUE;
Lead1_buttons.SetLE= TRUE; Lead1_buttons.DelLI= loc_interval_b[1].set || loc_interval_e[1].set;
Lead1_buttons.Isc= FALSE; Lead1_buttons.Rate_r= FALSE;
Lead1_buttons.Cnd= FALSE; Lead1_buttons.AxS= FALSE; Lead1_buttons.Atr= FALSE; Lead1_buttons.Exm= TRUE; Lead1_buttons.Move= FALSE;
Lead1_buttons.Del= FALSE; Lead1_buttons.DelA= FALSE; Lead1_buttons.ChAtr= FALSE; Lead1_buttons.ChAtrA= FALSE;
Lead1_buttons.ConsLR= Is_code(1,reference_act[1],0,0) || !status_consider_localref1;
Lead1_buttons.LcRef= FALSE; Lead1_buttons.Cancel= FALSE; Lead1_buttons.Rpt= FALSE;
};// set_buttons_lead1_conslr
void sub_op1_start(void)
{
if (!repeat_set1 ) Lead1_op_begin_status.copy_button_status(Lead1_buttons);
switch (Lead1_operation) {
case 0: return;
case 1:
allow_l1=TRUE;
set_buttons_lead1_reset_all(); if (!repeat_set1 ) Lead1_buttons.Rpt= TRUE; set_buttons_lead1();
break;
case 9:
allow_l1=TRUE;
set_buttons_lead1_reset_all(); set_buttons_lead1();
break;
}
}; // sub_op1_start
void sub_op1_exec(void)
{
long r_i;
int del_code1, del_code2, ii;
long i_r, end_i, l_b, l_e;
long GR_index,act_ind, act_ind_r;
Bool no_gr1, test, test1;
Bool refresh_all =FALSE;
Bool no_other, no_other2, no_gr2;
long l_l_b, l_l_e;
Bool refresh=FALSE;
refresh=FALSE; x_lead=FALSE;
switch (Lead1_operation) {
case 0: return;
case 1:
if (IS_free(1, click_l1.raw,1)) {
Marker[1].set=TRUE;
Marker[1].raw_index=click_l1.raw; Marker[1].fine_index=click_l1.fine;
allow_l1=FALSE;
set_marker_l(1);
draw_grid_lead0(1);
show_data(1, x_lead, TRUE);
if (repeat_set1 ) {
allow_l1=TRUE;
set_buttons_lead1_reset_all(); set_buttons_lead1();
}
else {
Lead1_operation=0;
Lead1_buttons.copy_button_status(Lead1_op_begin_status);
set_buttons_lead1();
}
}
else {
Lead1_operation=0;
Lead1_buttons.copy_button_status(Lead1_op_begin_status);
set_buttons_lead1();
}
break;
case 9: // set examine
refresh_all =FALSE;
if ( references_index[1] > -1 ) {
for (r_i=0; (r_i < references_index[1] ) && ( click_l1.raw > references[1][r_i].raw_index); r_i++);
if ( click_l1.raw != references[1][r_i].raw_index ) {
// find nearest ann
if ((r_i <= references_index[1] ) && (r_i > 0 )){
if ( ( data_raw[click_l1.raw].index-
data_raw[ references[1][r_i-1].raw_index].index ) <
( data_raw[ references[1][r_i].raw_index].index -
data_raw[click_l1.raw].index) ) r_i=r_i-1;
}
}
if ( abs(click_l1.x - Coor_x_l0( data_raw[ references[1][r_i].raw_index].index-TimeToIndex(diagram_time_begin_lead))) <= 7 ) {
if ( Is_code(1,r_i,4,0) )
if ( Is_prop_mode(1) ) last_set_all = TRUE;
if ((! Is_code(1,r_i,4,0) ) OR
( Is_prop_mode(1) &&
Is_code(1,r_i,4,0))) {
if (last_set_all ) { Marker[0].set=FALSE; Marker[2].set=FALSE; refresh_all =TRUE;
reference_act[0]=-1; reference_act[2] =-1; last_set_all=FALSE; x_lead=TRUE; }
Marker[1].copy_ref( references[1][r_i]);
Marker[1].set=TRUE;
current_j_m=Marker[1].nJ;
current_iso_m=Marker[1].nISO;
reference_act[1]=r_i;
data_mstime_index= data_fin[Marker[1].fine_index].index;
act_reference[0].change=FALSE;
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
data_new_m_read();
update_marker(1,190);
}
if (! (status_consider_localref1) && Is_code(1,r_i,0,0) ) {
act_ref_data[1].copy_ref(references[1][reference_act[1]]);
act_reference[1].set=TRUE;
act_reference[0].change=FALSE;
act_reference[1].typ=2; // local
act_reference[1].index=reference_act[1];
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
reference_mstime_index= data_fin[act_ref_data[1].fine_index].index;
data_new_r_read();
get_average_R();
update_marker(1,193);
}
if (Is_code(1,r_i,4,0) ) { // dy
if( Is_prop_mode(1) ) {
last_set_all=TRUE;
if ( references_index[0] > -1){
for (r_i=0; (r_i <= references_index[0] ) && ( references[1][reference_act[1]].raw_index > references[0][r_i].raw_index); r_i++);
if ( (r_i <= references_index[0] ) && ( r_i > -1 )) {
if ( references[1][reference_act[1]].raw_index == references[0][r_i].raw_index ) {
Marker[0].copy_ref( references[0][r_i]);
Marker[0].set=TRUE;
reference_act[0]=r_i;
update_marker(0,100190); refresh_all=TRUE;
}}
}
if ( references_index[2] > -1){
for (r_i=0; (r_i <= references_index[2] ) && ( references[1][reference_act[1]].raw_index > references[2][r_i].raw_index); r_i++);
if ( (r_i <= references_index[2] ) && ( r_i > -1 )) {
if ( references[1][reference_act[1]].raw_index == references[2][r_i].raw_index ) {
Marker[2].copy_ref( references[2][r_i]); Marker[2].set=TRUE; reference_act[2]=r_i;
update_marker(2,200190); refresh_all=TRUE;
}}
}
}}
if ( refresh_all) draw_grid_lead0(0);
draw_grid_lead0(1);
if ( refresh_all && lead2_data ) draw_grid_lead0(2);
show_data(1, x_lead, TRUE);
} }
if (fast1_center) break;
Lead1_op_begin_status.ConsLR= Is_code(1,reference_act[1],0,0) || !status_consider_localref1;
Lead1_buttons.copy_button_status(Lead1_op_begin_status);
set_buttons_lead1();
Lead1_operation=0;
break;
}
refresh = FALSE;
}; // sub_op1_exec
void sub_op1_cancel(void)
{
Lead1_buttons.copy_button_status(Lead1_op_begin_status);
repeat_set1=FALSE;
switch (Lead1_operation) {
case 0: return;
case 1:
allow_l1=FALSE;
break;
case 9: // set examine
allow_l1=FALSE;
break;
}
Lead1_buttons.Cancel=FALSE;set_buttons_lead1();
Lead1_operation=0;
}; // sub_op1_cancel
//**
void set_buttons_lead2()
{
Bool selected;
Bool loc_int_set;
Bool sel_lr;
if (Lead2_buttons.Auto_s == 1)
{ status_manual_mode2=TRUE; }
else
{ status_manual_mode2=FALSE;}
if (Lead2_buttons.Subtr_s == 1)
{ xv_set(Sem_0_l_bw2.l_b_Subtr2, PANEL_LABEL_STRING, "Subtr", NULL);status_unsubtracted2 =TRUE; }
else
{ xv_set(Sem_0_l_bw2.l_b_Subtr2, PANEL_LABEL_STRING, "UnSubtr", NULL); status_unsubtracted2 =FALSE;}
if (Lead2_buttons.OvrApp_s == 1)
{xv_set(Sem_0_l_bw2.l_b_OvrApp2, PANEL_LABEL_STRING, "OvrApp", NULL); ovr2_app = FALSE;}
else
{xv_set(Sem_0_l_bw2.l_b_OvrApp2, PANEL_LABEL_STRING, "UnOvAp", NULL); ovr2_app = TRUE;}
if (Lead2_buttons.ConsLR ){
if (Lead2_buttons.ConsLR_s == 1)
{ xv_set(Sem_0_l_bw2.l_b_ConsLR2, PANEL_LABEL_STRING, "ConsLR", NULL); status_consider_localref2 =TRUE;
sel_lr=Is_code(2,reference_act[2],0,0) && status_manual_mode2 && status_unsubtracted2;}
else
{xv_set(Sem_0_l_bw2.l_b_ConsLR2, PANEL_LABEL_STRING, "ConsGR", NULL); status_consider_localref2 =FALSE;
sel_lr=TRUE;}
}
selected = reference_act[2] >= 0;
if ( status_manual_mode2 && !status_unsubtracted2 && Is_code(2,reference_act[2],0,0) ) selected=FALSE;
loc_int_set = loc_interval_b[2].set && loc_interval_e[2].set;
xv_set(Sem_0_l_bw2.l_b_Mark2, PANEL_INACTIVE,! Lead2_buttons.Mark,NULL);
xv_set(Sem_0_l_bw2.l_b_Subtr2, PANEL_INACTIVE,! Lead2_buttons.Subtr,NULL);
xv_set(Sem_0_l_bw2.l_b_OvrApp2, PANEL_INACTIVE,! Lead2_buttons.OvrApp,NULL);
xv_set(Sem_0_l_bw2.l_b_OvrLds_menu2, PANEL_INACTIVE,! Lead2_buttons.OvrLds,NULL);
xv_set(Sem_0_l_bw2.l_b_Exm2, PANEL_INACTIVE,! Lead2_buttons.Exm,NULL);
xv_set(Sem_0_l_bw2.l_b_ConsLR2, PANEL_INACTIVE,! (Lead2_buttons.ConsLR && sel_lr),NULL);
};// set_buttons_lead2
void set_buttons_lead2_start()
{
Lead2_buttons.Auto_s = 1; Lead2_buttons.Subtr_s=1; Lead2_buttons.OvrApp_s=1; Lead2_buttons.ConsLR_s=1;
Lead2_buttons.Mark=TRUE;Lead2_buttons.Dmy=FALSE; Lead2_buttons.Auto= FALSE; Lead2_buttons.Subtr=FALSE; Lead2_buttons.Cmpt= TRUE;
Lead2_buttons.OvrApp= TRUE; Lead2_buttons.OvrLds= TRUE; Lead2_buttons.GlR =TRUE; Lead2_buttons.SetLB= FALSE;
Lead2_buttons.SetLE= FALSE; Lead2_buttons.DelLI= FALSE;
Lead2_buttons.Isc= FALSE; Lead2_buttons.Rate_r= FALSE;
Lead2_buttons.Cnd= FALSE; Lead2_buttons.AxS= FALSE; Lead2_buttons.Atr= FALSE; Lead2_buttons.Exm= FALSE; Lead2_buttons.Move= FALSE;
Lead2_buttons.Del= FALSE; Lead2_buttons.DelA= FALSE; Lead2_buttons.ChAtr= FALSE; Lead2_buttons.ChAtrA= FALSE;
Lead2_buttons.ConsLR= FALSE;
Lead2_buttons.LcRef= FALSE; Lead2_buttons.Cancel= FALSE; Lead2_buttons.Rpt= FALSE;
};// set_buttons_lead2_start
void set_buttons_lead2_reset_all()
{
Lead2_buttons.Mark=FALSE; Lead2_buttons.Dmy=FALSE; Lead2_buttons.Auto= FALSE; Lead2_buttons.Subtr=FALSE; Lead2_buttons.Cmpt= TRUE;
Lead2_buttons.OvrApp= TRUE; Lead2_buttons.OvrLds= TRUE; Lead2_buttons.GlR =FALSE; Lead2_buttons.SetLB= FALSE;
Lead2_buttons.SetLE= FALSE; Lead2_buttons.DelLI= FALSE; Lead2_buttons.Isc= FALSE; Lead2_buttons.Rate_r= FALSE;
Lead2_buttons.Cnd= FALSE; Lead2_buttons.AxS= FALSE; Lead2_buttons.Atr= FALSE; Lead2_buttons.Exm= FALSE; Lead2_buttons.Move= FALSE;
Lead2_buttons.Del= FALSE; Lead2_buttons.DelA= FALSE; Lead2_buttons.ChAtr= FALSE; Lead2_buttons.ChAtrA= FALSE;
Lead2_buttons.ConsLR= FALSE;
Lead2_buttons.LcRef= FALSE; Lead2_buttons.Cancel= TRUE; Lead2_buttons.Rpt= FALSE;
};// set_buttons_lead2_reset_all
void set_buttons_lead2_setGR()
{
Lead2_buttons.Auto_s = 1;
Lead2_buttons.Subtr_s= 1;
Lead2_buttons.ConsLR_s = 1;
Lead2_buttons.Mark=TRUE;Lead2_buttons.Dmy=TRUE; Lead2_buttons.Auto= TRUE; Lead2_buttons.Subtr=TRUE; Lead2_buttons.Cmpt= TRUE;
Lead2_buttons.OvrApp= TRUE; Lead2_buttons.OvrLds= TRUE; Lead2_buttons.GlR =TRUE; Lead2_buttons.SetLB= TRUE;
Lead2_buttons.SetLE= TRUE; Lead2_buttons.DelLI= loc_interval_b[2].set || loc_interval_e[2].set;
Lead2_buttons.Isc= FALSE; Lead2_buttons.Rate_r= FALSE;
Lead2_buttons.Cnd= TRUE; Lead2_buttons.AxS= TRUE; Lead2_buttons.Atr= FALSE; Lead2_buttons.Exm= TRUE; Lead2_buttons.Move= TRUE;
Lead2_buttons.Del= TRUE; Lead2_buttons.DelA= FALSE; Lead2_buttons.ChAtr= FALSE; Lead2_buttons.ChAtrA= FALSE;
Lead2_buttons.ConsLR= Is_code(2,reference_act[2],0,0) || !status_consider_localref2;
Lead2_buttons.LcRef= TRUE; Lead2_buttons.Cancel= FALSE; Lead2_buttons.Rpt= FALSE;
};// set_buttons_lead2_setGR
void set_buttons_lead2_unsubtr_manual()
{
Lead2_buttons.ConsLR_s = 1;
Lead2_buttons.Mark=TRUE;Lead2_buttons.Dmy=TRUE; Lead2_buttons.Auto= TRUE; Lead2_buttons.Subtr=TRUE; Lead2_buttons.Cmpt= TRUE;
Lead2_buttons.OvrApp= TRUE; Lead2_buttons.OvrLds= TRUE; Lead2_buttons.GlR =TRUE; Lead2_buttons.SetLB= TRUE;
Lead2_buttons.SetLE= TRUE; Lead2_buttons.DelLI= loc_interval_b[2].set || loc_interval_e[2].set;
Lead2_buttons.Isc= FALSE; Lead2_buttons.Rate_r= FALSE;
Lead2_buttons.Cnd= TRUE; Lead2_buttons.AxS= TRUE; Lead2_buttons.Atr= FALSE; Lead2_buttons.Exm= TRUE; Lead2_buttons.Move= TRUE;
Lead2_buttons.Del= TRUE; Lead2_buttons.DelA= FALSE; Lead2_buttons.ChAtr= FALSE; Lead2_buttons.ChAtrA= FALSE;
Lead2_buttons.ConsLR= Is_code(2,reference_act[2],0,0) || !status_consider_localref2;
Lead2_buttons.LcRef= TRUE; Lead2_buttons.Cancel= FALSE; Lead2_buttons.Rpt= FALSE;
};// set_buttons_lead2_unsubtr_manual
void set_buttons_lead2_subtr_manual()
{
Lead2_buttons.ConsLR_s = 1;
Lead2_buttons.Mark=TRUE;Lead2_buttons.Dmy=FALSE; Lead2_buttons.Auto= TRUE; Lead2_buttons.Subtr=TRUE; Lead2_buttons.Cmpt= TRUE;
Lead2_buttons.OvrApp= TRUE; Lead2_buttons.OvrLds= TRUE; Lead2_buttons.GlR =FALSE; Lead2_buttons.SetLB= TRUE;
Lead2_buttons.SetLE= TRUE; Lead2_buttons.DelLI= loc_interval_b[2].set || loc_interval_e[2].set;
Lead2_buttons.Isc= FALSE; Lead2_buttons.Rate_r= FALSE;
Lead2_buttons.Cnd= FALSE; Lead2_buttons.AxS= FALSE; Lead2_buttons.Atr= TRUE; Lead2_buttons.Exm= TRUE; Lead2_buttons.Move= TRUE;
Lead2_buttons.Del= TRUE; Lead2_buttons.DelA= FALSE; Lead2_buttons.ChAtr= TRUE; Lead2_buttons.ChAtrA= FALSE;
Lead2_buttons.ConsLR= FALSE;
Lead2_buttons.LcRef= FALSE; Lead2_buttons.Cancel= FALSE; Lead2_buttons.Rpt= FALSE;
};// set_buttons_lead2_subtr_manual
void set_buttons_lead2_subtr_auto()
{
Lead2_buttons.ConsLR_s = 1;
Lead2_buttons.Mark=TRUE;Lead2_buttons.Dmy=FALSE; Lead2_buttons.Auto= TRUE; Lead2_buttons.Subtr=TRUE; Lead2_buttons.Cmpt= TRUE;
Lead2_buttons.OvrApp= TRUE; Lead2_buttons.OvrLds= TRUE; Lead2_buttons.GlR =FALSE; Lead2_buttons.SetLB= TRUE;
Lead2_buttons.SetLE= TRUE; Lead2_buttons.DelLI= loc_interval_b[2].set || loc_interval_e[2].set;
Lead2_buttons.Isc= TRUE; Lead2_buttons.Rate_r= TRUE;
Lead2_buttons.Cnd= FALSE; Lead2_buttons.AxS= FALSE; Lead2_buttons.Atr= FALSE; Lead2_buttons.Exm= TRUE; Lead2_buttons.Move= FALSE;
Lead2_buttons.Del= FALSE; Lead2_buttons.DelA= TRUE; Lead2_buttons.ChAtr= FALSE; Lead2_buttons.ChAtrA= TRUE;
Lead2_buttons.ConsLR= FALSE;
Lead2_buttons.LcRef= FALSE; Lead2_buttons.Cancel= FALSE; Lead2_buttons.Rpt= FALSE;
};// set_buttons_lead2_subtr_auto
void set_buttons_lead2_unsubtr_auto()
{
Lead2_buttons.ConsLR_s = 1;
Lead2_buttons.Mark=TRUE;Lead2_buttons.Dmy=FALSE; Lead2_buttons.Auto= TRUE; Lead2_buttons.Subtr=TRUE; Lead2_buttons.Cmpt= TRUE;
Lead2_buttons.OvrApp= TRUE; Lead2_buttons.OvrLds= TRUE; Lead2_buttons.GlR =FALSE; Lead2_buttons.SetLB= TRUE;
Lead2_buttons.SetLE= TRUE; Lead2_buttons.DelLI= loc_interval_b[2].set || loc_interval_e[2].set;
Lead2_buttons.Isc= FALSE; Lead2_buttons.Rate_r= FALSE;
Lead2_buttons.Cnd= FALSE; Lead2_buttons.AxS= FALSE; Lead2_buttons.Atr= FALSE; Lead2_buttons.Exm= TRUE; Lead2_buttons.Move= FALSE;
Lead2_buttons.Del= FALSE; Lead2_buttons.DelA= TRUE; Lead2_buttons.ChAtr= FALSE; Lead2_buttons.ChAtrA= TRUE;
Lead2_buttons.ConsLR= FALSE;
Lead2_buttons.LcRef= FALSE; Lead2_buttons.Cancel= FALSE; Lead2_buttons.Rpt= FALSE;
};// set_buttons_lead2_unsubtr_auto
void set_buttons_lead2_conslr()
{
Lead2_buttons.Mark=TRUE;Lead2_buttons.Dmy=FALSE; Lead2_buttons.Auto= FALSE; Lead2_buttons.Subtr=FALSE; Lead2_buttons.Cmpt= TRUE;
Lead2_buttons.OvrApp= TRUE; Lead2_buttons.OvrLds= TRUE; Lead2_buttons.GlR =FALSE; Lead2_buttons.SetLB= TRUE;
Lead2_buttons.SetLE= TRUE; Lead2_buttons.DelLI= loc_interval_b[2].set || loc_interval_e[2].set;
Lead2_buttons.Isc= FALSE; Lead2_buttons.Rate_r= FALSE;
Lead2_buttons.Cnd= FALSE; Lead2_buttons.AxS= FALSE; Lead2_buttons.Atr= FALSE; Lead2_buttons.Exm= TRUE; Lead2_buttons.Move= FALSE;
Lead2_buttons.Del= FALSE; Lead2_buttons.DelA= FALSE; Lead2_buttons.ChAtr= FALSE; Lead2_buttons.ChAtrA= FALSE;
Lead2_buttons.ConsLR= Is_code(2,reference_act[2],0,0) || !status_consider_localref2;
Lead2_buttons.LcRef= FALSE; Lead2_buttons.Cancel= FALSE; Lead2_buttons.Rpt= FALSE;
};// set_buttons_lead2_conslr
void sub_op2_start(void)
{
if (!repeat_set2 ) Lead2_op_begin_status.copy_button_status(Lead2_buttons);
switch (Lead2_operation) {
case 0: return;
case 1:
allow_l2=TRUE;
set_buttons_lead2_reset_all(); if (!repeat_set2 ) Lead2_buttons.Rpt= TRUE; set_buttons_lead2();
break;
case 9: // set examine
allow_l2=TRUE;
set_buttons_lead2_reset_all(); set_buttons_lead2();
break;
}
} // end sub_op2_star
void sub_op2_exec (void)
{
long r_i;
int del_code1, del_code2, ii;
long i_r, end_i, l_b, l_e;
long GR_index,act_ind, act_ind_r;
Bool no_gr1, test, test1;
Bool refresh_all=FALSE;
Bool no_other, no_other2, no_gr2;
long l_l_b, l_l_e;
Bool refresh;
refresh=FALSE; x_lead=FALSE;
switch (Lead2_operation) {
case 0: return;
case 1:
if (IS_free(2, click_l2.raw,1)) {
Marker[2].set=TRUE;
Marker[2].raw_index=click_l2.raw; Marker[2].fine_index=click_l2.fine;
allow_l2=FALSE;
set_marker_l(2);
draw_grid_lead0(2);
show_data(2, x_lead, TRUE);
if (repeat_set2 ) {
allow_l2=TRUE;
set_buttons_lead2_reset_all(); set_buttons_lead2();
}
else {
Lead2_operation=0;
Lead2_buttons.copy_button_status(Lead2_op_begin_status);
set_buttons_lead2();
}
}
else {
Lead2_operation=0;
Lead2_buttons.copy_button_status(Lead2_op_begin_status);
set_buttons_lead2();
}
break;
case 9: // set examine
refresh_all=FALSE;
if ( references_index[2] > -1 ) {
for (r_i=0; (r_i < references_index[2] ) && ( click_l2.raw > references[2][r_i].raw_index); r_i++);
if ( click_l2.raw != references[2][r_i].raw_index ) {
// find nearest ann
if ((r_i <= references_index[2] ) && (r_i > 0 )){
if ( ( data_raw[click_l2.raw].index-
data_raw[ references[2][r_i-1].raw_index].index ) <
( data_raw[ references[2][r_i].raw_index].index -
data_raw[click_l2.raw].index) ) r_i=r_i-1;
}
}
if ( abs(click_l2.x - Coor_x_l0( data_raw[ references[2][r_i].raw_index].index-TimeToIndex(diagram_time_begin_lead))) <= 7 ) {
if ( Is_code(2,r_i,4,0) )
if ( Is_prop_mode(2) ) last_set_all = TRUE;
if ((! Is_code(2,r_i,4,0) ) OR
( Is_prop_mode(2) &&
Is_code(2,r_i,4,0))) {
if (last_set_all ) { Marker[0].set=FALSE; Marker[1].set=FALSE;refresh_all=TRUE;
reference_act[0]=-1; reference_act[1] =-1; last_set_all=FALSE; x_lead=TRUE;}
Marker[2].copy_ref( references[2][r_i]);
Marker[2].set=TRUE;
current_j_m=Marker[2].nJ;
current_iso_m=Marker[2].nISO;
reference_act[2]=r_i;
data_mstime_index= data_fin[Marker[2].fine_index].index;
act_reference[0].change=FALSE;
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
data_new_m_read();
update_marker(2,190);
}
if (! (status_consider_localref2) && Is_code(2,r_i,0,0) ) {
act_ref_data[2].copy_ref(references[2][reference_act[2]]);
act_reference[2].set=TRUE;
act_reference[0].change=FALSE;
act_reference[2].typ=2; // local
act_reference[2].index=reference_act[2];
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
reference_mstime_index= data_fin[act_ref_data[2].fine_index].index;
data_new_r_read();
get_average_R();
update_marker(2,193);
}
if (Is_code(2,r_i,4,0) ) { // dy
x_lead=TRUE;
if( Is_prop_mode(2) ) {
last_set_all=TRUE;
if ( references_index[0] > -1){
for (r_i=0; (r_i <= references_index[0] ) && ( references[2][reference_act[2]].raw_index > references[0][r_i].raw_index); r_i++);
if ( (r_i <= references_index[0] ) && ( r_i > -1 )) {
if ( references[2][reference_act[2]].raw_index == references[0][r_i].raw_index ) {
Marker[0].copy_ref( references[0][r_i]);
Marker[0].set=TRUE;
reference_act[0]=r_i;
update_marker(0,100190); refresh_all=TRUE; set_buttons_lead0();
}}
}
if ( references_index[1] > -1){
for (r_i=0; (r_i <= references_index[1] ) && ( references[2][reference_act[2]].raw_index > references[1][r_i].raw_index); r_i++);
if ( (r_i <= references_index[1] ) && ( r_i > -1 )) {
if ( references[2][reference_act[2]].raw_index == references[1][r_i].raw_index ) {
Marker[1].copy_ref( references[1][r_i]); Marker[1].set=TRUE; reference_act[1]=r_i;
update_marker(1,100190); set_buttons_lead1();
}}
}
}}
if (refresh_all) { draw_grid_lead0(0);draw_grid_lead0(1); }
draw_grid_lead0(2);
show_data(2, x_lead, TRUE);
} }
if (fast2_center) break;
Lead2_op_begin_status.ConsLR= Is_code(2,reference_act[2],0,0) || !status_consider_localref2;
Lead2_buttons.copy_button_status(Lead2_op_begin_status);
set_buttons_lead2();
Lead2_operation=0;
break;
}
refresh = FALSE;
} // end sub_op2_exec
void sub_op2_cancel(void)
{
Lead2_buttons.copy_button_status(Lead2_op_begin_status);
repeat_set2=FALSE;
switch (Lead2_operation) {
case 0: return;
case 1:
allow_l2=FALSE;
break;
case 9: // set examine
allow_l2=FALSE;
break;
}
Lead2_buttons.Cancel=FALSE;set_buttons_lead2();
Lead2_operation=0;
}
//End user functions =====================================================================================
// Destroy function
Notify_value destroy_func(Notify_client client, Destroy_status status)
{
if (status == DESTROY_CHECKING) {
int result;
result = notice_prompt((Frame)client, (Event *)NULL,
NOTICE_MESSAGE_STRINGS, "Quit ?", NULL,
NOTICE_BUTTON_YES, "Cancel",
NOTICE_BUTTON_NO, "Quit",
NULL);
if (result != NOTICE_NO)
notify_veto_destroy(client);
} else if (status == DESTROY_CLEANUP) {
return notify_next_destroy_func(client, status);
}
return NOTIFY_DONE;
}
#ifdef MAIN
Attr_attribute INSTANCE;
main(int argc, char **argv)
{
//
// Initialize XView.
//
xv_init(XV_INIT_ARGC_PTR_ARGV, &argc, argv, NULL);
INSTANCE = xv_unique_key();
//
// Initialize user interface components.
//
Sem_0_m_bw.objects_initialize(0L);
Sem_0_k_bw.objects_initialize(Sem_0_m_bw.m_bw);
Sem_0_o_pw.objects_initialize(Sem_0_m_bw.m_bw);
Sem_0_q_pw.objects_initialize(Sem_0_m_bw.m_bw);
Sem_0_w_pw.objects_initialize(Sem_0_m_bw.m_bw);
Sem_0_d_bw.objects_initialize(Sem_0_m_bw.m_bw);
Sem_0_l_bw.objects_initialize(Sem_0_m_bw.m_bw);
Sem_0_l_bw1.objects_initialize(Sem_0_m_bw.m_bw);
Sem_0_l_bw2.objects_initialize(Sem_0_m_bw.m_bw);
Sem_0_d_pw.objects_initialize(Sem_0_m_bw.m_bw);
Sem_0_c_pw.objects_initialize(Sem_0_m_bw.m_bw);
Sem_0_h_pw.objects_initialize(Sem_0_m_bw.m_bw);
// Install the destroy_func signal handler for cleanup before quiting
notify_interpose_destroy_func((Notify_client) Sem_0_m_bw.m_bw, (Notify_value (*)(...)) destroy_func);
// notify_interpose_destroy_func(Sem_0_m_bw.m_bw, destroy_func);
//
// Turn control over to XView.
//
xv_main_loop(Sem_0_m_bw.m_bw);
exit(0);
}
#endif
//
// Menu handler for `l_menu_OvrLds (Lead0)'.
//
Menu_item
l_call_OvrLds_Lead0(Menu_item item, Menu_generate op)
{
sem_0_l_bw_objects * ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
xv_set(item, MENU_INACTIVE, TRUE, 0);
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `l_menu_OvrLds (Lead1)'.
//
Menu_item
l_call_OvrLds_Lead1(Menu_item item, Menu_generate op)
{
sem_0_l_bw_objects * ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( ovr0_l1 OR ( ! lead1_data) ) { xv_set(item, MENU_INACTIVE, TRUE, 0);
}
else
{ xv_set(item, MENU_INACTIVE, FALSE, 0);
}
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
ovr0_l1=TRUE; draw_grid_lead0(0);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `l_menu_OvrLds (Lead2)'.
//
Menu_item
l_call_OvrLds_Lead2(Menu_item item, Menu_generate op)
{
sem_0_l_bw_objects * ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( ovr0_l2 OR ( ! lead2_data)) xv_set(item, MENU_INACTIVE, TRUE, 0);
else
{ xv_set(item, MENU_INACTIVE, FALSE, 0);
}
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
ovr0_l2=TRUE; draw_grid_lead0(0);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `l_menu_OvrLds (UnOvrly)'.
//
Menu_item
l_call_OvrLds_UnOvrly(Menu_item item, Menu_generate op)
{
sem_0_l_bw_objects * ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( ovr0_l1 || ovr0_l2 )
xv_set(item, MENU_INACTIVE, FALSE, 0);
else
xv_set(item, MENU_INACTIVE, TRUE, 0);
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
ovr0_l1=FALSE; ovr0_l2=FALSE; draw_grid_lead0(0);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `d_menu_OvrLds (Lead0)'.
//
Menu_item
d_call_OvrLds_Lead0(Menu_item item, Menu_generate op)
{
sem_0_d_bw_objects * ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( ( Data_lead == 0 ) OR ( data_ovr_l0 ) ) xv_set(item, MENU_INACTIVE, TRUE, 0);
else xv_set(item, MENU_INACTIVE, FALSE, 0);
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
data_ovr_l0=TRUE;
show_data(Data_lead,FALSE, FALSE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `d_menu_OvrLds (Lead1)'.
//
Menu_item
d_call_OvrLds_Lead1(Menu_item item, Menu_generate op)
{
sem_0_d_bw_objects * ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( Data_lead == 1 OR ( ! lead1_data) OR ( data_ovr_l1) ) xv_set(item, MENU_INACTIVE, TRUE, 0);
else xv_set(item, MENU_INACTIVE, FALSE, 0);
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
data_ovr_l1=TRUE;
show_data(Data_lead,FALSE, FALSE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `d_menu_OvrLds (Lead2)'.
//
Menu_item
d_call_OvrLds_Lead2(Menu_item item, Menu_generate op)
{
sem_0_d_bw_objects * ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( Data_lead == 2 OR ( ! lead2_data) OR ( data_ovr_l2) ) xv_set(item, MENU_INACTIVE, TRUE, 0);
else xv_set(item, MENU_INACTIVE, FALSE, 0);
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
data_ovr_l2=TRUE;
show_data(Data_lead,FALSE, FALSE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `d_menu_OvrLds (UnOvrly)'.
//
Menu_item
d_call_OvrLds_UnOvrly(Menu_item item, Menu_generate op)
{
sem_0_d_bw_objects * ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( data_ovr_l0 OR data_ovr_l1 OR data_ovr_l2)
xv_set(item, MENU_INACTIVE, FALSE, 0);
else xv_set(item, MENU_INACTIVE, TRUE, 0);
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
data_ovr_l0=FALSE; data_ovr_l1=FALSE; data_ovr_l2=FALSE;
data_ovrly_shift=FALSE;
show_data(Data_lead,FALSE, FALSE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `l_menu_OvrLds1 (Lead0)'.
//
Menu_item
l_call_OvrLds1_Lead0(Menu_item item, Menu_generate op)
{
sem_0_l_bw1_objects * ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( ovr1_l0 ) { xv_set(item, MENU_INACTIVE, TRUE, 0);}
else
{ xv_set(item, MENU_INACTIVE, FALSE, 0); }
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
ovr1_l0=TRUE; draw_grid_lead0(1);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `l_menu_OvrLds1 (Lead1)'.
//
Menu_item
l_call_OvrLds1_Lead1(Menu_item item, Menu_generate op)
{
sem_0_l_bw1_objects * ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
xv_set(item, MENU_INACTIVE, TRUE, 0);
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `l_menu_OvrLds1 (Lead2)'.
//
Menu_item
l_call_OvrLds1_Lead2(Menu_item item, Menu_generate op)
{
sem_0_l_bw1_objects * ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( ovr1_l2 OR ( ! lead2_data)) xv_set(item, MENU_INACTIVE, TRUE, 0);
else
{ xv_set(item, MENU_INACTIVE, FALSE, 0);}
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
ovr1_l2=TRUE; draw_grid_lead0(1);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `l_menu_OvrLds1 (UnOvrly)'.
//
Menu_item
l_call_OvrLds1_UnOvrly(Menu_item item, Menu_generate op)
{
sem_0_l_bw1_objects * ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( ovr1_l0 || ovr1_l2 )
xv_set(item, MENU_INACTIVE, FALSE, 0);
else
xv_set(item, MENU_INACTIVE, TRUE, 0);
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
ovr1_l0=FALSE; ovr1_l2=FALSE; draw_grid_lead0(1);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `l_menu_OvrLds2 (Lead0)'.
//
Menu_item
l_call_OvrLds2_Lead0(Menu_item item, Menu_generate op)
{
sem_0_l_bw2_objects * ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( ovr2_l0 ) { xv_set(item, MENU_INACTIVE, TRUE, 0);}
else
{ xv_set(item, MENU_INACTIVE, FALSE, 0);}
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
ovr2_l0=TRUE; draw_grid_lead0(2);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `l_menu_OvrLds2 (Lead1)'.
//
Menu_item
l_call_OvrLds2_Lead1(Menu_item item, Menu_generate op)
{
sem_0_l_bw2_objects * ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( ovr2_l1 OR ( ! lead1_data) ) { xv_set(item, MENU_INACTIVE, TRUE, 0);
}
else
{ xv_set(item, MENU_INACTIVE, FALSE, 0);
}
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
ovr2_l1=TRUE; draw_grid_lead0(2);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `l_menu_OvrLds2 (Lead2)'.
//
Menu_item
l_call_OvrLds2_Lead2(Menu_item item, Menu_generate op)
{
sem_0_l_bw2_objects * ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
xv_set(item, MENU_INACTIVE, TRUE, 0);
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `l_menu_OvrLds2 (UnOvrly)'.
//
Menu_item
l_call_OvrLds2_UnOvrly(Menu_item item, Menu_generate op)
{
sem_0_l_bw2_objects * ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( ovr2_l1 || ovr2_l0 )
xv_set(item, MENU_INACTIVE, FALSE, 0);
else
xv_set(item, MENU_INACTIVE, TRUE, 0);
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
ovr2_l1=FALSE; ovr2_l0=FALSE; draw_grid_lead0(2);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Notify callback function for `m_b_Open'.
//
void
sem_0_m_bw_m_b_Open_notify_callback(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
main_open_init(item, event);
xv_set(Sem_0_k_bw.k_bw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_o_pw.o_pw, FRAME_CMD_PUSHPIN_IN, TRUE, NULL);
xv_set(Sem_0_o_pw.o_pw, XV_SHOW, TRUE, NULL);
xv_set(Sem_0_q_pw.q_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_q_pw.q_pw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_w_pw.w_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_w_pw.w_pw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_d_bw.d_bw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_l_bw.l_bw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_d_pw.d_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_d_pw.d_pw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_c_pw.c_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_c_pw.c_pw, XV_SHOW, FALSE, NULL);
// xv_set(Sem_0_h_pw.h_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
// xv_set(Sem_0_h_pw.h_pw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_bw1, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_bw2, XV_SHOW, FALSE, NULL);
// gxv_end_connections
}
//
// Notify callback function for `m_b_Lead0'.
//
void
init_Lead(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
if (xv_get(Sem_0_l_bw.l_bw, FRAME_CLOSED))
xv_set(Sem_0_l_bw.l_bw, FRAME_CLOSED, FALSE, NULL);
xv_set(Sem_0_l_bw.l_bw, XV_SHOW, TRUE, NULL);
l_ini_lcp_b(item, event);
// gxv_end_connections
}
//
// Notify callback function for `m_b_Data'.
//
void
init_data(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
if (xv_get(Sem_0_d_bw.d_bw, FRAME_CLOSED))
xv_set(Sem_0_d_bw.d_bw, FRAME_CLOSED, FALSE, NULL);
xv_set(Sem_0_d_bw.d_bw, XV_SHOW, TRUE, NULL);
d_ini_cp_b(item, event);
// gxv_end_connections
}
//
// Notify callback function for `m_b_Lead1'.
//
void
init_Lead1(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
if (xv_get(Sem_0_l_bw1.l_bw1, FRAME_CLOSED))
xv_set(Sem_0_l_bw1.l_bw1, FRAME_CLOSED, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_bw1, XV_SHOW, TRUE, NULL);
l_ini_cp1_b(item, event);
// gxv_end_connections
}
//
// Notify callback function for `m_b_KLCoeff'.
//
void
init_kl(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
if (xv_get(Sem_0_k_bw.k_bw, FRAME_CLOSED))
xv_set(Sem_0_k_bw.k_bw, FRAME_CLOSED, FALSE, NULL);
xv_set(Sem_0_k_bw.k_bw, XV_SHOW, TRUE, NULL);
k_ini_cp_b(item, event);
// gxv_end_connections
}
//
// Notify callback function for `m_b_AplOp'.
//
void
apply_options(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
FILE *set_data=NULL;
char i_str1[132], i_str2[132];
int x, i, j, l;
int test=0;
if((set_data=fopen("semia.opt","r")) != NULL )
{
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { i_str2[j]=i_str1[i]; i++; j++;}
i_str2[j]=0;
x=(int)(strtod(i_str2,0));
set_line_width=x;
if ((x > 0) && (x < 5) )
{ set_line_width=x;}
else
{ test++;}
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color1[j]=i_str1[i]; i++; j++;}
set_color1[j]=0;
if (j == 0) test++;
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color2[j]=i_str1[i]; i++; j++;}
set_color2[j]=0;
if (j == 0) test++;
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color3[j]=i_str1[i]; i++; j++;}
set_color3[j]=0;
if (j == 0) test++;
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color4[j]=i_str1[i]; i++; j++;}
set_color4[j]=0;
if (j == 0) test++;
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color5[j]=i_str1[i]; i++; j++;}
set_color5[j]=0;
if (j == 0) test++;
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color6[j]=i_str1[i]; i++; j++;}
set_color6[j]=0;
if (j == 0) test++;
if (test > 0 ){
sprintf(message1,"Incorrect options !",test);
sprintf(message2,"LineWidth=%d",set_line_width);
sprintf(message3,"%s,%s,%s,%s,%s,%s",set_color1,set_color2,set_color3,set_color4,set_color5,set_color6);
warning_message(3);
}
}
else
{
sprintf(message1,"No <semia.opt> file !");
warning_message(1);
}
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `m_b_Quit'.
//
void
sem_0_m_bw_m_b_Quit_notify_callback(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
xv_set(Sem_0_m_bw.m_b_Open, PANEL_INACTIVE, FALSE, NULL);
// gxv_start_connections DO NOT EDIT THIS SECTION
xv_set(Sem_0_q_pw.q_pw, FRAME_CMD_PUSHPIN_IN, TRUE, NULL);
xv_set(Sem_0_q_pw.q_pw, XV_SHOW, TRUE, NULL);
// gxv_end_connections
}
//
// Notify callback function for `m_b_Lead2'.
//
void
init_Lead2(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
if (xv_get(Sem_0_l_bw2.l_bw2, FRAME_CLOSED))
xv_set(Sem_0_l_bw2.l_bw2, FRAME_CLOSED, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_bw2, XV_SHOW, TRUE, NULL);
l_ini_cp2_b(item, event);
// gxv_end_connections
}
//
// Notify callback function for `k_ss_ST'.
//
void
k_call_ST(Panel_item item, int value, Event *event)
{
sem_0_k_bw_objects *ip = (sem_0_k_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
KL_coefficents= value == 0 ;
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `k_ss_1std'.
//
void
k_call_1std(Panel_item item, int value, Event *event)
{
sem_0_k_bw_objects *ip = (sem_0_k_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (value){
case 0: ampl_c=0.1; break;
case 1: ampl_c=0.125; break;
case 2: ampl_c=0.2; break;
case 3: ampl_c=0.25; break;
case 4: ampl_c=0.5; break;
case 5: ampl_c=1.0; break;
case 6: ampl_c=2.0; break;
case 7: ampl_c=4.0; break;
case 8: ampl_c=5.0; break;
case 9: ampl_c=8.0; break;
case 10: ampl_c=10.0; break;
case 11: ampl_c=20.0; break;
}
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `k_b_Overlay'.
//
void
k_call_Overlay(Panel_item item, Event *event)
{
sem_0_k_bw_objects *ip = (sem_0_k_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if ( !ovr_coef ) {
xv_set(Sem_0_k_bw.k_b_Overlay, PANEL_LABEL_STRING, "UnDistF", NULL);
ovr_coef=TRUE;
draw_ovrly_coeff();
}
else {
xv_set(Sem_0_k_bw.k_b_Overlay, PANEL_LABEL_STRING, "DistF", NULL);
ovr_coef=FALSE;
draw_grid_coeff();
}
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Event callback function for `k_cp'.
//
Notify_value
sem_0_k_bw_k_cp_event_callback(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_k_bw_objects *ip = (sem_0_k_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
if (event_action(event) == ACTION_SELECT)
{
k_call_left(win, event, arg, type);
}
if (event_action(event) == ACTION_ADJUST)
{
k_call_center(win, event, arg, type);
}
if (event_action(event) == ACTION_MENU)
{
k_call_right(win, event, arg, type);
}
// gxv_end_connections
return notify_next_event_func(win, (Notify_event) event, arg, type);
}
//
// User-defined action for `k_cp'.
//
void
k_call_left(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
long x,y,i, dx;
long c_Time;
char pr_time[12];
sem_0_k_bw_objects *ip = (sem_0_k_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
x=(event->ie_xevent)->xbutton.x ;
if (( x < 160 ) OR (x > 1120 )) return;
c_Time = (long)(FSAMP *(diagram_time_begin_lead+ double(x-160.0)*time_scale_0/960.0));
i=raw_display_begin;
while ( (c_Time > data_raw[i].index) && (i < raw_display_end) )
{ i++; }
dx= abs(c_Time - data_raw[i].index);
click_c.first=! click_c.first;
click_c.x=(event->ie_xevent)->xbutton.x;
click_c.y=(event->ie_xevent)->xbutton.y;
if ( click_c.first ){
XAllocNamedColor(k_b_display, cmap,"white", &col, & unused);
XSetForeground(k_b_display, gckoeff, col.pixel);
XFillRectangle( k_b_display, k_b_window, gckoeff,35,20,112,155);
XFillRectangle(k_b_display, k_b_window, gckoeff, 40,180,90,15);
XAllocNamedColor(k_b_display, cmap,"black", &col, & unused);
XSetForeground(k_b_display, gckoeff, col.pixel);
sprintf(pr_time, "%s",mstimstr(c_Time));
XDrawString(k_b_display, k_b_window, gckoeff, 42, 190, pr_time, strlen(pr_time));
dx= abs(c_Time - data_raw[i].index);
if (dx == 0) {
click_c.raw_l=i; click_c.raw_r=i; click_c.raw=i;
}
else { click_c.raw_l=i-1; click_c.raw_r=i;
if ( dx < FSAMP / 2) { click_c.raw=i;}
else { click_c.raw=i-1;}
}
i=click_c.raw;
if ( KL_coefficents ) {
// y_0=157-(double(data_raw[i].ST_f) /5.0 /ampl_c);
sprintf(pr_buff, "%5.2f ....................",data_raw[i].STk1/100.0);
XDrawString(k_b_display, k_b_window, gckoeff, 40, 37, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "%5.2f ....................",data_raw[i].STk2/100.0);
XDrawString(k_b_display, k_b_window, gckoeff, 40, 67, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "%5.2f ....................",data_raw[i].STk3/100.0);
XDrawString(k_b_display, k_b_window, gckoeff, 40, 97, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "%5.2f ....................",data_raw[i].STk4/100.0);
XDrawString(k_b_display, k_b_window, gckoeff, 40, 127, pr_buff, strlen(pr_buff));
if ( ovr_coef) sprintf(pr_buff, "%5.2f Dis %5.2f",data_raw[i].STk5/100.0,data_raw[i].ST_f/100.0);
else sprintf(pr_buff, "%5.2f ....................",data_raw[i].STk5/100.0);
XDrawString(k_b_display, k_b_window, gckoeff, 40, 157, pr_buff, strlen(pr_buff));
}
else {
// y_0=157-(double(data_raw[i].QRS_f) /5.0 /ampl_c);
sprintf(pr_buff, "%5.2f ....................",data_raw[i].QRSk1/100.0);
XDrawString(k_b_display, k_b_window, gckoeff, 40, 37, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "%5.2f ....................",data_raw[i].QRSk2/100.0);
XDrawString(k_b_display, k_b_window, gckoeff, 40, 67, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "%5.2f ....................",data_raw[i].QRSk3/100.0);
XDrawString(k_b_display, k_b_window, gckoeff, 40, 97, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "%5.2f ....................",data_raw[i].QRSk4/100.0);
XDrawString(k_b_display, k_b_window, gckoeff, 40, 127, pr_buff, strlen(pr_buff));
if ( ovr_coef) sprintf(pr_buff, "%5.2f Dis %5.2f",data_raw[i].QRSk5/100.0,data_raw[i].QRS_f/100.0);
else sprintf(pr_buff, "%5.2f ....................",data_raw[i].QRSk5/100.0);
XDrawString(k_b_display, k_b_window, gckoeff, 40, 157, pr_buff, strlen(pr_buff));
}
}
else {
XAllocNamedColor(k_b_display, cmap,"white", &col, & unused);
XSetForeground(k_b_display, gckoeff, col.pixel);
XFillRectangle(k_b_display, k_b_window, gckoeff, 35,20,112,155);
XFillRectangle(k_b_display, k_b_window, gckoeff, 40,180,90,15);
XAllocNamedColor(k_b_display, cmap,"black", &col, & unused);
XSetForeground(k_b_display, gckoeff, col.pixel);
if ( ovr_coef ) {
XDrawString(k_b_display, k_b_window, gckoeff, 35,157, "......................Dist.......",33);}
else {XDrawString(k_b_display, k_b_window, gckoeff, 35,157,"....................................",36); }
XDrawString(k_b_display, k_b_window, gckoeff, 35,37, "....................................",36);
XDrawString(k_b_display, k_b_window, gckoeff, 35,67, "....................................",36);
XDrawString(k_b_display, k_b_window, gckoeff, 35,97, "....................................",36);
XDrawString(k_b_display, k_b_window, gckoeff, 35,127, "....................................",36);
}
}
//
// User-defined action for `k_cp'.
//
void
k_call_center(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_k_bw_objects *ip = (sem_0_k_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
}
//
// User-defined action for `k_cp'.
//
void
k_call_right(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_k_bw_objects *ip = (sem_0_k_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
}
//
// Notify callback function for `o_file_name'.
//
Panel_setting
get_record_name(Panel_item item, Event *event)
{
sem_0_o_pw_objects *ip = (sem_0_o_pw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
char * value = (char *) xv_get(item, PANEL_VALUE);
strcpy(inp_rec_name,"");
if ((strlen(value) > 6 )|| (strlen(value) < 1 )) {
sprintf(message1, "Incorrect lenght of record name ! ");
warning_message(1);
xv_set(Sem_0_m_bw.m_m_Record, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_o_pw.o_b_OK, PANEL_INACTIVE, TRUE, NULL);
}
else
{ strcpy(inp_rec_name,value);
xv_set(Sem_0_m_bw.m_m_Record, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_o_pw.o_b_OK, PANEL_INACTIVE,FALSE, NULL);
}
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
return panel_text_notify(item, event);
}
//
// Notify callback function for `o_b_Cancel'.
//
void
sem_0_o_pw_o_b_Cancel_notify_callback(Panel_item item, Event *event)
{
sem_0_o_pw_objects *ip = (sem_0_o_pw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
xv_set(Sem_0_o_pw.o_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_o_pw.o_pw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_o_pw.o_b_OK, PANEL_INACTIVE, TRUE, NULL);
// gxv_end_connections
}
//
// Notify callback function for `o_b_OK'.
//
void
open_input_record(Panel_item item, Event *event)
{
sem_0_o_pw_objects *ip = (sem_0_o_pw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
FILE *file_fin=NULL, *file_raw=NULL;
char fin_name[16], raw_name[16], backup_name[48];
int succ;
long i,i1;
int n_data;
long hours_b=0, minutes_b=0, seconds_b=0, hour_l=0;
long hours_e=0, minutes_e=0, seconds_e=0;
long index;
long HR;
float l0_ST80,l0_ST20,
l1_ST80,l1_ST20,
l2_ST80,l2_ST20;
int STk1,STk2,STk3,STk4,STk5,
ST_f,
QRSk1,QRSk2,QRSk3,QRSk4,QRSk5,
QRS_f,
nPB, nPE, nISO, nQ, nJ, nTB, nTX, nTE;
xv_set(Sem_0_m_bw.m_m_Record, XV_SHOW, FALSE, NULL);
auto_save_counter = 0;
sprintf(fin_name,"%s_fin.dmy",inp_rec_name);
sprintf(raw_name,"%s_raw.dmy",inp_rec_name);
sprintf(save_name,"%s_1.sta",inp_rec_name);
file_save=fopen(save_name,"r");
if (file_save == NULL){
sprintf(message1,"No <%s_1.sta> file !",inp_rec_name);
sprintf(message2,"",inp_rec_name);
warning_message(2);
xv_set(Sem_0_o_pw.o_b_OK, PANEL_INACTIVE, TRUE, NULL);
return;
}
file_fin=fopen(fin_name,"r"); file_raw=fopen(raw_name,"r");
if ((file_fin == NULL) || (file_raw == NULL)){
sprintf(message1,"No <%s_fin.dmy> or",inp_rec_name);
sprintf(message2," <%s_raw.dmy> file !",inp_rec_name);
warning_message(2);
xv_set(Sem_0_o_pw.o_b_OK, PANEL_INACTIVE, TRUE, NULL);
return;
}
if ((file_fin != NULL) && (file_raw != NULL)){
nsig = isigopen(inp_rec_name, DB_s, WFDB_MAXSIG);
if (nsig < 1 )
{
sprintf(message1,"No <%s.hea> or",inp_rec_name);
sprintf(message2," <%s.dat> file !",inp_rec_name);
warning_message(2);
xv_set(Sem_0_o_pw.o_b_OK, PANEL_INACTIVE, TRUE, NULL);
return;
}
else
{
sprintf(message,"Record: %s",inp_rec_name);
while ( strlen(message) < 46 ) strcat(message," ");
sprintf(message2,"( %d Lead",nsig);
if ( nsig > 1 ) strcat(message2,"s");
strcat(message,message2); strcat(message," )");
xv_set(Sem_0_m_bw.m_m_Record, PANEL_LABEL_STRING,message, NULL);
xv_set(Sem_0_m_bw.m_m_Record,XV_SHOW, TRUE, NULL);
xv_set(Sem_0_m_bw.m_b_Data, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_m_bw.m_b_KLCoeff, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_m_bw.m_b_DiagData, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_m_bw.m_b_NumEpis, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_m_bw.m_b_Lead0, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_m_bw.m_b_Open, PANEL_INACTIVE, TRUE, NULL);
lead1_data=FALSE; lead2_data=FALSE;
xv_set(Sem_0_m_bw.m_b_Lead1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_m_bw.m_b_Lead2, PANEL_INACTIVE, TRUE, NULL);
if (nsig > 1) { xv_set(Sem_0_m_bw.m_b_Lead1, PANEL_INACTIVE, FALSE, NULL); lead1_data=TRUE;}
if (nsig > 2) { xv_set(Sem_0_m_bw.m_b_Lead2, PANEL_INACTIVE, FALSE, NULL); lead2_data=TRUE;}
i=0;
strcpy(message1,"Reading the data ...");
xv_set(Sem_0_o_pw.o_b_Cancel, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_o_pw.o_b_OK, XV_SHOW, FALSE, NULL);
while( ( n_data=fscanf(file_raw,"%ld%d%f%f%f%f%f%f%d%d%d%d%d%d%d%d%d%d%d%d",
&index,&HR,&l0_ST80,&l1_ST80,&l2_ST80,&l0_ST20,&l1_ST20,&l2_ST20,
&STk1,&STk2,&STk3,&STk4,&STk5,&ST_f,&QRSk1,&QRSk2,&QRSk3,&QRSk4,&QRSk5,&QRS_f) > 0) &&
( i < LEN_BUFF_R ) ){
data_raw[i].index=index;
data_raw[i].HR=HR;
data_raw[i].l0_ST80=l0_ST80; data_raw[i].l0_ST20=l0_ST20;
data_raw[i].l1_ST80=l1_ST80; data_raw[i].l1_ST20=l1_ST20;
data_raw[i].l2_ST80=l2_ST80; data_raw[i].l2_ST20=l2_ST20;
if ( ALL_ONE ){
data_raw[i].l0_ST80=l0_ST80; data_raw[i].l0_ST20=l0_ST20;
data_raw[i].l1_ST80=l0_ST80; data_raw[i].l1_ST20=l0_ST20;
data_raw[i].l2_ST80=l0_ST80; data_raw[i].l2_ST20=l0_ST20;
}
data_raw[i].STk1=STk1; data_raw[i].STk2=STk2; data_raw[i].STk3=STk3; data_raw[i].STk4=STk4; data_raw[i].STk5=STk5;
data_raw[i].ST_f=ST_f;
data_raw[i].QRSk1=QRSk1; data_raw[i].QRSk2=QRSk2; data_raw[i].QRSk3=QRSk3; data_raw[i].QRSk4=QRSk4; data_raw[i].QRSk5=QRSk5;
data_raw[i].QRS_f=QRS_f;
data_raw[i].lin_v[0]=0.0; data_raw[i].lin_v[1]=0.0; data_raw[i].lin_v[2]=0.0;
data_raw[i].sub_v[0]=0.0; data_raw[i].sub_v[1]=0.0; data_raw[i].sub_v[2]=0.0;
i++;
}
i--;
sprintf(message1,"Data interval:");
time_begin_lead=IndexToTime(data_raw[0].index);
raw_last_index=i;
time_end_lead=IndexToTime(data_raw[i].index);
diagram_time_begin_lead=time_begin_lead;
TimeToHoursMinSec(time_begin_lead, &hours_b, &minutes_b, &seconds_b, &hour_l);
TimeToHoursMinSec(time_end_lead, &hour_l, &minutes_e, &seconds_e, &hours_e);
sprintf(message2, "[%ld:%ld:%ld - %ld:%ld:%ld]", hours_b, minutes_b, seconds_b, hours_e, minutes_e, seconds_e);
if ( n_data > 0 ) { sprintf(message3,"Some data unread !"); warning_message(3);
}
else {
warning_message(2);}
}
i=0;
strcpy(message1,"Reading the data ...");
xv_set(Sem_0_o_pw.o_b_Cancel, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_o_pw.o_b_OK, XV_SHOW, FALSE, NULL);
while( ( n_data=fscanf(file_fin,"%ld%d%f%f%f%f%f%f%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",
&index,&HR,&l0_ST80,&l1_ST80,&l2_ST80,&l0_ST20,&l1_ST20,&l2_ST20,
&STk1,&STk2,&STk3,&STk4,&STk5,&ST_f,&QRSk1,&QRSk2,&QRSk3,&QRSk4,&QRSk5,&QRS_f, &nPB, &nPE, &nISO, &nQ, &nJ, &nTB, &nTX, &nTE
) > 0) &&
( i < LEN_BUFF_F ) ){
data_fin[i].index=index;
data_fin[i].HR=HR;
data_fin[i].l0_ST80=l0_ST80; data_fin[i].l0_ST20=l0_ST20;
data_fin[i].l1_ST80=l1_ST80; data_fin[i].l1_ST20=l1_ST20;
data_fin[i].l2_ST80=l2_ST80; data_fin[i].l2_ST20=l2_ST20;
if ( ALL_ONE ){
data_fin[i].l0_ST80=l0_ST80; data_fin[i].l0_ST20=l0_ST20;
data_fin[i].l1_ST80=l0_ST80; data_fin[i].l1_ST20=l0_ST20;
data_fin[i].l2_ST80=l0_ST80; data_fin[i].l2_ST20=l0_ST20;
}
data_fin[i].STk1=STk1; data_fin[i].STk2=STk2; data_fin[i].STk3=STk3; data_fin[i].STk4=STk4; data_fin[i].STk5=STk5;
data_fin[i].ST_f=ST_f;
data_fin[i].QRSk1=QRSk1; data_fin[i].QRSk2=QRSk2; data_fin[i].QRSk3=QRSk3; data_fin[i].QRSk4=QRSk4; data_fin[i].QRSk5=QRSk5;
data_fin[i].QRS_f=QRS_f;
data_fin[i].nPB=nPB; data_fin[i].nPE=nPE; data_fin[i].nQ=nQ;
data_fin[i].nJ=nJ; data_fin[i].nTB=nTB; data_fin[i].nTX=nTX; data_fin[i].nTE=nTE; data_fin[i].nISO=nISO;
data_fin[i].lin_v[0]=0.0; data_fin[i].lin_v[1]=0.0; data_fin[i].lin_v[2]=0.0;
data_fin[i].sub_v[0]=0.0; data_fin[i].sub_v[1]=0.0; data_fin[i].sub_v[2]=0.0;
i++;
}
i--;
fin_last_index=i;
time_begin_lead=IndexToTime(data_fin[0].index);
time_end_lead=IndexToTime(data_fin[i].index);
TimeToHoursMinSec(time_begin_lead, &hours_b, &minutes_b, &seconds_b, &hour_l);
TimeToHoursMinSec(time_end_lead, &hour_l, &minutes_e, &seconds_e, &hours_e);
while ( data_raw[raw_last_index].index > data_fin[fin_last_index].index ) raw_last_index--;
while ( data_raw[raw_last_index].index < data_fin[fin_last_index-1].index ) fin_last_index--;
time_end_lead=IndexToTime(data_raw[raw_last_index].index);
}
time_begin_lead=0;
diagram_time_begin_lead=0;
current_iso_m = data_fin[0].nISO;
current_j_m = data_fin[0].nJ;
long r_i, end_i;
long GR_index,act_ind;
int leadx;
references_index[0]=-1; references_index[1]=-1; references_index[2]=-1;
if (file_save != NULL ) {
reset_global_reference();
Marker[0].set=FALSE; Marker[1].set=FALSE; Marker[2].set=FALSE;
n_data=1;
i=0; leadx=0;
while ( n_data > 0) {
n_data= fscanf(file_save,"%ld %ld %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \n",&references[leadx][i].raw_index, &references[leadx][i].fine_index,&references[leadx][i].lead, &references[leadx][i].code1, &references[leadx][i].code2, &references[leadx][i].raw_ST80,&references[leadx][i].raw_ST20,&references[leadx][i].ST_sub, &references[leadx][i].fine_ST80,&references[leadx][i].fine_ST20,&references[leadx][i].STd,&references[leadx][i].ST80,&references[leadx][i].STsl,&references[leadx][i].raw_HR,&references[leadx][i].fine_HR,&references[leadx][i].nPB,&references[leadx][i].nPE,&references[leadx][i].nISO,&references[leadx][i].nQ,&references[leadx][i].nJ,&references[leadx][i].nJ80,&references[leadx][i].nTB,&references[leadx][i].nTX,&references[leadx][i].nTE,&references[leadx][i].window,&references[leadx][i].NL,&references[leadx][i].NR,&references[leadx][i].NS);
if ((leadx == 0 ) && (references[leadx][i].lead == 1)){
references_index[0]= i-1;
references[1][0].copy_ref( references[0][i]);
leadx=1;
i=0;
}
if ((leadx == 1 ) && (references[leadx][i].lead == 2)){
references_index[1]= i-1;
references[2][0].copy_ref( references[1][i]);
leadx=2;
i=0;
}
i++;
}
references_index[leadx]= i-2;
i=0;
while (!Is_code(0,i,0, -1 )){
for (r_i=0; (data_raw[r_i].index != references[0][i].raw_index ); r_i++);
references[0][i].raw_index =r_i;
for (r_i=0; (data_fin[r_i].index != references[0][i].fine_index ) && (r_i < fin_last_index ); r_i++);
references[0][i].fine_index =r_i;
i++;
}
// GR
for (r_i=0; (data_raw[r_i].index != references[0][i].raw_index ) && (r_i < raw_last_index ); r_i++);
references[0][i].raw_index =r_i;
for (r_i=0; (data_fin[r_i].index != references[0][i].fine_index ) && (r_i < fin_last_index ); r_i++);
references[0][i].fine_index =r_i;
global_ref[0].copy_ref( references[0][i]);
global_ref[0].set=TRUE;
global_set=TRUE;
act_reference[0].set=TRUE;
act_reference[0].change=FALSE;
act_reference[0].typ=1; // global
act_reference[0].index=-1;
act_reference[1].set=TRUE;
act_reference[1].change=FALSE;
act_reference[1].typ=1; // global
act_reference[1].index=-1;
act_reference[2].set=TRUE;
act_reference[2].change=FALSE;
act_reference[2].typ=1; // global
act_reference[2].index=-1;
data_mstime_index= data_fin[global_ref[0].fine_index].index;
reference_mstime_index= data_mstime_index;
data_new_r_read();
act_ref_data[0].copy_ref(global_ref[0]);
new_global_reference(1);
get_average_R();
data_new_m_read();
global_set=TRUE;
for (; i < references_index[0]; i++) {
references[0][i].copy_ref( references[0][i+1]);
for (r_i=0; (data_raw[r_i].index != references[0][i].raw_index ) && (r_i < raw_last_index ); r_i++);
references[0][i].raw_index =r_i;
for (r_i=0; (data_fin[r_i].index != references[0][i].fine_index ) && (r_i < fin_last_index ); r_i++);
references[0][i].fine_index =r_i;
}
references_index[0]=references_index[0]-1;
reference_act[0]=-1; reference_act[1]=-1; reference_act[2]=-1;
if (references_index[1] >= 0 ) {
i=0;
while (!Is_code(1,i,0, -1 )){
for (r_i=0; (data_raw[r_i].index != references[1][i].raw_index ); r_i++);
references[1][i].raw_index =r_i;
for (r_i=0; (data_fin[r_i].index != references[1][i].fine_index ) && (r_i < fin_last_index ); r_i++);
references[1][i].fine_index =r_i;
i++;
}
for (r_i=0; (data_raw[r_i].index != references[1][i].raw_index ) && (r_i < raw_last_index ); r_i++);
references[1][i].raw_index =r_i;
for (r_i=0; (data_fin[r_i].index != references[1][i].fine_index ) && (r_i < fin_last_index ); r_i++);
references[1][i].fine_index =r_i;
global_ref[1].copy_ref( references[1][i]);
global_ref[1].set=TRUE;
act_ref_data[1].copy_ref(global_ref[1]);
for (; i < references_index[1]; i++) {
references[1][i].copy_ref( references[1][i+1]);
for (r_i=0; (data_raw[r_i].index != references[1][i].raw_index ) && (r_i < raw_last_index ); r_i++);
references[1][i].raw_index =r_i;
for (r_i=0; (data_fin[r_i].index != references[1][i].fine_index ) && (r_i < fin_last_index ); r_i++);
references[1][i].fine_index =r_i;
}
references_index[1]=references_index[1]-1;
}
if (references_index[2] >= 0 ) {
i=0;
while (!Is_code(2,i,0, -1 )){
for (r_i=0; (data_raw[r_i].index != references[2][i].raw_index ); r_i++);
references[2][i].raw_index =r_i;
for (r_i=0; (data_fin[r_i].index != references[2][i].fine_index ) && (r_i < fin_last_index ); r_i++);
references[2][i].fine_index =r_i;
i++;
}
for (r_i=0; (data_raw[r_i].index != references[2][i].raw_index ) && (r_i < raw_last_index ); r_i++);
references[2][i].raw_index =r_i;
for (r_i=0; (data_fin[r_i].index != references[2][i].fine_index ) && (r_i < fin_last_index ); r_i++);
references[2][i].fine_index =r_i;
global_ref[2].copy_ref( references[2][i]);
global_ref[2].set=TRUE;
act_ref_data[2].copy_ref(global_ref[2]);
for (; i < references_index[2]; i++) {
references[2][i].copy_ref( references[2][i+1]);
for (r_i=0; (data_raw[r_i].index != references[2][i].raw_index ) && (r_i < raw_last_index ); r_i++);
references[2][i].raw_index =r_i;
for (r_i=0; (data_fin[r_i].index != references[2][i].fine_index ) && (r_i < fin_last_index ); r_i++);
references[2][i].fine_index =r_i;
}
references_index[2]=references_index[2]-1;
}
fclose(file_save);
data_mstime_index= data_fin[global_ref[0].fine_index].index;
reference_mstime_index= data_fin[global_ref[0].fine_index].index;
xv_set(Sem_0_d_bw.d_b_OvrRef, PANEL_INACTIVE, FALSE, NULL);
data_new_r_read();
act_ref_data[0].copy_ref(global_ref[0]);
act_ref_data[1].copy_ref(global_ref[1]);
act_ref_data[2].copy_ref(global_ref[2]);
Marker[0].raw_index=global_ref[0].raw_index;
Marker[1].raw_index=global_ref[0].raw_index;
Marker[2].raw_index=global_ref[0].raw_index;
new_global_reference(3);
lin_function(0);
set_buttons_lead0_setGR();
set_buttons_lead0();
Lead0_operation=0;
draw_grid_lead0(0);
if (lead1_data ) {
lin_function(1);
draw_grid_lead0(1);
set_buttons_lead1_setGR();
set_buttons_lead1();
}
if (lead2_data ) {
lin_function(2);
draw_grid_lead0(2);
set_buttons_lead2_setGR();
set_buttons_lead2();
}
show_data(Data_lead,TRUE, FALSE);
int l;
l=0;
} // read annottations
xv_set(Sem_0_o_pw.o_b_Cancel, XV_SHOW, TRUE, NULL);
xv_set(Sem_0_o_pw.o_b_OK, XV_SHOW, TRUE, NULL);
xv_set(Sem_0_o_pw.o_m_message1, XV_SHOW, FALSE, NULL);
// gxv_start_connections DO NOT EDIT THIS SECTION
xv_set(Sem_0_o_pw.o_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_o_pw.o_pw, XV_SHOW, FALSE, NULL);
// gxv_end_connections
}
//
// Notify callback function for `q_b_Cancel'.
//
void
sem_0_q_pw_q_b_Cancel_notify_callback(Panel_item item, Event *event)
{
sem_0_q_pw_objects *ip = (sem_0_q_pw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
xv_set(Sem_0_q_pw.q_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_q_pw.q_pw, XV_SHOW, FALSE, NULL);
// gxv_end_connections
}
//
// Notify callback function for `q_b_Quit'.
//
void
semia_terminate(Panel_item item, Event *event)
{
sem_0_q_pw_objects *ip = (sem_0_q_pw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
xv_set(Sem_0_o_pw.o_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_o_pw.o_pw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_k_bw.k_bw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_m_bw.m_bw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_q_pw.q_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_q_pw.q_pw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_w_pw.w_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_w_pw.w_pw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_d_bw.d_bw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_l_bw.l_bw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_d_pw.d_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_d_pw.d_pw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_c_pw.c_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_c_pw.c_pw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_h_pw.h_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_h_pw.h_pw, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_bw1, XV_SHOW, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_bw2, XV_SHOW, FALSE, NULL);
// gxv_end_connections
exit(0);
}
//
// Notify callback function for `w_b_OK'.
//
void
sem_0_w_pw_w_b_OK_notify_callback(Panel_item item, Event *event)
{
sem_0_w_pw_objects *ip = (sem_0_w_pw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
xv_set(Sem_0_w_pw.w_pw, FRAME_CMD_PUSHPIN_IN, FALSE, NULL);
xv_set(Sem_0_w_pw.w_pw, XV_SHOW, FALSE, NULL);
// gxv_end_connections
}
//
// Notify callback function for `d_ss_16s'.
//
void
d_call_16s(Panel_item item, int value, Event *event)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (value){
case 0: current_average_window_time= 0; break; // single
case 1: current_average_window_time= 1; break; // 2 sec
case 2: current_average_window_time= 2 ; break; // 4 sec
case 3: current_average_window_time= 3 ; break; // 6 sec
case 4: current_average_window_time= 5 ; break; // 10 sec
case 5: current_average_window_time= 8 ; break; // 16 sec - default
case 6: current_average_window_time= 10 ; break; // 20 sec
case 7: current_average_window_time= 15 ; break; // 30 sec
case 8: current_average_window_time= 30 ; break; // 60 sec
case 9: current_average_window_time= 60 ; break; // 120 sec = 2 min
case 10: current_average_window_time= 90 ; break; // 180 sec = 3 min
case 11: current_average_window_time= 120 ; break; // 240 sec = 4 min
case 12: current_average_window_time= 150 ; break; // 300 sec = 5 min
}
Marker[Data_lead].window= 2 * current_average_window_time;
current_average_window_index=current_average_window_time * FSAMP; // sec to index
if ( (act_reference[0].set ) && (act_reference[0].change ) ) {
if ( act_reference[0].typ == 1 ) {
act_ref_data[Data_lead].window=Marker[Data_lead].window;
get_average_R();}
}
if ( last_set_all ) {
Marker[0].window= 2 * current_average_window_time; update_marker(0,161);
if (lead1_data) {Marker[1].window= 2 * current_average_window_time;update_marker(1,100161);}
if (lead2_data) {Marker[2].window= 2 * current_average_window_time;update_marker(2,200161);}
}
else update_marker(Data_lead,25);
if ( (act_reference[0].set ) && (act_reference[0].change ) ) {
if ( act_reference[0].typ == 1 ) {
update_global_ref(0,TRUE,33);
act_ref_data[0].copy_ref(global_ref[0]);
update_marker(0,34);
if (lead1_data) { update_global_ref(1,TRUE,10036); act_ref_data[1].copy_ref(global_ref[1]);
update_marker(1,10040); }
if (lead2_data) { update_global_ref(2,TRUE,20038); act_ref_data[2].copy_ref(global_ref[2]);
update_marker(2,20041); }
}
}
if (status_consider_localref) {
if ((reference_act[Data_lead] >= 0 ) && ( Marker[Data_lead].raw_index == references[Data_lead][reference_act[Data_lead]].raw_index ) ){
if ( Is_code(Data_lead,reference_act[Data_lead],4,0) ) { // dumy
update_act_ann(0, reference_act[0], TRUE,27);
if (lead1_data) { update_act_ann(1, reference_act[1], TRUE,10030);}
if (lead2_data) { update_act_ann(2, reference_act[2], TRUE,20031);}
}
else {
//
if ( Is_code(Data_lead,reference_act[Data_lead],18,0) ) { update_act_ann(Data_lead, reference_act[Data_lead], TRUE, 23); }
else
//
update_act_ann(Data_lead, reference_act[Data_lead], FALSE,32);
}
}
}
show_data(Data_lead,TRUE, FALSE);
// write_ref_data_l0();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `d_ss_520ms'.
//
void
d_call_520ms(Panel_item item, int value, Event *event)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
current_average_beat_time=200 + 80 *value ; // 200 m sec
d_avrg_index = current_average_beat_time / ( 1000 / FSAMP ) /2 ;
if ( (act_reference[0].set ) && (act_reference[0].change ) ) {
if ( act_reference[0].typ == 1 ) {
act_ref_data[Data_lead].window=Marker[Data_lead].window;
data_mstime_index= data_fin[Marker[Data_lead].fine_index].index;
reference_mstime_index= data_mstime_index;
data_new_r_read();
get_average_R();}
}
if ( last_set_all ) {
update_marker(0,162);
if (lead1_data) {update_marker(1,100162);}
if (lead2_data) {update_marker(2,200162);}
}
else update_marker(Data_lead,163);
if ( (act_reference[0].set ) && (act_reference[0].change ) ) {
if ( act_reference[0].typ == 1 ) {
update_global_ref(0,TRUE,164);
act_ref_data[0].copy_ref(global_ref[0]);
update_marker(0,165);
if (lead1_data) { update_global_ref(1,TRUE,100166); act_ref_data[1].copy_ref(global_ref[1]);
update_marker(1,100167); }
if (lead2_data) { update_global_ref(2,TRUE,200168); act_ref_data[2].copy_ref(global_ref[2]);
update_marker(2,200169); }
}
}
if (status_consider_localref) {
if (reference_act[Data_lead] >= 0 ){
if ( Is_code(Data_lead,reference_act[Data_lead],4,0) ) { // dumy
update_act_ann(0, reference_act[0], TRUE,170);
if (lead1_data) { update_act_ann(1, reference_act[1], TRUE,100171);}
if (lead2_data) { update_act_ann(2, reference_act[2], TRUE,100172);}
}
else {
//
if ( Is_code(Data_lead,reference_act[Data_lead],18,0) ) { update_act_ann(Data_lead, reference_act[Data_lead], TRUE, 23); }
else
//
update_act_ann(Data_lead, reference_act[Data_lead], FALSE,173);
}
}
}
show_data(Data_lead,TRUE, FALSE);
// write_ref_data_l0();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `d_ss_6s'.
//
void
d_call_6s(Panel_item item, int value, Event *event)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (value){
case 0: data_scale= 1; data_tick=80; break; // 80*960/1000 / 1
case 1: data_scale = 2; data_tick=80; break;
case 2: data_scale = 4; data_tick=80;break;
case 3: data_scale = 5; data_tick=160;break;
case 4: data_scale = 6; data_tick=160;break;
case 5: data_scale = 8; data_tick=160;break;
case 6: data_scale = 10; data_tick=160;break;
case 7: data_scale = 12; data_tick=320;break;
case 8: data_scale = 15; data_tick=320;break;
case 9: data_scale = 20; data_tick=320;break;
case 10: data_scale = 25; data_tick=640; break;
case 11: data_scale = 30; data_tick=640;break;
case 12: data_scale = 45; data_tick=1280; break;
case 13: data_scale = 60; data_tick=1280;break;
}
data_grid_tick= data_tick * 960.0 / data_scale / 1000.0;
show_data(Data_lead,TRUE,FALSE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `d_ss_1mV'.
//
void
d_call_1mV(Panel_item item, int value, Event *event)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (value){
case 0: ampl_d= 50; break; // 50 uV
case 1: ampl_d= 75; break;
case 2: ampl_d= 100; break;
case 3: ampl_d= 125; break;
case 4: ampl_d= 150; break;
case 5: ampl_d= 200; break;
case 6: ampl_d= 250; break;
case 7: ampl_d= 500; break;
case 8: ampl_d= 750; break;
case 9: ampl_d= 1000; break; // default 1mV
case 10: ampl_d= 2000; break;
case 11: ampl_d= 5000; break;
}
show_data(Data_lead,TRUE,FALSE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `d_b_OvrLds_menu'.
//
void
d_call_menu_OvrLds(Panel_item item, Event *event)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `d_b_OvrRef'.
//
void
d_call_OvrRef(Panel_item item, Event *event)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if (!data_ovr_ref ) {
xv_set(Sem_0_d_bw.d_b_OvrRef, PANEL_LABEL_STRING, "UnOvrRef", NULL);
data_ovr_ref=TRUE;
}
else {
xv_set(Sem_0_d_bw.d_b_OvrRef, PANEL_LABEL_STRING, "OvrRef", NULL);
data_ovr_ref=FALSE;
}
show_data(Data_lead,FALSE, FALSE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Event callback function for `d_cp'.
//
Notify_value
sem_0_d_bw_d_cp_event_callback(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
if (event_action(event) == ACTION_SELECT)
{
d_call_left(win, event, arg, type);
}
if (event_action(event) == ACTION_ADJUST)
{
d_call_center(win, event, arg, type);
}
if (event_action(event) == ACTION_MENU)
{
d_call_right(win, event, arg, type);
}
// gxv_end_connections
return notify_next_event_func(win, (Notify_event) event, arg, type);
}
//
// User-defined action for `d_cp'.
//
void
d_call_left(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
}
//
// User-defined action for `d_cp'.
//
void
d_call_center(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
}
//
// User-defined action for `d_cp'.
//
void
d_call_right(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
}
//
// Notify callback function for `l_b_shift_ll'.
//
void
l_call_shift_ll(Panel_item item, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( TimeToIndex(diagram_time_begin_lead) > TimeToIndex(time_begin_lead)) {
x=TimeToIndex(diagram_time_begin_lead-time_scale_0);
if ( x < 0 ) x=0;
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=0;
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the beginning of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_shift_l'.
//
void
l_call_shift_l(Panel_item item, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( (x=TimeToIndex(diagram_time_begin_lead-time_scale_0/2)) >= TimeToIndex(time_begin_lead)) {
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=0;
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the beginning of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_shift_r'.
//
void
l_call_shift_r(Panel_item item, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( (x=TimeToIndex(diagram_time_begin_lead+time_scale_0/2)) <= TimeToIndex(time_end_lead)) {
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=TimeToIndex(time_end_lead);
y = x % 60000;
if ( y > 30000 ) { y = - (60000 -y); }
x=x - y;
if (x < 0 ) x=0;
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the end of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_shift_rr'.
//
void
l_call_shift_rr(Panel_item item, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( (x=TimeToIndex(diagram_time_begin_lead+time_scale_0)) <= TimeToIndex(time_end_lead)) {
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=TimeToIndex(time_end_lead);
y = x % 60000;
if ( y > 30000 ) { y = - (60000 -y); }
x=x - y;
if (x < 0 ) x=0;
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the end of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_ss_HRate'.
//
void
l_call_HRate(Panel_item item, int value, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
reset_HR_lead0(0);
switch (value){
case 0: lead0_plot_button_status.HRate=TRUE; break;
case 1: lead0_plot_button_status.HRRaw=TRUE;break;
case 2: lead0_plot_button_status.STFine=TRUE;break;
case 3: lead0_plot_button_status.STslFine=TRUE;break;
case 4: lead0_plot_button_status.STslRaw=TRUE;break;
case 5: lead0_plot_button_status.Episodes=TRUE;break;
case 6: lead0_plot_button_status.HideHR=TRUE; break;
case 7: lead0_plot_button_status.ISOJ=TRUE; break;
case 8: lead0_plot_button_status.HRate=TRUE;
xv_set(Sem_0_l_bw.l_ss_HRate, PANEL_VALUE, 0, NULL);
break;
case 9: lead0_plot_button_status.HRate=TRUE;
xv_set(Sem_0_l_bw.l_ss_HRate, PANEL_VALUE, 0, NULL);
break;
} // end select
draw_grid_lead0(0);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_ss_12min'.
//
void
l_call_12min(Panel_item item, int value, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (value){
case 0: time_scale_0=60; break;
case 1: time_scale_0=120; break;
case 2: time_scale_0=180; break;
case 3: time_scale_0=360; break;
case 4: time_scale_0=540; break;
case 5: time_scale_0=720; break;
case 6: time_scale_0=1440; break;
case 7: time_scale_0=1800; break;
case 8: time_scale_0=3600; break;
case 9: time_scale_0=7200; break;
case 10: time_scale_0=14400; break;
case 11: time_scale_0=21600; break;
case 12: time_scale_0=43200; break;
case 13: time_scale_0=86400; break;
case 14: time_scale_0=172800; break;
case 15: time_scale_0=345600; break;
}
scale_time_tick=(long)(time_scale_0 / 12.0);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_ss_12min1, PANEL_VALUE,value,NULL);
xv_set(Sem_0_l_bw2.l_ss_12min2, PANEL_VALUE,value,NULL);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_ss_100mV'.
//
void
l_call_100mV(Panel_item item, int value, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (value){
case 0: ampl_0=20; break;
case 1: ampl_0=25; break;
case 2: ampl_0=50; break;
case 3: ampl_0=75; break;
case 4: ampl_0=100; break;
case 5: ampl_0=125; break;
case 6: ampl_0=150; break;
case 7: ampl_0=200; break;
case 8: ampl_0=250; break;
case 9: ampl_0=500; break;
case 10: ampl_0=750; break;
case 11: ampl_0=1000; break;
case 12: ampl_0=2000; break;
case 13: ampl_0=5000; break;
}
draw_grid_lead0(0);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_Mark'.
//
void
l_call_Mark(Panel_item item, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
Lead0_operation=1;
sub_op0_start();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_Subtr'.
//
void
l_call_Subtr(Panel_item item, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if ( status_unsubtracted ) {
Lead0_buttons.Subtr_s=2;
status_unsubtracted =FALSE;
if (status_manual_mode)
set_buttons_lead0_subtr_manual();
else
set_buttons_lead0_subtr_auto();
}
else {
Lead0_buttons.Subtr_s=1;
status_unsubtracted =TRUE;
if (status_manual_mode)
set_buttons_lead0_unsubtr_manual();
else
set_buttons_lead0_unsubtr_auto();
}
set_buttons_lead0(); draw_grid_lead0(0);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_OvrApp'.
//
void
l_call_OvrApp(Panel_item item, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if ( Lead0_buttons.OvrApp_s == 1 ) {
Lead0_buttons.OvrApp_s=2; ovr0_app = TRUE;
}
else {
Lead0_buttons.OvrApp_s=1; ovr0_app = FALSE;
}
set_buttons_lead0(); draw_grid_lead0(0);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_OvrLds_menu'.
//
void
l_call_menu_OvrLds(Panel_item item, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_Exm'.
//
void
l_call_Exm(Panel_item item, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
Lead0_operation=9;
sub_op0_start();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_ConsLR'.
//
void
l_call_ConsLR(Panel_item item, Event *event)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if ( status_manual_mode && status_unsubtracted && Lead0_buttons.ConsLR_s == 1 ) {
if ( reference_act[0] > -1 )
if ( Is_code(0,reference_act[0],0,0)) {
Lead0_buttons.ConsLR_s=2;
status_consider_localref=FALSE;
set_buttons_lead0_conslr();
act_ref_data[0].copy_ref(references[0][reference_act[0]]);
act_reference[0].set=TRUE;
act_reference[0].change=FALSE;
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
act_reference[0].typ=2; // local
act_reference[0].index=reference_act[0];
data_mstime_index= data_fin[Marker[0].fine_index].index;
reference_mstime_index= data_fin[act_ref_data[0].fine_index].index;
data_new_r_read();
get_average_R();
update_marker(0,192);
draw_grid_lead0(0);
show_data(0,FALSE, FALSE);
} // end cons loc ref
}
else if ( Lead0_buttons.ConsLR_s == 2 ) {
Lead0_buttons.ConsLR_s=1;
status_consider_localref=TRUE;
set_buttons_lead0_unsubtr_manual();
if ( global_ref[0].set) {
act_ref_data[0].copy_ref(global_ref[0]);
act_ref_data[0].code1=0;
act_reference[0].set=TRUE;
act_reference[0].change=FALSE;
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
act_reference[0].typ=1; // global
act_reference[0].index=-1;
data_mstime_index= data_fin[Marker[0].fine_index].index;
reference_mstime_index= data_fin[act_ref_data[0].fine_index].index;
data_new_r_read();
get_average_R();
update_marker(0,192);
} // end cons loc ref
draw_grid_lead0(0);
show_data(0,FALSE, FALSE);
}
set_buttons_lead0();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Event callback function for `l_cp'.
//
Notify_value
sem_0_l_bw_l_cp_event_callback(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
if (event_action(event) == ACTION_SELECT)
{
l_call_left(win, event, arg, type);
}
if (event_action(event) == ACTION_ADJUST)
{
l_call_center(win, event, arg, type);
}
if (event_action(event) == ACTION_MENU)
{
l_call_right(win, event, arg, type);
}
// gxv_end_connections
return notify_next_event_func(win, (Notify_event) event, arg, type);
}
//
// Repaint callback function for `l_cp'.
//
void
l_ini_lcp(Canvas canvas, Xv_window paint_window, Display *display, Window xid, Xv_xrectlist *rects)
{
gcLead0 = DefaultGC(display, DefaultScreen(display));
l_b_display = display;
l_b_window = xid;
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// User-defined action for `l_cp'.
//
void
l_call_left(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
long x,y,i, dx;
long c_Time;
char pr_time[12];
int lead = 0;
x=(event->ie_xevent)->xbutton.x ;
c_Time = (long)(FSAMP *(diagram_time_begin_lead+ double(x-160.0)*time_scale_0/960.0));
if ( ( c_Time < data_raw[raw_display_begin].index) || ( c_Time > data_fin[fin_display_end].index ) ) return;
i=raw_display_begin;
while ( (c_Time > data_raw[i].index) && (i < (raw_display_end)) ) i++;
dx= abs(c_Time - data_raw[i].index);
click_l0.first=! click_l0.first;
click_l0.x=(event->ie_xevent)->xbutton.x;
click_l0.y=(event->ie_xevent)->xbutton.y;
if ( click_l0.first ){
dx= abs(c_Time - data_raw[i].index);
if (dx == 0) {
click_l0.raw_l=i; click_l0.raw_r=i; click_l0.raw=i;
}
else { click_l0.raw_l=i-1; click_l0.raw_r=i;
if ( dx < FSAMP) { click_l0.raw=i;}
else { click_l0.raw=i-1;}
}
i=click_l0.raw;
i=fin_display_begin;
while ( ( data_raw[click_l0.raw].index > data_fin[i].index) && (i < (fin_display_end+1)) )
{
i++;
}
dx= abs( data_raw[click_l0.raw].index - data_fin[i].index);
if (dx == 0) {
click_l0.fine_l=i; click_l0.fine_r=i; click_l0.fine=i;
}
else { click_l0.fine_l=i-1; click_l0.fine_r=i;
click_l0.fine=i;
}
i=click_l0.fine;
XAllocNamedColor(l_b_display, cmap,set_color8, &col, & unused);
XSetForeground(l_b_display, gcLead0, col.pixel);
if (Lead0_operation == 0 || ( Lead0_operation != 0 && click_l0.y > BORDER_SEP_CLICK) ) {
if ( click_l0.y > BORDER_SEP_CLICK ) {
XFillRectangle(l_b_display, l_b_window, gcLead0, 40,162,90,15);
XAllocNamedColor(l_b_display, cmap,"black", &col, & unused);
XSetForeground(l_b_display, gcLead0, col.pixel);
sprintf(pr_time, "%s",mstimstr(c_Time));
XDrawString(l_b_display, l_b_window, gcLead0, 42, 174, pr_time, strlen(pr_time));
XAllocNamedColor(l_b_display, cmap,"white", &col, & unused);
XSetForeground(l_b_display, gcLead0, col.pixel);
XFillRectangle(l_b_display, l_b_window, gcLead0, 1,55,130,90);
XAllocNamedColor(l_b_display, cmap,set_color8, &col, & unused);
XSetForeground(l_b_display, gcLead0, col.pixel);
XFillRectangle(l_b_display, l_b_window, gcLead0, 1, 55,130,12);
XFillRectangle(l_b_display, l_b_window, gcLead0, 1, 79,130,24);
XFillRectangle(l_b_display, l_b_window, gcLead0, 1, 108, 130,12);
XAllocNamedColor(l_b_display, cmap,"black", &col, & unused);
XSetForeground(l_b_display, gcLead0, col.pixel);
sprintf(pr_buff, "RAW: %14s",mstimstr(data_raw[click_l0.raw].index));
XDrawString(l_b_display, l_b_window, gcLead0, 2, 66, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]",data_raw[click_l0.raw].HR);
XDrawString(l_b_display, l_b_window, gcLead0, 2, 78, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"ST80:");
XDrawString(l_b_display, l_b_window, gcLead0, 2, 90, pr_buff, strlen(pr_buff));
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[click_l0.raw].l0_ST80),
mk_uv(data_raw[click_l0.raw].l0_ST80)-click_ST80_0);
click_ST80_0 = mk_uv(data_raw[click_l0.raw].l0_ST80);
XDrawString(l_b_display, l_b_window, gcLead0, 40, 90, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"STSb:");
XDrawString(l_b_display, l_b_window, gcLead0, 2, 102, pr_buff, strlen(pr_buff));
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[click_l0.raw].sub_v[lead]),
mk_uv(data_raw[click_l0.raw].sub_v[lead]) - click_STsb_0);
click_STsb_0 = mk_uv(data_raw[click_l0.raw].sub_v[lead]);
XDrawString(l_b_display, l_b_window, gcLead0, 40, 102, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "FINE: %14s",mstimstr(data_fin[click_l0.fine].index));
XDrawString(l_b_display, l_b_window, gcLead0, 2, 120, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]", data_fin[click_l0.fine].HR);
XDrawString(l_b_display, l_b_window, gcLead0, 2, 132, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"ST80:");
XDrawString(l_b_display, l_b_window, gcLead0, 2, 144, pr_buff, strlen(pr_buff));
sprintf(pr_buff," %6d/%6d", mk_uv( data_fin[click_l0.fine].l0_ST80),
mk_uv( data_fin[click_l0.fine].l0_ST80) - click_ST80_f0);
click_ST80_f0 = mk_uv( data_fin[click_l0.fine].l0_ST80);
XDrawString(l_b_display, l_b_window, gcLead0, 40, 144, pr_buff, strlen(pr_buff));
}
else {
if (IS_free(0, click_l0.raw,0)) {
Lead0_operation = 1;
Marker[0].set=TRUE;
Marker[0].raw_index=click_l0.raw; Marker[0].fine_index=click_l0.fine;
set_marker_l(0);
draw_grid_lead0(0);
show_data(0,FALSE, TRUE);
Lead0_operation = 0;}
}
} else {
sub_op0_exec();
}
}
else {
XAllocNamedColor(l_b_display, cmap,"white", &col, & unused);
XSetForeground(l_b_display, gcLead0, col.pixel);
XFillRectangle(l_b_display, l_b_window, gcLead0, 40,162,90,15);
XAllocNamedColor(l_b_display, cmap,"black", &col, & unused);
XSetForeground(l_b_display, gcLead0, col.pixel);
}
}
//
// User-defined action for `l_cp'.
//
void
l_call_center(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
if (Lead0_operation != 0 ) return;
def_click click_tmp0;
long x,y,i, dx;
long c_Time;
char pr_time[12];
long r_i;
int lead = 0;
short Lead0_operation_tmp;
x=(event->ie_xevent)->xbutton.x ;
c_Time = (long)(FSAMP *(diagram_time_begin_lead+ double(x-160.0)*time_scale_0/960.0));
if ( ( c_Time < data_raw[raw_display_begin].index) || ( c_Time > data_fin[fin_display_end].index ) ) return;
i=raw_display_begin;
while ( (c_Time > data_raw[i].index) && (i < (raw_display_end)) ) i++;
dx= abs(c_Time - data_raw[i].index);
click_c0.first=! click_c0.first;
click_c0.x=(event->ie_xevent)->xbutton.x;
click_c0.y=(event->ie_xevent)->xbutton.y;
if ( click_c0.first ){
dx= abs(c_Time - data_raw[i].index);
if (dx == 0) {
click_c0.raw_l=i; click_c0.raw_r=i; click_c0.raw=i;
}
else { click_c0.raw_l=i-1; click_c0.raw_r=i;
if ( dx < FSAMP) { click_c0.raw=i;}
else { click_c0.raw=i-1;}
}
i=click_c0.raw;
i=fin_display_begin;
while ( ( data_raw[click_c0.raw].index > data_fin[i].index) && (i < (fin_display_end+1)) )
{
i++;
}
dx= abs( data_raw[click_c0.raw].index - data_fin[i].index);
if (dx == 0) {
click_c0.fine_l=i; click_c0.fine_r=i; click_c0.fine=i;
}
else { click_c0.fine_l=i-1; click_c0.fine_r=i;
click_c0.fine=i;
}
i=click_c0.fine;
if ( click_c0.y <= BORDER_SEP_CLICK ) {
Lead0_operation_tmp = Lead0_operation;
Lead0_operation = 9;
click_tmp0.first = click_l0.first;
click_tmp0.x = click_l0.x;
click_tmp0.y = click_l0.y;
click_tmp0.time_index = click_l0.time_index;
click_tmp0.raw = click_l0.raw;
click_tmp0.raw_l = click_l0.raw_l;
click_tmp0.raw_r = click_l0.raw_r;
click_tmp0.fine = click_l0.fine;
click_tmp0.fine_l = click_l0.fine_l;
click_tmp0.fine_r = click_l0.fine_r;
click_l0.first = click_c0.first;
click_l0.x = click_c0.x;
click_l0.y = click_c0.y;
click_l0.time_index = click_c0.time_index;
click_l0.raw = click_c0.raw;
click_l0.raw_l = click_c0.raw_l;
click_l0.raw_r = click_c0.raw_r;
click_l0.fine = click_c0.fine;
click_l0.fine_l = click_c0.fine_l;
click_l0.fine_r = click_c0.fine_r;
fast0_center = TRUE;
if (!repeat_set) {
fast0_center = FALSE; // &&
sub_op0_start(); // &&
}
sub_op0_exec();
fast0_center = FALSE;
click_l0.first = click_tmp0.first;
click_l0.x = click_tmp0.x;
click_l0.y = click_tmp0.y;
click_l0.time_index = click_tmp0.time_index;
click_l0.raw = click_tmp0.raw;
click_l0.raw_l = click_tmp0.raw_l;
click_l0.raw_r = click_tmp0.raw_r;
click_l0.fine = click_tmp0.fine;
click_l0.fine_l = click_tmp0.fine_l;
click_l0.fine_r = click_tmp0.fine_r;
Lead0_operation = Lead0_operation_tmp;
}
}
}
//
// User-defined action for `l_cp'.
//
void
l_call_right(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw_objects *ip = (sem_0_l_bw_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
}
//
// Notify callback function for `l_b_shift_ll1'.
//
void
l_call_shift_ll1(Panel_item item, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( TimeToIndex(diagram_time_begin_lead) > TimeToIndex(time_begin_lead)) {
x=TimeToIndex(diagram_time_begin_lead-time_scale_0);
if ( x < 0 ) x=0;
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=0;
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the beginning of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_shift_l1'.
//
void
l_call_shift_l1(Panel_item item, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( (x=TimeToIndex(diagram_time_begin_lead-time_scale_0/2)) >= TimeToIndex(time_begin_lead)) {
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=0;
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the beginning of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_shift_r1'.
//
void
l_call_shift_r1(Panel_item item, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( (x=TimeToIndex(diagram_time_begin_lead+time_scale_0/2)) <= TimeToIndex(time_end_lead)) {
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=TimeToIndex(time_end_lead);
y = x % 60000;
if ( y > 30000 ) { y = - (60000 -y); }
x=x - y;
if (x < 0 ) x=0;
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the end of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_shift_rr1'.
//
void
l_call_shift_rr1(Panel_item item, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( (x=TimeToIndex(diagram_time_begin_lead+time_scale_0)) <= TimeToIndex(time_end_lead)) {
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=TimeToIndex(time_end_lead);
y = x % 60000;
if ( y > 30000 ) { y = - (60000 -y); }
x=x - y;
if (x < 0 ) x=0;
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the end of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_ss_HRate1'.
//
void
l_call_HRate1(Panel_item item, int value, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
reset_HR_lead0(1);
switch (value){
case 0: lead1_plot_button_status.HRate=TRUE; break;
case 1: lead1_plot_button_status.HRRaw=TRUE;break;
case 2: lead1_plot_button_status.STFine=TRUE;break;
case 3: lead1_plot_button_status.STslFine=TRUE;break;
case 4: lead1_plot_button_status.STslRaw=TRUE;break;
case 5: lead1_plot_button_status.Episodes=TRUE;break;
case 6: lead1_plot_button_status.HideHR=TRUE; break;
case 7: lead1_plot_button_status.ISOJ=TRUE; break;
case 8: lead1_plot_button_status.HRate=TRUE;
xv_set(Sem_0_l_bw1.l_ss_HRate1, PANEL_VALUE, 0, NULL);
break;
case 9: lead1_plot_button_status.HRate=TRUE;
xv_set(Sem_0_l_bw1.l_ss_HRate1, PANEL_VALUE, 0, NULL);
break;
} // end select
draw_grid_lead0(1);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_ss_12min1'.
//
void
l_call_12min1(Panel_item item, int value, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (value){
case 0: time_scale_0=60; break;
case 1: time_scale_0=120; break;
case 2: time_scale_0=180; break;
case 3: time_scale_0=360; break;
case 4: time_scale_0=540; break;
case 5: time_scale_0=720; break;
case 6: time_scale_0=1440; break;
case 7: time_scale_0=1800; break;
case 8: time_scale_0=3600; break;
case 9: time_scale_0=7200; break;
case 10: time_scale_0=14400; break;
case 11: time_scale_0=21600; break;
case 12: time_scale_0=43200; break;
case 13: time_scale_0=86400; break;
case 14: time_scale_0=172800; break;
case 15: time_scale_0=345600; break;
} // end select
scale_time_tick=(long)(time_scale_0 / 12.0);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_ss_12min, PANEL_VALUE,value,NULL);
xv_set(Sem_0_l_bw2.l_ss_12min2, PANEL_VALUE,value,NULL);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_ss_100mV1'.
//
void
l_call_100mV1(Panel_item item, int value, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (value){
case 0: ampl_1=20; break;
case 1: ampl_1=25; break;
case 2: ampl_1=50; break;
case 3: ampl_1=75; break;
case 4: ampl_1=100; break;
case 5: ampl_1=125; break;
case 6: ampl_1=150; break;
case 7: ampl_1=200; break;
case 8: ampl_1=250; break;
case 9: ampl_1=500; break;
case 10: ampl_1=750; break;
case 11: ampl_1=1000; break;
case 12: ampl_1=2000; break;
case 13: ampl_1=5000; break;
} // end select
draw_grid_lead0(1);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_Mark1'.
//
void
l_call_Mark1(Panel_item item, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
Lead1_operation=1;
sub_op1_start();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_Subtr1'.
//
void
l_call_Subtr1(Panel_item item, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if ( status_unsubtracted1 ) {
Lead1_buttons.Subtr_s=2;
status_unsubtracted1 =FALSE;
if (status_manual_mode1)
set_buttons_lead1_subtr_manual();
else
set_buttons_lead1_subtr_auto();
}
else {
Lead1_buttons.Subtr_s=1;
status_unsubtracted1 =TRUE;
if (status_manual_mode1)
set_buttons_lead1_unsubtr_manual();
else
set_buttons_lead1_unsubtr_auto();
}
set_buttons_lead1(); draw_grid_lead0(1);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_OvrApp1'.
//
void
l_call_OvrApp1(Panel_item item, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if ( Lead1_buttons.OvrApp_s == 1 ) {
Lead1_buttons.OvrApp_s=2; ovr1_app = TRUE;
}
else {
Lead1_buttons.OvrApp_s=1; ovr1_app = FALSE;
}
set_buttons_lead1(); draw_grid_lead0(1);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_OvrLds_menu1'.
//
void
l_call_menu_OvrLds1(Panel_item item, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_Exm1'.
//
void
l_call_Exm1(Panel_item item, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
Lead1_operation=9;
sub_op1_start();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_ConsLR1'.
//
void
l_call_ConsLR1(Panel_item item, Event *event)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if ( status_manual_mode1 && status_unsubtracted1 && Lead1_buttons.ConsLR_s == 1 ) {
if ( reference_act[1] > -1 )
if ( Is_code(1,reference_act[1],0,0)) {
Lead1_buttons.ConsLR_s=2;
status_consider_localref1=FALSE;
set_buttons_lead1_conslr();
act_ref_data[1].copy_ref(references[1][reference_act[1]]);
act_reference[1].set=TRUE;
act_reference[0].change=FALSE;
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
act_reference[1].typ=2; // local
act_reference[1].index=reference_act[1];
data_mstime_index= data_fin[Marker[1].fine_index].index;
reference_mstime_index= data_fin[act_ref_data[1].fine_index].index;
data_new_r_read();
get_average_R();
update_marker(1,192);
draw_grid_lead0(1);
show_data(1,FALSE, TRUE);
} // end cons loc ref
}
else if ( Lead1_buttons.ConsLR_s == 2 ) {
Lead1_buttons.ConsLR_s=1;
status_consider_localref1=TRUE;
set_buttons_lead1_unsubtr_manual();
if ( global_ref[1].set) {
act_ref_data[1].copy_ref(global_ref[1]);
act_ref_data[1].code1=0;
act_reference[1].set=TRUE;
act_reference[0].change=FALSE;
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
act_reference[1].typ=1; // global
act_reference[1].index=-1;
data_mstime_index= data_fin[Marker[1].fine_index].index;
reference_mstime_index= data_fin[act_ref_data[0].fine_index].index;
data_new_r_read();
get_average_R();
update_marker(1,192);
} // end cons loc ref
draw_grid_lead0(1);
show_data(1,FALSE, TRUE);
}
set_buttons_lead1();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Event callback function for `l_cp1'.
//
Notify_value
sem_0_l_bw1_l_cp1_event_callback(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
if (event_action(event) == ACTION_SELECT)
{
l_call_left1(win, event, arg, type);
}
if (event_action(event) == ACTION_ADJUST)
{
l_call_center1(win, event, arg, type);
}
if (event_action(event) == ACTION_MENU)
{
l_call_right1(win, event, arg, type);
}
// gxv_end_connections
return notify_next_event_func(win, (Notify_event) event, arg, type);
}
//
// User-defined action for `l_cp1'.
//
void
l_call_left1(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
long x,y,i, dx;
long c_Time;
char pr_time[12];
int lead = 1;
x=(event->ie_xevent)->xbutton.x ;
c_Time = (long)(FSAMP *(diagram_time_begin_lead+ double(x-160.0)*time_scale_0/960.0));
if ( ( c_Time < data_raw[raw_display_begin].index) || ( c_Time > data_fin[fin_display_end].index ) ) return;
i=raw_display_begin;
while ( (c_Time > data_raw[i].index) && (i < (raw_display_end)) ) i++;
dx= abs(c_Time - data_raw[i].index);
click_l1.first=! click_l1.first;
click_l1.x=(event->ie_xevent)->xbutton.x;
click_l1.y=(event->ie_xevent)->xbutton.y;
if ( click_l1.first ){
dx= abs(c_Time - data_raw[i].index);
if (dx == 0) {
click_l1.raw_l=i; click_l1.raw_r=i; click_l1.raw=i;
}
else { click_l1.raw_l=i-1; click_l1.raw_r=i;
if ( dx < FSAMP) { click_l1.raw=i;}
else { click_l1.raw=i-1;}
}
i=click_l1.raw;
i=fin_display_begin;
while ( ( data_raw[click_l1.raw].index > data_fin[i].index) && (i < (fin_display_end+1)) )
{ i++; }
dx= abs( data_raw[click_l1.raw].index - data_fin[i].index);
if (dx == 0) {
click_l1.fine_l=i; click_l1.fine_r=i; click_l1.fine=i;
}
else { click_l1.fine_l=i-1; click_l1.fine_r=i;
click_l1.fine=i;
}
i=click_l1.fine;
XAllocNamedColor(l_b1_display, cmap,set_color8, &col, & unused);
XSetForeground(l_b1_display, gcLead1, col.pixel);
if (Lead1_operation == 0 || ( Lead1_operation != 0 && click_l1.y > BORDER_SEP_CLICK) ) {
if ( click_l1.y > BORDER_SEP_CLICK ) {
XFillRectangle(l_b1_display, l_b1_window, gcLead1, 40,162,90,15);
XAllocNamedColor(l_b1_display, cmap,"black", &col, & unused);
XSetForeground(l_b1_display, gcLead1, col.pixel);
sprintf(pr_time, "%s",mstimstr(c_Time));
XDrawString(l_b1_display, l_b1_window, gcLead1, 42, 174, pr_time, strlen(pr_time));
XAllocNamedColor(l_b1_display, cmap,"white", &col, & unused);
XSetForeground(l_b1_display, gcLead1, col.pixel);
XFillRectangle(l_b1_display, l_b1_window, gcLead1, 1,55,130,90);
XAllocNamedColor(l_b1_display, cmap,set_color8, &col, & unused);
XSetForeground(l_b1_display, gcLead1, col.pixel);
XFillRectangle(l_b1_display, l_b1_window, gcLead1, 1, 55,130,12);
XFillRectangle(l_b1_display, l_b1_window, gcLead1, 1, 79,130,24);
XFillRectangle(l_b1_display, l_b1_window, gcLead1, 1, 108, 130,12);
XAllocNamedColor(l_b1_display, cmap,"black", &col, & unused);
XSetForeground(l_b1_display, gcLead1, col.pixel);
sprintf(pr_buff, "RAW: %14s",mstimstr(data_raw[click_l1.raw].index));
XDrawString(l_b1_display, l_b1_window, gcLead1, 2, 66, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]",data_raw[click_l1.raw].HR);
XDrawString(l_b1_display, l_b1_window, gcLead1, 2, 78, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"ST80:");
XDrawString(l_b1_display, l_b1_window, gcLead1, 2, 90, pr_buff, strlen(pr_buff));
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[click_l1.raw].l1_ST80),
mk_uv(data_raw[click_l1.raw].l1_ST80)-click_ST80_1);
click_ST80_1 = mk_uv(data_raw[click_l1.raw].l1_ST80);
XDrawString(l_b1_display, l_b1_window, gcLead1, 40, 90, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"STSb:");
XDrawString(l_b1_display, l_b1_window, gcLead1, 2, 102, pr_buff, strlen(pr_buff));
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[click_l1.raw].sub_v[lead]),
mk_uv(data_raw[click_l1.raw].sub_v[lead]) - click_STsb_1);
click_STsb_1 = mk_uv(data_raw[click_l1.raw].sub_v[lead]);
XDrawString(l_b1_display, l_b1_window, gcLead1, 40, 102, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "FINE: %14s",mstimstr(data_fin[click_l1.fine].index));
XDrawString(l_b1_display, l_b1_window, gcLead1, 2, 120, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]", data_fin[click_l1.fine].HR);
XDrawString(l_b1_display, l_b1_window, gcLead1, 2, 132, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"ST80:");
XDrawString(l_b1_display, l_b1_window, gcLead1, 2, 144, pr_buff, strlen(pr_buff));
sprintf(pr_buff," %6d/%6d", mk_uv( data_fin[click_l1.fine].l1_ST80),
mk_uv( data_fin[click_l1.fine].l1_ST80) - click_ST80_f1);
click_ST80_f1 = mk_uv( data_fin[click_l1.fine].l1_ST80);
XDrawString(l_b1_display, l_b1_window, gcLead1, 40, 144, pr_buff, strlen(pr_buff));
}
else {
if (IS_free(1, click_l1.raw,0)) {
Lead1_operation = 1;
Marker[1].set=TRUE;
Marker[1].raw_index=click_l1.raw; Marker[1].fine_index=click_l1.fine;
set_marker_l(1);
draw_grid_lead0(1);
show_data(1,FALSE, TRUE);
Lead1_operation = 0;}
}
} else {
sub_op1_exec();
}
}
else {
XAllocNamedColor(l_b1_display, cmap,"white", &col, & unused);
XSetForeground(l_b1_display, gcLead1, col.pixel);
XFillRectangle(l_b1_display, l_b1_window, gcLead1, 40,162,90,15);
XAllocNamedColor(l_b1_display, cmap,"black", &col, & unused);
XSetForeground(l_b1_display, gcLead1, col.pixel);
}
}
//
// User-defined action for `l_cp1'.
//
void
l_call_center1(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
if (Lead1_operation != 0 ) return;
def_click click_tmp1;
long x,y,i, dx;
long c_Time;
char pr_time[12];
long r_i;
int lead = 1;
short Lead1_operation_tmp;
x=(event->ie_xevent)->xbutton.x;
c_Time = (long)(FSAMP *(diagram_time_begin_lead+ double(x-160.0)*time_scale_0/960.0));
if ( ( c_Time < data_raw[raw_display_begin].index) || ( c_Time > data_fin[fin_display_end].index ) ) return;
i=raw_display_begin;
while ( (c_Time > data_raw[i].index) && (i < (raw_display_end)) ) i++;
dx= abs(c_Time - data_raw[i].index);
click_c1.first=! click_c1.first;
click_c1.x=(event->ie_xevent)->xbutton.x;
click_c1.y=(event->ie_xevent)->xbutton.y;
if ( click_c1.first ){
dx= abs(c_Time - data_raw[i].index);
if (dx == 0) {
click_c1.raw_l=i; click_c1.raw_r=i; click_c1.raw=i;
}
else { click_c1.raw_l=i-1; click_c1.raw_r=i;
if ( dx < FSAMP) { click_c1.raw=i;}
else { click_c1.raw=i-1;}
}
i=click_c1.raw;
i=fin_display_begin;
while ( ( data_raw[click_c1.raw].index > data_fin[i].index) && (i < (fin_display_end+1)) )
{
i++;
}
dx= abs( data_raw[click_c1.raw].index - data_fin[i].index);
if (dx == 0) {
click_c1.fine_l=i; click_c1.fine_r=i; click_c1.fine=i;
}
else { click_c1.fine_l=i-1; click_c1.fine_r=i;
click_c1.fine=i;
}
i=click_c1.fine;
if ( click_c1.y <= BORDER_SEP_CLICK ) {
Lead1_operation_tmp = Lead1_operation;
Lead1_operation = 9;
click_tmp1.first = click_l1.first;
click_tmp1.x = click_l1.x;
click_tmp1.y = click_l1.y;
click_tmp1.time_index = click_l1.time_index;
click_tmp1.raw = click_l1.raw;
click_tmp1.raw_l = click_l1.raw_l;
click_tmp1.raw_r = click_l1.raw_r;
click_tmp1.fine = click_l1.fine;
click_tmp1.fine_l = click_l1.fine_l;
click_tmp1.fine_r = click_l1.fine_r;
click_l1.first = click_c1.first;
click_l1.x = click_c1.x;
click_l1.y = click_c1.y;
click_l1.time_index = click_c1.time_index;
click_l1.raw = click_c1.raw;
click_l1.raw_l = click_c1.raw_l;
click_l1.raw_r = click_c1.raw_r;
click_l1.fine = click_c1.fine;
click_l1.fine_l = click_c1.fine_l;
click_l1.fine_r = click_c1.fine_r;
fast1_center = TRUE;
if (!repeat_set1) {
fast1_center = FALSE;
sub_op1_start();
}
sub_op1_exec();
fast1_center = FALSE;
click_l1.first = click_tmp1.first;
click_l1.x = click_tmp1.x;
click_l1.y = click_tmp1.y;
click_l1.time_index = click_tmp1.time_index;
click_l1.raw = click_tmp1.raw;
click_l1.raw_l = click_tmp1.raw_l;
click_l1.raw_r = click_tmp1.raw_r;
click_l1.fine = click_tmp1.fine;
click_l1.fine_l = click_tmp1.fine_l;
click_l1.fine_r = click_tmp1.fine_r;
Lead1_operation = Lead1_operation_tmp;
}
}
}
//
// User-defined action for `l_cp1'.
//
void
l_call_right1(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw1_objects *ip = (sem_0_l_bw1_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
}
//
// Notify callback function for `l_b_shift_ll2'.
//
void
l_call_shift_ll2(Panel_item item, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( TimeToIndex(diagram_time_begin_lead) > TimeToIndex(time_begin_lead)) {
x=TimeToIndex(diagram_time_begin_lead-time_scale_0);
if ( x < 0 ) x=0;
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=0;
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the beginning of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_shift_l2'.
//
void
l_call_shift_l2(Panel_item item, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( (x=TimeToIndex(diagram_time_begin_lead-time_scale_0/2)) >= TimeToIndex(time_begin_lead)) {
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=0;
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the beginning of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_shift_r2'.
//
void
l_call_shift_r2(Panel_item item, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( (x=TimeToIndex(diagram_time_begin_lead+time_scale_0/2)) <= TimeToIndex(time_end_lead)) {
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=TimeToIndex(time_end_lead);
y = x % 60000;
if ( y > 30000 ) { y = - (60000 -y); }
x=x - y;
if (x < 0 ) x=0;
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the end of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_shift_rr2'.
//
void
l_call_shift_rr2(Panel_item item, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
long x,y;
y=TimeToIndex(diagram_time_begin_lead);
if ( (x=TimeToIndex(diagram_time_begin_lead+time_scale_0)) <= TimeToIndex(time_end_lead)) {
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
}
else
{
x=TimeToIndex(time_end_lead);
y = x % 60000;
if ( y > 30000 ) { y = - (60000 -y); }
x=x - y;
if (x < 0 ) x=0;
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, TRUE, NULL);
sprintf(message1,"You are at the end of data !");
warning_message(1);
}
diagram_time_begin_lead=IndexToTime(x);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_ss_HRate2'.
//
void
l_call_HRate2(Panel_item item, int value, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
reset_HR_lead0(2);
switch (value){
case 0: lead2_plot_button_status.HRate=TRUE; break;
case 1: lead2_plot_button_status.HRRaw=TRUE;break;
case 2: lead2_plot_button_status.STFine=TRUE;break;
case 3: lead2_plot_button_status.STslFine=TRUE;break;
case 4: lead2_plot_button_status.STslRaw=TRUE;break;
case 5: lead2_plot_button_status.Episodes=TRUE;break;
case 6: lead2_plot_button_status.HideHR=TRUE; break;
case 7: lead2_plot_button_status.ISOJ=TRUE; break;
case 8: lead2_plot_button_status.HRate=TRUE;
xv_set(Sem_0_l_bw2.l_ss_HRate2, PANEL_VALUE, 0, NULL);
break;
case 9: lead2_plot_button_status.HRate=TRUE;
xv_set(Sem_0_l_bw2.l_ss_HRate2, PANEL_VALUE, 0, NULL);
break;
} // end select
draw_grid_lead0(2);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_ss_12min2'.
//
void
l_call_12min2(Panel_item item, int value, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (value){
case 0: time_scale_0=60; break;
case 1: time_scale_0=120; break;
case 2: time_scale_0=180; break;
case 3: time_scale_0=360; break;
case 4: time_scale_0=540; break;
case 5: time_scale_0=720; break;
case 6: time_scale_0=1440; break;
case 7: time_scale_0=1800; break;
case 8: time_scale_0=3600; break;
case 9: time_scale_0=7200; break;
case 10: time_scale_0=14400; break;
case 11: time_scale_0=21600; break;
case 12: time_scale_0=43200; break;
case 13: time_scale_0=86400; break;
case 14: time_scale_0=172800; break;
case 15: time_scale_0=345600; break;
} // end select
scale_time_tick=(long)(time_scale_0 / 12.0);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_ss_12min, PANEL_VALUE,value,NULL);
xv_set(Sem_0_l_bw1.l_ss_12min1, PANEL_VALUE,value,NULL);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
draw_grid_coeff();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_ss_100mV2'.
//
void
l_call_100mV2(Panel_item item, int value, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (value){
case 0: ampl_2=20; break;
case 1: ampl_2=25; break;
case 2: ampl_2=50; break;
case 3: ampl_2=75; break;
case 4: ampl_2=100; break;
case 5: ampl_2=125; break;
case 6: ampl_2=150; break;
case 7: ampl_2=200; break;
case 8: ampl_2=250; break;
case 9: ampl_2=500; break;
case 10: ampl_2=750; break;
case 11: ampl_2=1000; break;
case 12: ampl_2=2000; break;
case 13: ampl_2=5000; break;
} // end select
draw_grid_lead0(2);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_Mark2'.
//
void
l_call_Mark2(Panel_item item, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
Lead2_operation=1;
sub_op2_start();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_Subtr2'.
//
void
l_call_Subtr2(Panel_item item, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if ( status_unsubtracted2 ) {
Lead2_buttons.Subtr_s=2;
status_unsubtracted2 =FALSE;
if (status_manual_mode2)
set_buttons_lead2_subtr_manual();
else
set_buttons_lead2_subtr_auto();
}
else {
Lead2_buttons.Subtr_s=1;
status_unsubtracted2 =TRUE;
if (status_manual_mode2)
set_buttons_lead2_unsubtr_manual();
else
set_buttons_lead2_unsubtr_auto();
}
set_buttons_lead2(); draw_grid_lead0(2);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_OvrApp2'.
//
void
l_call_OvrApp2(Panel_item item, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if ( Lead2_buttons.OvrApp_s == 1 ) {
Lead2_buttons.OvrApp_s=2; ovr2_app = TRUE;
}
else {
Lead2_buttons.OvrApp_s=1; ovr2_app = FALSE;
}
set_buttons_lead2(); draw_grid_lead0(2);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_OvrLds_menu2'.
//
void
l_call_menu_OvrLds2(Panel_item item, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_Exm2'.
//
void
l_call_Exm2(Panel_item item, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
Lead2_operation=9;
sub_op2_start();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `l_b_ConsLR2'.
//
void
l_call_ConsLR2(Panel_item item, Event *event)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if ( status_manual_mode2 && status_unsubtracted2 && Lead2_buttons.ConsLR_s == 1 ) {
if ( reference_act[2] > -1 )
if ( Is_code(2,reference_act[2],0,0)) {
Lead2_buttons.ConsLR_s=2;
status_consider_localref2=FALSE;
set_buttons_lead2_conslr();
act_ref_data[2].copy_ref(references[2][reference_act[2]]);
act_reference[2].set=TRUE;
act_reference[0].change=FALSE;
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
act_reference[2].typ=2; // local
act_reference[2].index=reference_act[1];
data_mstime_index= data_fin[Marker[2].fine_index].index;
reference_mstime_index= data_fin[act_ref_data[2].fine_index].index;
data_new_r_read();
get_average_R();
update_marker(2,192);
draw_grid_lead0(2);
show_data(2,FALSE, TRUE);
} // end cons loc ref
}
else if ( Lead2_buttons.ConsLR_s == 2 ) {
Lead2_buttons.ConsLR_s=1;
status_consider_localref2=TRUE;
set_buttons_lead2_unsubtr_manual();
if ( global_ref[2].set) {
act_ref_data[2].copy_ref(global_ref[2]);
act_ref_data[2].code1=0;
act_reference[2].set=TRUE;
act_reference[0].change=FALSE;
act_reference[1].change=FALSE;
act_reference[2].change=FALSE;
act_reference[2].typ=1; // global
act_reference[2].index=-1;
data_mstime_index= data_fin[Marker[2].fine_index].index;
reference_mstime_index= data_fin[act_ref_data[2].fine_index].index;
data_new_r_read();
get_average_R();
update_marker(2,192);
} // end cons loc ref
draw_grid_lead0(2);
show_data(2,FALSE,TRUE) ;
}
set_buttons_lead2();
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Event callback function for `l_cp2'.
//
Notify_value
sem_0_l_bw2_l_cp2_event_callback(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
if (event_action(event) == ACTION_SELECT)
{
l_call_left2(win, event, arg, type);
}
if (event_action(event) == ACTION_ADJUST)
{
l_call_center2(win, event, arg, type);
}
if (event_action(event) == ACTION_MENU)
{
l_call_right2(win, event, arg, type);
}
// gxv_end_connections
return notify_next_event_func(win, (Notify_event) event, arg, type);
}
//
// User-defined action for `l_cp2'.
//
void
l_call_left2(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
long x,y,i, dx;
long c_Time;
char pr_time[12];
int lead = 2;
x=(event->ie_xevent)->xbutton.x ;
c_Time = (long)(FSAMP *(diagram_time_begin_lead+ double(x-160.0)*time_scale_0/960.0));
if ( ( c_Time < data_raw[raw_display_begin].index) || ( c_Time > data_fin[fin_display_end].index ) ) return;
i=raw_display_begin;
while ( (c_Time > data_raw[i].index) && (i < (raw_display_end)) ) i++;
dx= abs(c_Time - data_raw[i].index);
click_l2.first=! click_l2.first;
click_l2.x=(event->ie_xevent)->xbutton.x;
click_l2.y=(event->ie_xevent)->xbutton.y;
if ( click_l2.first ){
dx= abs(c_Time - data_raw[i].index);
if (dx == 0) {
click_l2.raw_l=i; click_l2.raw_r=i; click_l2.raw=i;
}
else { click_l2.raw_l=i-1; click_l2.raw_r=i;
if ( dx < FSAMP) { click_l2.raw=i;}
else { click_l2.raw=i-1;}
}
i=click_l2.raw;
i=fin_display_begin;
while ( ( data_raw[click_l2.raw].index > data_fin[i].index) && (i < (fin_display_end+1)) )
{
i++;
}
dx= abs( data_raw[click_l2.raw].index - data_fin[i].index);
if (dx == 0) {
click_l2.fine_l=i; click_l2.fine_r=i; click_l2.fine=i;
}
else { click_l2.fine_l=i-1; click_l2.fine_r=i;
click_l2.fine=i;
}
i=click_l2.fine;
XAllocNamedColor(l_b2_display, cmap,set_color8, &col, & unused);
XSetForeground(l_b2_display, gcLead1, col.pixel);
if (Lead2_operation == 0 || ( Lead2_operation != 0 && click_l2.y > BORDER_SEP_CLICK) ) {
if ( click_l2.y > BORDER_SEP_CLICK ) {
XFillRectangle(l_b2_display, l_b2_window, gcLead2, 40,162,90,15);
XAllocNamedColor(l_b2_display, cmap,"black", &col, & unused);
XSetForeground(l_b2_display, gcLead2, col.pixel);
sprintf(pr_time, "%s",mstimstr(c_Time));
XDrawString(l_b2_display, l_b2_window, gcLead2, 42, 174, pr_time, strlen(pr_time));
XAllocNamedColor(l_b2_display, cmap,"white", &col, & unused);
XSetForeground(l_b2_display, gcLead2, col.pixel);
XFillRectangle(l_b2_display, l_b2_window, gcLead2, 1,55,130,90);
XAllocNamedColor(l_b2_display, cmap,set_color8, &col, & unused);
XSetForeground(l_b2_display, gcLead2, col.pixel);
XFillRectangle(l_b2_display, l_b2_window, gcLead2, 1, 55,130,12);
XFillRectangle(l_b2_display, l_b2_window, gcLead2, 1, 79,130,24);
XFillRectangle(l_b2_display, l_b2_window, gcLead2, 1, 108, 130,12);
XAllocNamedColor(l_b2_display, cmap,"black", &col, & unused);
XSetForeground(l_b2_display, gcLead2, col.pixel);
sprintf(pr_buff, "RAW: %14s",mstimstr(data_raw[click_l2.raw].index));
XDrawString(l_b2_display, l_b2_window, gcLead2, 2, 66, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]",data_raw[click_l2.raw].HR);
XDrawString(l_b2_display, l_b2_window, gcLead2, 2, 78, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"ST80:");
XDrawString(l_b2_display, l_b2_window, gcLead2, 2, 90, pr_buff, strlen(pr_buff));
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[click_l2.raw].l2_ST80),
mk_uv(data_raw[click_l2.raw].l2_ST80)-click_ST80_2);
click_ST80_2 = mk_uv(data_raw[click_l2.raw].l2_ST80);
XDrawString(l_b2_display, l_b2_window, gcLead2, 40, 90, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"STSb:");
XDrawString(l_b2_display, l_b2_window, gcLead2, 2, 102, pr_buff, strlen(pr_buff));
sprintf(pr_buff," %6d/%6d",mk_uv(data_raw[click_l2.raw].sub_v[lead]),
mk_uv(data_raw[click_l2.raw].sub_v[lead]) - click_STsb_2);
click_STsb_2 = mk_uv(data_raw[click_l2.raw].sub_v[lead]);
XDrawString(l_b2_display, l_b2_window, gcLead2, 40, 102, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "FINE: %14s",mstimstr(data_fin[click_l2.fine].index));
XDrawString(l_b2_display, l_b2_window, gcLead2, 2, 120, pr_buff, strlen(pr_buff));
sprintf(pr_buff, "HRate: %9d [bpm]", data_fin[click_l2.fine].HR);
XDrawString(l_b2_display, l_b2_window, gcLead2, 2, 132, pr_buff, strlen(pr_buff));
sprintf(pr_buff,"ST80:");
XDrawString(l_b2_display, l_b2_window, gcLead2, 2, 144, pr_buff, strlen(pr_buff));
sprintf(pr_buff," %6d/%6d", mk_uv( data_fin[click_l2.fine].l2_ST80),
mk_uv( data_fin[click_l2.fine].l2_ST80) - click_ST80_f2);
click_ST80_f2 = mk_uv( data_fin[click_l2.fine].l2_ST80);
XDrawString(l_b2_display, l_b2_window, gcLead2, 40, 144, pr_buff, strlen(pr_buff));
}
else {
if (IS_free(2, click_l2.raw,0)) {
Lead2_operation = 1;
Marker[2].set=TRUE;
Marker[2].raw_index=click_l2.raw; Marker[2].fine_index=click_l2.fine;
set_marker_l(2);
draw_grid_lead0(2);
show_data(2,FALSE, TRUE);
Lead2_operation = 0;}
}
} else {
sub_op2_exec();
}
}
else {
XAllocNamedColor(l_b2_display, cmap,"white", &col, & unused);
XSetForeground(l_b2_display, gcLead2, col.pixel);
XFillRectangle(l_b2_display, l_b2_window, gcLead2, 40,162,90,15);
XAllocNamedColor(l_b2_display, cmap,"black", &col, & unused);
XSetForeground(l_b2_display, gcLead2, col.pixel);
}
}
//
// User-defined action for `l_cp2'.
//
void
l_call_center2(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
if (Lead2_operation != 0 ) return;
def_click click_tmp2;
long x,y,i, dx;
long c_Time;
char pr_time[12];
long r_i;
int lead = 2;
short Lead2_operation_tmp;
x=(event->ie_xevent)->xbutton.x;
c_Time = (long)(FSAMP *(diagram_time_begin_lead+ double(x-160.0)*time_scale_0/960.0));
if ( ( c_Time < data_raw[raw_display_begin].index) || ( c_Time > data_fin[fin_display_end].index ) ) return;
i=raw_display_begin;
while ( (c_Time > data_raw[i].index) && (i < (raw_display_end)) ) i++;
dx= abs(c_Time - data_raw[i].index);
click_c2.first=! click_c2.first;
click_c2.x=(event->ie_xevent)->xbutton.x;
click_c2.y=(event->ie_xevent)->xbutton.y;
if ( click_c2.first ){
dx= abs(c_Time - data_raw[i].index);
if (dx == 0) {
click_c2.raw_l=i; click_c2.raw_r=i; click_c2.raw=i;
}
else { click_c2.raw_l=i-1; click_c2.raw_r=i;
if ( dx < FSAMP) { click_c2.raw=i;}
else { click_c2.raw=i-1;}
}
i=click_c2.raw;
i=fin_display_begin;
while ( ( data_raw[click_c2.raw].index > data_fin[i].index) && (i < (fin_display_end+1)) )
{
i++;
}
dx= abs( data_raw[click_c2.raw].index - data_fin[i].index);
if (dx == 0) {
click_c2.fine_l=i; click_c2.fine_r=i; click_c2.fine=i;
}
else { click_c2.fine_l=i-1; click_c2.fine_r=i;
click_c2.fine=i;
}
i=click_c2.fine;
if ( click_c2.y <= BORDER_SEP_CLICK ) {
Lead2_operation_tmp = Lead2_operation;
Lead2_operation = 9;
click_tmp2.first = click_l2.first;
click_tmp2.x = click_l2.x;
click_tmp2.y = click_l2.y;
click_tmp2.time_index = click_l2.time_index;
click_tmp2.raw = click_l2.raw;
click_tmp2.raw_l = click_l2.raw_l;
click_tmp2.raw_r = click_l2.raw_r;
click_tmp2.fine = click_l2.fine;
click_tmp2.fine_l = click_l2.fine_l;
click_tmp2.fine_r = click_l2.fine_r;
click_l2.first = click_c2.first;
click_l2.x = click_c2.x;
click_l2.y = click_c2.y;
click_l2.time_index = click_c2.time_index;
click_l2.raw = click_c2.raw;
click_l2.raw_l = click_c2.raw_l;
click_l2.raw_r = click_c2.raw_r;
click_l2.fine = click_c2.fine;
click_l2.fine_l = click_c2.fine_l;
click_l2.fine_r = click_c2.fine_r;
fast2_center = TRUE;
if (!repeat_set2) {
fast2_center = FALSE;
sub_op2_start();
}
sub_op2_exec();
fast2_center = FALSE;
click_l2.first = click_tmp2.first;
click_l2.x = click_tmp2.x;
click_l2.y = click_tmp2.y;
click_l2.time_index = click_tmp2.time_index;
click_l2.raw = click_tmp2.raw;
click_l2.raw_l = click_tmp2.raw_l;
click_l2.raw_r = click_tmp2.raw_r;
click_l2.fine = click_tmp2.fine;
click_l2.fine_l = click_tmp2.fine_l;
click_l2.fine_r = click_tmp2.fine_r;
Lead2_operation = Lead2_operation_tmp;
}
}
}
//
// User-defined action for `l_cp2'.
//
void
l_call_right2(Xv_window win, Event *event, Notify_arg arg, Notify_event_type type)
{
sem_0_l_bw2_objects *ip = (sem_0_l_bw2_objects *) xv_get(xv_get(win, CANVAS_PAINT_CANVAS_WINDOW), XV_KEY_DATA, INSTANCE);
}
//
// User-defined action for `m_b_Lead0'.
//
void
l_ini_lcp_b(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
draw_grid_lead0(0);
if (lead1_data ) draw_grid_lead0(1);
if (lead2_data ) draw_grid_lead0(2);
}
//
// User-defined action for `m_b_Data'.
//
void
d_ini_cp_b(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
show_data(Data_lead,TRUE, FALSE);
}
//
// User-defined action for `m_b_Lead1'.
//
void
l_ini_cp1_b(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
draw_grid_lead0(1);
}
//
// User-defined action for `m_b_KLCoeff'.
//
void
k_ini_cp_b(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
draw_grid_coeff();
}
//
// User-defined action for `m_b_Lead2'.
//
void
l_ini_cp2_b(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
draw_grid_lead0(2);
}
//
// Repaint callback function for `k_cp'.
//
void
k_ini_cpb(Canvas canvas, Xv_window paint_window, Display *display, Window xid, Xv_xrectlist *rects)
{
gckoeff = DefaultGC(display, DefaultScreen(display));
k_b_display = display;
k_b_window = xid;
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Repaint callback function for `d_cp'.
//
void
d_ini_cpb(Canvas canvas, Xv_window paint_window, Display *display, Window xid, Xv_xrectlist *rects)
{
gcdata = DefaultGC(display, DefaultScreen(display));
d_b_display = display;
d_b_window = xid;
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Repaint callback function for `l_cp1'.
//
void
l_ini_cp1b(Canvas canvas, Xv_window paint_window, Display *display, Window xid, Xv_xrectlist *rects)
{
gcLead1 = DefaultGC(display, DefaultScreen(display));
l_b1_display = display;
l_b1_window = xid;
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Repaint callback function for `l_cp2'.
//
void
l_ini_cp2b(Canvas canvas, Xv_window paint_window, Display *display, Window xid, Xv_xrectlist *rects)
{
gcLead2 = DefaultGC(display, DefaultScreen(display));
l_b2_display = display;
l_b2_window = xid;
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Event callback function for `m_b_Open'.
//
void
sem_0_m_bw_m_b_Open_event_callback(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
panel_default_handle_event(item, event);
}
//
// User-defined action for `m_b_Open'.
//
void
main_open_init(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// set parameters
FILE *set_data=NULL;
char i_str1[132], i_str2[132];
int x, i, j, l;
int test=0;
if((set_data=fopen("semia.opt","r")) != NULL )
{
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { i_str2[j]=i_str1[i]; i++; j++;}
i_str2[j]=0;
x=(int)(strtod(i_str2,0));
set_line_width=x;
if ((x > 0) && (x < 5) )
{ set_line_width=x;}
else
{ test++;}
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color1[j]=i_str1[i]; i++; j++;}
set_color1[j]=0;
if (j == 0) test++;
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color2[j]=i_str1[i]; i++; j++;}
set_color2[j]=0;
if (j == 0) test++;
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color3[j]=i_str1[i]; i++; j++;}
set_color3[j]=0;
if (j == 0) test++;
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color4[j]=i_str1[i]; i++; j++;}
set_color4[j]=0;
if (j == 0) test++;
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color5[j]=i_str1[i]; i++; j++;}
set_color5[j]=0;
if (j == 0) test++;
l=fscanf(set_data,"%s\n",&i_str1);
i=0; j=0;
while ((i_str1[i] != ':') && ( i < 132) ) i++;
i++;
while (i_str1[i] != 0 ) { set_color6[j]=i_str1[i]; i++; j++;}
set_color6[j]=0;
if (j == 0) test++;
if (test > 0 ){
fprintf(stderr,"semia: incorrect options (semia.opt file)\n");
fprintf(stderr,"LineWidth:%d\n",set_line_width);
fprintf(stderr,"Color1:%s\n",set_color1);
fprintf(stderr,"Color2:%s\n",set_color2);
fprintf(stderr,"Color3:%s\n",set_color3);
fprintf(stderr,"Color4:%s\n",set_color4);
fprintf(stderr,"Color5:%s\n",set_color5);
fprintf(stderr,"Color6:%s\n",set_color6);
}
}
else
{
fprintf(stderr,"semia: no semia.opt file\n");
}
xv_set(Sem_0_o_pw.o_b_OK, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_m_bw.m_b_Lead0, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_m_bw.m_b_Lead1, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_m_bw.m_b_Lead2, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_m_bw.m_b_Data, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_m_bw.m_b_KLCoeff, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_m_bw.m_b_DiagData, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_m_bw.m_b_NumEpis, PANEL_INACTIVE, TRUE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_l, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_ll, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_l1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_ll1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_l2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_ll2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_r, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw.l_b_shift_rr, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_r1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw1.l_b_shift_rr1, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_r2, PANEL_INACTIVE, FALSE, NULL);
xv_set(Sem_0_l_bw2.l_b_shift_rr2, PANEL_INACTIVE, FALSE, NULL);
nsig=0;
// set initial state
final_save = FALSE;
auto_save = FALSE;
auto_save_counter = 0;
lead1_data=FALSE, lead2_data=FALSE; // given data
last_set_all = FALSE;
Lead0_operation=0; Lead1_operation=0; Lead2_operation=0;
change_atribute0=FALSE; change_atribute1=FALSE; change_atribute2=FALSE;
how0=FALSE; how1=FALSE; how2=FALSE;
Data_lead=0;
repeat_set =FALSE; repeat_set1=FALSE; repeat_set2=FALSE;
global_set= FALSE;
act_reference[0].set=FALSE; act_reference[1].set=FALSE; act_reference[2].set=FALSE;
Marker[0].set = FALSE; Marker[1].set = FALSE; Marker[2].set= FALSE;
status_manual_mode=TRUE, status_unsubtracted=TRUE, status_consider_localref=TRUE;
status_manual_mode1=TRUE, status_unsubtracted1=TRUE, status_consider_localref1=TRUE;
status_manual_mode2=TRUE, status_unsubtracted2=TRUE, status_consider_localref2=TRUE;
status_consider_localref = TRUE; status_consider_localref1 = TRUE; status_consider_localref2 = TRUE;
reset_HR_lead0(0); reset_HR_lead0(1); reset_HR_lead0(2);
set_buttons_lead0_start();
lead0_plot_button_status.HRate=TRUE;
set_buttons_lead0();
set_buttons_lead1_start();
lead1_plot_button_status.HRate=TRUE;
set_buttons_lead1();
set_buttons_lead2_start();
lead2_plot_button_status.HRate=TRUE;
set_buttons_lead2();
// lead window general
time_scale_0=720, time_scale_1=720, time_scale_2=720; // 720 = 12 min
time_scale_d=6; // 6 = 6sec
scale_time_tick=60; // 720 / 12 = 60
xv_set(Sem_0_l_bw.l_ss_12min, PANEL_VALUE,5,NULL);
xv_set(Sem_0_l_bw1.l_ss_12min1, PANEL_VALUE,5,NULL);
xv_set(Sem_0_l_bw2.l_ss_12min2, PANEL_VALUE,5,NULL);
xv_set(Sem_0_l_bw.l_ss_100mV, PANEL_VALUE,4,NULL);
xv_set(Sem_0_l_bw1.l_ss_100mV1, PANEL_VALUE,4,NULL);
xv_set(Sem_0_l_bw2.l_ss_100mV2, PANEL_VALUE,4,NULL);
xv_set(Sem_0_l_bw.l_ss_HRate, PANEL_VALUE,0,NULL);
xv_set(Sem_0_l_bw1.l_ss_HRate1, PANEL_VALUE,0,NULL);
xv_set(Sem_0_l_bw2.l_ss_HRate2, PANEL_VALUE,0,NULL);
// lead0 window
ampl_0=100; ampl_1=100; ampl_2=100;
allow_l0=FALSE;
click_l0.first=FALSE;
click_r0.first=FALSE;
auto_ampl_2[0]= 75 * STAMPL / 1000;
// active = true
ovr0_l1=FALSE; ovr0_l2=FALSE;
ovr0_app = FALSE;
click_ST80_0 = 0, click_STsb_0 = 0, click_ST80_f0 = 0;
fast0_center = FALSE;
fast0_right = FALSE;
// lead1 window
ampl_1=100;
click_ST80_1 = 0, click_STsb_1 = 0, click_ST80_f1 = 0;
fast1_center = FALSE;
fast1_right = FALSE;
ovr1_l0=FALSE, ovr1_l2=FALSE;
ovr1_app = FALSE;
allow_l1=FALSE;
click_l1.first=FALSE;
click_r1.first=FALSE;
auto_ampl_2[1]= 75 * STAMPL / 1000;
// lead2 window
ampl_2=100; // 100 = 100uV
click_ST80_2 = 0, click_STsb_2 = 0, click_ST80_f2 = 0;
fast2_center = FALSE;
fast2_right = FALSE;
ovr2_l1=FALSE, ovr2_l0=FALSE;
ovr2_app = FALSE;
allow_l2=FALSE;
click_l2.first=FALSE;
click_r2.first=FALSE;
auto_ampl_2[2]= 75 * STAMPL / 1000;
// coeff window
KL_coefficents=TRUE; // display = true
ampl_c=1.0;
click_c.first=FALSE;
ovr_coef=FALSE; // overly
// data window
Data_lead=0;
data_ovrly=1;
data_ovrly_shift=FALSE;
data_ovr_ref=FALSE;
x_lead =FALSE;
xv_set(Sem_0_d_bw.d_b_lead, PANEL_LABEL_STRING, "Lead 0", NULL);
xv_set(Sem_0_d_bw.d_ss_6s, PANEL_VALUE,4,NULL);
xv_set(Sem_0_d_bw.d_ss_1mV, PANEL_VALUE,9,NULL);
xv_set(Sem_0_d_bw.d_ss_520ms, PANEL_VALUE,4,NULL);
xv_set(Sem_0_d_bw.d_ss_16s, PANEL_VALUE,5,NULL);
xv_set(Sem_0_d_bw.d_ss_Ovrly, PANEL_VALUE,0,NULL);
xv_set(Sem_0_d_bw.d_b_OvrRef, PANEL_INACTIVE, TRUE, NULL);
ampl_d=1000; // default 1mV
data_tick=160;
data_scale=6;
data_grid_tick= data_tick * 960.0 / data_scale / 1000.0;
data_ovr_l0= FALSE; data_ovr_l1= FALSE; data_ovr_l2= FALSE;
current_average_beat_time=520 ; // 520 msec
d_avrg_index = current_average_beat_time / ( 1000 / FSAMP ) /2 ;
current_average_window_index= 8 *FSAMP; // index =( time [sec] / 2 ) -> msec
current_average_window_time= 8 ; // 16 sec - default
xv_set(Sem_0_k_bw.k_ss_ST, PANEL_VALUE,0,NULL);
xv_set(Sem_0_k_bw.k_ss_1std, PANEL_VALUE,5,NULL);
xv_set(Sem_0_k_bw.k_b_Overlay, PANEL_LABEL_STRING, "DistF", NULL);
ovr_coef=FALSE;
current_mean_smp=5;
reset_global_reference();
}
//
// Notify callback function for `o_fike_button1'.
//
void
sem_0_o_pw_o_fike_button1_notify_callback(Panel_item item, Event *event)
{
sem_0_o_pw_objects *ip = (sem_0_o_pw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Notify callback function for `d_b_lead'.
//
void
d_call_menu_lead(Panel_item item, Event *event)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
}
//
// Menu handler for `d_menu_lead (Lead0)'.
//
Menu_item
d_menu_call_lead0(Menu_item item, Menu_generate op)
{
sem_0_d_bw_objects * ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( Data_lead == 0 ) { xv_set(item, MENU_INACTIVE, TRUE, 0);
}
else
{ xv_set(item, MENU_INACTIVE, FALSE, 0);}
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
xv_set(Sem_0_d_bw.d_b_lead, PANEL_LABEL_STRING, "Lead 0", NULL);
Data_lead=0;
data_ovr_l0= FALSE; data_ovr_l1= FALSE; data_ovr_l2= FALSE;
current_j_m=Marker[Data_lead].nJ;
current_iso_m=Marker[Data_lead].nISO;
show_data(Data_lead,FALSE, FALSE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `d_menu_lead (Lead1)'.
//
Menu_item
d_menu_call_lead1(Menu_item item, Menu_generate op)
{
sem_0_d_bw_objects * ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( (! lead1_data) OR (Data_lead ==1) ) { xv_set(item, MENU_INACTIVE, TRUE, 0);
}
else
{ xv_set(item, MENU_INACTIVE, FALSE, 0);
}
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
xv_set(Sem_0_d_bw.d_b_lead, PANEL_LABEL_STRING, "Lead 1", NULL);
Data_lead=1;
data_ovr_l0= FALSE; data_ovr_l1= FALSE; data_ovr_l2= FALSE;
current_j_m=Marker[Data_lead].nJ;
current_iso_m=Marker[Data_lead].nISO;
show_data(Data_lead,FALSE, FALSE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Menu handler for `d_menu_lead (Lead2)'.
//
Menu_item
d_menu_call_lead2(Menu_item item, Menu_generate op)
{
sem_0_d_bw_objects * ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
switch (op) {
case MENU_DISPLAY:
if ( (! lead2_data) OR ( Data_lead == 2) ) { xv_set(item, MENU_INACTIVE, TRUE, 0);
}
else
{ xv_set(item, MENU_INACTIVE, FALSE, 0);
}
break;
case MENU_DISPLAY_DONE:
break;
case MENU_NOTIFY:
xv_set(Sem_0_d_bw.d_b_lead, PANEL_LABEL_STRING, "Lead 2", NULL);
Data_lead=2;
data_ovr_l0= FALSE; data_ovr_l1= FALSE; data_ovr_l2= FALSE;
current_j_m=Marker[Data_lead].nJ;
current_iso_m=Marker[Data_lead].nISO;
show_data(Data_lead,FALSE, FALSE);
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
break;
case MENU_NOTIFY_DONE:
break;
}
return item;
}
//
// Notify callback function for `d_ss_Ovrly'.
//
void
d_call_menu_Ovrly(Panel_item item, int value, Event *event)
{
sem_0_d_bw_objects *ip = (sem_0_d_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
if (value == 0) { data_ovrly_shift=FALSE; }
if (value == 1) { data_ovrly_shift=TRUE; }
if (value == 2) { data_ovrly_shift=FALSE; }
if (value == 3) { data_ovrly_shift=FALSE; }
if (value == 4) { data_ovrly_shift=FALSE; }
// gxv_start_connections DO NOT EDIT THIS SECTION
// gxv_end_connections
show_data(Data_lead,FALSE, FALSE);
}
//
// Notify callback function for `m_b_NumEpis'.
//
void
sem_0_m_bw_m_b_NumEpis_notify_callback(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
xv_set(Sem_0_c_pw.c_pw, FRAME_CMD_PUSHPIN_IN, TRUE, NULL);
xv_set(Sem_0_c_pw.c_pw, XV_SHOW, TRUE, NULL);
init_counts(item, event);
show_counts(item, event);
// gxv_end_connections
}
//
// User-defined action for `m_b_NumEpis'.
//
void
init_counts(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
}
//
// User-defined action for `m_b_NumEpis'.
//
void
show_counts(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
FILE *file_counts=NULL;
char counts_name[16];
char bufferc[512];
static int al=0;
xv_set(Sem_0_c_pw.textpane_numepis, TEXTSW_READ_ONLY, FALSE, NULL);
xv_set(Sem_0_c_pw.textpane_numepis, TEXTSW_IGNORE_LIMIT, TEXTSW_INFINITY, NULL);
textsw_delete(Sem_0_c_pw.textpane_numepis,0,TEXTSW_INFINITY);
textsw_reset(Sem_0_c_pw.textpane_numepis,0,TEXTSW_INFINITY);
al = 0;
xv_set(Sem_0_c_pw.textpane_numepis, TEXTSW_READ_ONLY, TRUE, NULL);
xv_set(Sem_0_c_pw.textpane_numepis, TEXTSW_IGNORE_LIMIT, TEXTSW_INFINITY, NULL);
sprintf(counts_name,"%s.cnt",inp_rec_name);
file_counts=fopen(counts_name,"r");
if (file_counts == NULL) {
sprintf(bufferc,"\n\n No <%s.cnt> file !\n\n", inp_rec_name );
textsw_replace_bytes(Sem_0_c_pw.textpane_numepis,al,al,
bufferc,strlen(bufferc));
al += strlen(bufferc);
} else {
while (fgets(bufferc,512,file_counts) != NULL) {
textsw_replace_bytes(Sem_0_c_pw.textpane_numepis,al,al,
" ",strlen(" "));
al += strlen(" ");
textsw_replace_bytes(Sem_0_c_pw.textpane_numepis,al,al,
bufferc,strlen(bufferc));
al += strlen(bufferc);
}
fclose(file_counts);
textsw_normalize_view(Sem_0_c_pw.textpane_numepis, 0);
}
xv_set(Sem_0_c_pw.textpane_numepis, TEXTSW_READ_ONLY, TRUE, NULL);
xv_set(Sem_0_c_pw.textpane_numepis, TEXTSW_IGNORE_LIMIT, TEXTSW_INFINITY, NULL);
}
//
// Notify callback function for `m_b_DiagData'.
//
void
sem_0_m_bw_m_b_DiagData_notify_callback(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
xv_set(Sem_0_d_pw.d_pw, FRAME_CMD_PUSHPIN_IN, TRUE, NULL);
xv_set(Sem_0_d_pw.d_pw, XV_SHOW, TRUE, NULL);
init_diagdata(item, event);
show_diagdata(item, event);
// gxv_end_connections
}
//
// User-defined action for `m_b_DiagData'.
//
void
init_diagdata(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
}
//
// User-defined action for `m_b_DiagData'.
//
void
show_diagdata(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
FILE *file_diag=NULL;
char diag_name[16];
char buffer[512];
char mrec[8], cleads[3], fsamp[5], durat[32], stime[64], lname[32];
int ix,ix1,ix2,ix3, theleads, ihours, imin, isec;
double sec, ddurat;
long ldurat;
static int ad=0;
static int clines=0;
xv_set(Sem_0_d_pw.textpane_data, TEXTSW_READ_ONLY, FALSE, NULL);
xv_set(Sem_0_d_pw.textpane_data, TEXTSW_IGNORE_LIMIT, TEXTSW_INFINITY, NULL);
textsw_delete(Sem_0_d_pw.textpane_data,0,TEXTSW_INFINITY);
textsw_reset(Sem_0_d_pw.textpane_data,0,TEXTSW_INFINITY);
ad = 0;
xv_set(Sem_0_d_pw.textpane_data, TEXTSW_READ_ONLY, TRUE, NULL);
xv_set(Sem_0_d_pw.textpane_data, TEXTSW_IGNORE_LIMIT, TEXTSW_INFINITY, NULL);
sprintf(diag_name,"%s.hea",inp_rec_name);
file_diag=fopen(diag_name,"r");
if (file_diag == NULL) {
sprintf(buffer,"\n\n No <%s.hea> file !\n\n", inp_rec_name );
textsw_replace_bytes(Sem_0_d_pw.textpane_data,ad,ad,
buffer,strlen(buffer));
ad += strlen(buffer);
} else {
fgets(buffer,512,file_diag);
clines++;
ix = ix1 = 0;
while (buffer[ix] != ' ') { mrec[ix1] = buffer[ix]; ix1++; ix++; }
mrec[ix1] = '\0';
ix++; ix1=0;
cleads[ix1] = buffer[ix];
ix1++; ix++;
cleads[ix1] = '\0'; theleads = atoi(cleads);
ix++; ix1=0;
while (buffer[ix] != ' ') { fsamp[ix1] = buffer[ix]; ix1++; ix++; }
fsamp[ix1] = '\0';
ix++; ix1=0;
while ((buffer[ix] != ' ')&&(buffer[ix] != '\n')) { durat[ix1] = buffer[ix]; ix1++; ix++; }
durat[ix1] = '\0';
if (buffer[ix]!='\n') ix++;
ix1=0;
while (buffer[ix] != '\n') { stime[ix1] = buffer[ix]; ix1++; ix++; }
stime[ix1] = '\0';
ldurat = atol(durat);
ldurat *= 4;
ddurat = (double)ldurat/1000.;
ihours = (int)((double)ddurat / 3600.);
ddurat = ddurat - (ihours * 3600);
imin = (int)((double)ddurat / 60.);
ddurat = ddurat - (imin * 60);
sprintf(buffer,"\n Record: %s Leads: %s Sampling frequency: %s[samples/sec]\n\n Start time, recording date: %s\n Duration: %2d:%2d:%6.3f\n\n", mrec, cleads, fsamp, stime, ihours, imin, ddurat);
textsw_replace_bytes(Sem_0_d_pw.textpane_data,ad,ad,
buffer,strlen(buffer));
ad += strlen(buffer);
ix = 0;
while (ix < theleads) {
fgets(buffer,512,file_diag);
clines++;
ix1 = 0; while (buffer[ix1] != '\0') ix1++;
ix2 = ix1;
while (buffer[ix2] != ' ') ix2--;
for (ix3=ix2+1; ix3 <= ix1; ix3++) lname[ix3-ix2-1] = buffer[ix3];
sprintf(buffer," Lead %1d: %s", ix, lname);
textsw_replace_bytes(Sem_0_d_pw.textpane_data,ad,ad,
buffer,strlen(buffer));
ad += strlen(buffer);
ix++;
}
sprintf(buffer,"\n");
textsw_replace_bytes(Sem_0_d_pw.textpane_data,ad,ad,
buffer,strlen(buffer));
ad += strlen(buffer);
while (fgets(buffer,512,file_diag) != NULL) {
clines++;
if (buffer[0] == '#') buffer[0] = ' ';
textsw_replace_bytes(Sem_0_d_pw.textpane_data,ad,ad,
buffer,strlen(buffer));
ad += strlen(buffer);
}
fclose(file_diag);
textsw_normalize_view(Sem_0_d_pw.textpane_data, 0);
}
xv_set(Sem_0_d_pw.textpane_data, TEXTSW_READ_ONLY, TRUE, NULL);
xv_set(Sem_0_d_pw.textpane_data, TEXTSW_IGNORE_LIMIT, TEXTSW_INFINITY, NULL);
}
//
// Notify callback function for `m_b_help'.
//
void
sem_0_m_bw_m_b_help_notify_callback(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
// gxv_start_connections DO NOT EDIT THIS SECTION
xv_set(Sem_0_h_pw.h_pw, FRAME_CMD_PUSHPIN_IN, TRUE, NULL);
xv_set(Sem_0_h_pw.h_pw, XV_SHOW, TRUE, NULL);
init_help(item, event);
show_help(item, event);
// gxv_end_connections
}
//
// User-defined action for `m_b_help'.
//
void
init_help(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
}
//
// User-defined action for `m_b_help'.
//
void
show_help(Panel_item item, Event *event)
{
sem_0_m_bw_objects *ip = (sem_0_m_bw_objects *) xv_get(item, XV_KEY_DATA, INSTANCE);
FILE *file_counts=NULL;
char counts_name[16];
char bufferh[512];
static int ah=0;
xv_set(Sem_0_h_pw.textpane_help, TEXTSW_READ_ONLY, FALSE, NULL);
xv_set(Sem_0_h_pw.textpane_help, TEXTSW_IGNORE_LIMIT, TEXTSW_INFINITY, NULL);
textsw_delete(Sem_0_h_pw.textpane_help,0,TEXTSW_INFINITY);
textsw_reset(Sem_0_h_pw.textpane_help,0,TEXTSW_INFINITY);
ah = 0;
xv_set(Sem_0_h_pw.textpane_help, TEXTSW_READ_ONLY, TRUE, NULL);
xv_set(Sem_0_h_pw.textpane_help, TEXTSW_IGNORE_LIMIT, TEXTSW_INFINITY, NULL);
sprintf(counts_name,"semia.hlp");
file_counts=fopen(counts_name,"r");
if (file_counts == NULL) {
sprintf(bufferh,"\n\n No <%s.hlp> file !\n\n", inp_rec_name );
textsw_replace_bytes(Sem_0_h_pw.textpane_help,ah,ah,
bufferh,strlen(bufferh));
ah += strlen(bufferh);
} else {
while (fgets(bufferh,512,file_counts) != NULL) {
textsw_replace_bytes(Sem_0_h_pw.textpane_help,ah,ah,
bufferh,strlen(bufferh));
ah += strlen(bufferh);
}
fclose(file_counts);
textsw_normalize_view(Sem_0_h_pw.textpane_help, 0);
}
xv_set(Sem_0_h_pw.textpane_help, TEXTSW_READ_ONLY, TRUE, NULL);
xv_set(Sem_0_h_pw.textpane_help, TEXTSW_IGNORE_LIMIT, TEXTSW_INFINITY, NULL);
}
//=========================================================================================================