// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // ! This script is provided "as is" by Applied Maths. ! // ! You are free to use and modify this script for your own needs. ! // ! Redistribution or reproduction of the script is prohibited. ! // ! DISCLAIMER: ! // ! Improper use of scripts may corrupt your database. ! // ! Running this script is entirely at your own responsibility. ! // ! Applied Maths accepts no lialibility for any consequences ! // ! resulting from its use. ! // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! integer i; string experlist,expername,st,st2; DIALOG dlg; float mt,proc,mt_min,mt_max,xp,yp,x0,y0,xl,yl; for i=1 to DbGetExperCount do if DbGetExperClass(i)="FPR" then { if expername="" then expername=DbGetExperName(i); experlist=experlist+DbGetExperName(i)+" "; } if expername="" then { message("There are no fingerprint type experiments present!"); stop; } DlgAddText(dlg,"Select the fingerprint type",15,15,150,15); DlgAddList(dlg,experlist,expername,15,35,150,150,"LIST"); if not(DlgShow(dlg,"Show metrics curve",290,220)) then stop; mt_min=10000000.0;mt_max=-10000000.0; for i=0 to 500 do { proc=i/5; mt=FprGetMetric(expername,proc); if mt>mt_max then mt_max=mt; if mt"" do { xp=x0+val(splitstring(st,";"))*xl; st2=splitstring(st," "); if st2="" then { PrnMoveto(xp,y0+yl+0.3);PrnLineto(xp,y0+yl+0.2); PrnMoveto(xp,y0-0.3);PrnLineto(xp,y0-0.2); } else { PrnMoveto(xp,y0+yl+0.3);PrnLineto(xp,y0+yl+0.1); PrnMoveto(xp,y0-0.3);PrnLineto(xp,y0-0.1); PrnText(xp-PrnTextSizeX(st2)/2,y0+yl+0.7,st2); } } st=PrnScaleDiv(mt_min,mt_max); while st<>"" do { yp=y0+yl-val(splitstring(st,";"))*yl; st2=splitstring(st," "); if st2="" then { PrnMoveto(x0-0.3,yp);PrnLineto(x0-0.2,yp); PrnMoveto(x0+xl+0.3,yp);PrnLineto(x0+xl+0.2,yp); } else { PrnMoveto(x0-0.3,yp);PrnLineto(x0-0.1,yp); PrnMoveto(x0+xl+0.3,yp);PrnLineto(x0+xl+0.1,yp); PrnTextRight(x0-0.4,yp+0.1,st2); } } for i=0 to 500 do { proc=i/5; mt=FprGetMetric(expername,proc); xp=x0+proc/100*xl; yp=y0+yl-yl*(mt-mt_min)/(mt_max-mt_min); if i=0 then PrnMoveto(xp,yp); else PrnLineto(xp,yp); } PrnEnd;