#pragma rtGlobals=1 // Use modern global access method. Menu "Point Labels" "Add point label@csrA /OF2",AddPointLabel() "Del point labels /OF4",/Q,DelPointLabels() End //-------------------------------------------------- Function AddPointLabel()// puts vertical X tag on wave carrying cursor A string tagname,wname,wnamex, taglabel, tracename, info, DFname, CTRname variable xwexists, tagvalue, ii, jj wname=CsrWave(A) // name of wave on which user has placed cursor A if (StrLen(wname)==0) print "Cursor A is not on a wave" abort else wname=GetWavesDataFolder(CsrWaveRef(A),2) tracename=NameofWave(CsrWaveRef(A)) endif wave DA=$wname // local reference to Y wave if (WaveExists(XWaveRefFromTrace("",tracename))) // check for X wave xwexists=1 wnamex=NameofWave(XWaveRefFromTrace("",tracename) ) // name of X-wave on which user has placed cursor A wave DAx=XWaveRefFromTrace("",tracename) // local reference to X wave tagvalue=DAx[pcsr(A)] //print "using x wave:",wnamex setscale /P x,0,1,DA // "point" scaling to facilitate tag setting else xwexists=0 tagvalue=xcsr(A) endif print tagvalue, pcsr(A) if (!datafolderexists("root:PointLabels")) NewDataFolder root:PointLabels endif info=CsrInfo(A) ii= strsearch(info,"/W=",0) ii+=3 jj= strsearch(info," ",ii) DFname=info[ii,jj-1] + "_" + CsrWave(A) DFname="root:PointLabels:" + DFname if (!datafolderexists(DFname)) NewDataFolder $DFname endif CTRname=DFname + ":NpointLabels" //print ctrname if (!exists(CTRname)) variable/G $CTRname// this stores nr of labels on this wave in this window endif nvar NpointLabels=$CTRname NpointLabels+=1 sprintf taglabel, "%11.4f",tagvalue // format control is here if (NpointLabels<10) sprintf tagname,"PtLabel0%1d",NpointLabels elseif (NpointLabels<100) sprintf tagname,"PtLabel%2d",NpointLabels else sprintf tagname,"PtLabel%3d",NpointLabels endif Tag/C/A=MB/B=1/N=$tagname/F=0/L=1/X=0.00/Y=5.00/O=90 $tracename, xcsr(A), taglabel End //---------------------------------------------------- Function DelPointLabels() // removes all tags on wave carrying cursor A string tagname,wname,wnamex, taglabel, tracename, info, DFname, CTRname variable xwexists, tagvalue, ii, jj wname=CsrWave(A) // name of wave on which user has placed cursor A if (StrLen(wname)==0) print "Cursor A is not on a wave" abort else wname=GetWavesDataFolder(CsrWaveRef(A),2) tracename=NameofWave(CsrWaveRef(A)) endif wave DA=$wname // local reference to Y wave if (!datafolderexists("root:PointLabels")) NewDataFolder root:PointLabels endif info=CsrInfo(A) ii= strsearch(info,"/W=",0) ii+=3 jj= strsearch(info," ",ii) DFname=info[ii,jj-1] + "_" + CsrWave(A) DFname="root:PointLabels:" + DFname if (!datafolderexists(DFname)) NewDataFolder $DFname endif CTRname=DFname + ":NpointLabels" if (!exists(CTRname)) variable/G $CTRname // this stores nr of labels on this wave in this window endif nvar NpointLabels=$CTRname for (ii=NpointLabels; ii>0; ii-=1) if (ii<10) sprintf tagname,"PtLabel0%1d",ii elseif (NpointLabels<100) sprintf tagname,"PtLabel%2d",ii else sprintf tagname,"PtLabel%3d",ii endif Tag/K/N=$tagname endfor NpointLabels=0 End