// All-macro sliders... // This macro provides a single window with one to // many sliders. For each slider you can set a min, // max and value (shift-click). Of course the sliders // can be adjusted, and their values are remembered // with the preferences system. Then the values can // be easily used by other macros/plugins. // jerome.mutterer(at)ibmp.fr var name = "Macro Sliders"; var sliders = newArray("macro","sliders","demo"); var width=255; var w=10; var h=20; var s; var v; var mi; var ma; macro "sliders Tool - C000L03f3F7233C000L07f7F3633C000L0bfbFaa33" { getCursorLoc(x,y,z,flags); c = floor(y/h); if (getTitle!=name) exit(); if (isKeyDown("alt")) dumpValues(); if (isKeyDown("shift")) { Dialog.create("Set slider properties..."); Dialog.addMessage (sliders[c]); Dialog.addNumber ("Min", mi[c]); Dialog.addNumber ("Max", ma[c]); Dialog.addNumber ("Value", v[c]); Dialog.show(); mi[c] =Dialog.getNumber (); ma[c] =Dialog.getNumber (); v[c] =Dialog.getNumber (); if ((v[c]ma[c])) exit ("out of range"); s[c] = width*(v[c]-mi[c])/(ma[c]-mi[c]) ; drawSlider(c); saveSliderPrefs(c); exit(); } while (flags!=0) { getCursorLoc(x,y,z,flags); if ((x>=0)&&(x<=width)&&(c=0)) { s[c]=x; drawSlider(c); } wait(5); } saveSliderPrefs(c); // do something with the values when mouse is released // should be coded here. } macro "sliders Tool Selected" { if (!isOpen(name)) { setBatchMode(true); call("ij.gui.ImageWindow.centerNextImage"); newImage(name,"8-bit", width+w,h*sliders.length,1); s=newArray(sliders.length); mi=newArray(sliders.length); ma=newArray(sliders.length); v=newArray(sliders.length); for (i=0;ishift-click to edit range or value"; m=m+"
  • alt-click to dump the values" m=m+"
  • call('ij.Prefs.get','macrosliders.name.value',0); to get a value"; showMessage (name,m); } function drawSlider(i) { setColor(255); fillRect(0,i*h, getWidth,h); setColor(220); drawLine(0,i*h+h/2,getWidth,i*h+h/2); setColor(64); fillRect(s[i],i*h,w,h); setColor(200); fillRect(s[i]+1,i*h+1,w-2,h-2); offset = 15; setJustification("left"); prefix=""; suffix=" : "+sliders[i]; if (s[i]>getWidth/2) { offset = -5;setJustification("right"); prefix=sliders[i]+" : "; suffix="";} setColor(32); setFont("SansSerif",11); v[i] = (parseFloat(s[i])/width)*(parseFloat(ma[i])-parseFloat(mi[i]))+parseFloat(mi[i]); v[i] = round (v[i]*100)/100; drawString (prefix+v[i]+suffix,s[i]+offset, i*h+16); m=""; for (j=0;j