//genesis function expscale(factor, form) float factor str form str field float value field = {getfield {form}/field value} value = {getfield {form}/{field} value} value = value*factor setfield {form}/{field} value {value} end function linscale(factor, form) float factor str form str field float value float v1, v2 float r float l, t int il, it float corr field = {getfield {form}/field value} value = {getfield {form}/{field} value} r = value r = {abs {r}} l = {log {r}}/{log 10} if (l < 0) il = l - 1 it = {pow 10 {-il}} else il = l it = {pow 10 {il}} end t = il t = {pow 10 {il}} l = r/t if (l > 9.999) t = t*10.0 l = l/10.0 if (il < 0) it = it/10 else it = it*10 end il = il + 1 end // echo l = {l}, il = {il}, r = {r}, t = {t} if ((l >= 0.999) && (l < 2)) r = t*0.1 end if ((l >= 1.999) && (l < 5)) r = t*0.2 end if (l >= 4.999) r = t*0.5 end if (value > 0) corr = 0.5 else corr = -0.5 end t = it if (il > 0) value = {trunc {((value + r*factor)*10.0/t + corr)}}*t/10.0 else value = {trunc {((value + r*factor)*t*10.0 + corr)}}/(t*10.0) end setfield {form}/{field} value {value} end function overscale(graph, widget) str graph, widget if ({getfield {widget} state} == 1) setfield {graph} overlay 1 else setfield {graph} overlay 0 end end function scalegraph(graph) str graph int x, y, w str temp //DHB temp = {getfield {graph} form} //DHB x = {getfield {temp} x} //DHB y = {getfield {temp} y} x = {getfield {graph}/.. xgeom} y = {getfield {graph}/.. ygeom} create x1form {graph}_scale [{x},{y},200,280] -title Scale create x1button {graph}/scale [0,0,50,] -script \ "xshowontop "{graph}_scale create x1toggle {graph}/overlay [170,0,120,] -script \ "overscale "{graph}" "<widget> setfield ^ label0 "do not overlay" label1 "overlay" pushe {graph}_scale create x1button "<<" [2%,35,20%,] -script \ "expscale 0.5 "{graph}_scale create x1button "<" [24%,35,20%,] -script \ "linscale -1.0 "{graph}_scale create x1button " >" [56%,35,20%,] -script \ "linscale 1.0 "{graph}_scale create x1button " >>" [78%,35,20%,] -script \ "expscale 2.0 "{graph}_scale create x1dialog field -value xmin -script "setwidgfield "<widget> create x1dialog xmin -value {getfield {graph} xmin} create x1dialog xmax -value {getfield {graph} xmax} create x1dialog ymin -value {getfield {graph} ymin} create x1dialog ymax -value {getfield {graph} ymax} create x1button APPLY -script \ "applyscale "{graph}" "{graph}_scale" 0" create x1button APPLY_AND_VANISH -script \ "applyscale "{graph}" "{graph}_scale" 1" pope end function setwidgfield(widget) str widget str field field = {getfield {widget} value} if ({strcmp {field} xmin} == 0) setfield {widget} value xmax end if ({strcmp {field} xmax} == 0) setfield {widget} value ymin end if ({strcmp {field} ymin} == 0) setfield {widget} value ymax end if ({strcmp {field} ymax} == 0) setfield {widget} value xmin end end function applyscale(graph, form, vanish) str graph, form int vanish float xmin, ymin, xmax, ymax xmin = {getfield {form}/xmin value} xmax = {getfield {form}/xmax value} ymin = {getfield {form}/ymin value} ymax = {getfield {form}/ymax value} if (xmin > xmax) setfield {form}/xmin value {xmax} setfield {form}/xmax value {xmin} xmin = {getfield {form}/xmin value} xmax = {getfield {form}/xmax value} end if (ymin > ymax) setfield {form}/ymin value {ymax} setfield {form}/ymax value {ymin} ymin = {getfield {form}/ymin value} ymax = {getfield {form}/ymax value} end if (xmin != {getfield {graph} xmin}) setfield {graph} xmin {xmin} end if (xmax != {getfield {graph} xmax}) setfield {graph} xmax {xmax} end if (ymin != {getfield {graph} ymin}) setfield {graph} ymin {ymin} end if (ymax != {getfield {graph} ymax}) setfield {graph} ymax {ymax} end /* set {graph} xmin {xmin} ymin {ymin} xmax {xmax} ymax {ymax} */ if (vanish) xhide {form} end end function do_xgraph(num) str num int xoutwidth = (user_screenwidth - 380)/2 if ({strcmp {num} "1"} == 0) if ((user_numxouts) == 1) create x1form {cellpath}graph1 [380,540,600,350] \ -nolabel else create x1form {cellpath}graph1 [380,540,450,350] \ -nolabel end else create x1form {cellpath}graph2 \ [{380 + xoutwidth},540,{xoutwidth},350] -nolabel end pushe {cellpath}graph{num} disable . create x1graph graph [1%,5%,98%,95%] -range [0,-0.1,0.1,0.4] setfield ^ XUnits Sec if ({strcmp {num} "1"} == 0) setfield graph yoffset {user_yoffset1} xmax {user_xmax1} \ ymin {user_ymin1} ymax {user_ymax1} else setfield graph yoffset {user_yoffset2} xmax {user_xmax2} \ ymin {user_ymin2} ymax {user_ymax2} end useclock graph 9 scalegraph {cellpath}graph{num}/graph create x1button {cellpath}graph{num}/graph/new_colors \ [70,0,80,] -script "color_plot "{num} pope end