// "StartupMacros" // The macros and macro tools in this file ("StartupMacros.txt") are // automatically installed in the Plugins>Macros submenu and // in the tool bar when ImageJ starts up. // About the drawing tools. // // This is a set of drawing tools similar to the pencil, paintbrush, // eraser and flood fill (paint bucket) tools in NIH Image. The // pencil and paintbrush draw in the current foreground color // and the eraser draws in the current background color. The // flood fill tool fills the selected area using the foreground color. // Hold down the alt key to have the pencil and paintbrush draw // using the background color or to have the flood fill tool fill // using the background color. Set the foreground and background // colors by double-clicking on the flood fill tool or on the eye // dropper tool. Double-click on the pencil, paintbrush or eraser // tool to set the drawing width for that tool. // // Icons contributed by Tony Collins. // Global variables var pencilWidth=1, eraserWidth=10, leftClick=16, alt=8; var brushWidth = 10; //call("ij.Prefs.get", "startup.brush", "10"); var floodType = "8-connected"; //call("ij.Prefs.get", "startup.flood", "8-connected"); // The macro named "AutoRun" runs when ImageJ starts. // macro "AutoRun" {print("AutoRun");} // The macro named "AutoRunAndHide" runs when ImageJ starts // and the file containing it is not displayed when ImageJ opens it. // macro "AutoRunAndHide" {} macro "AutoRun" { //run("My Plugin"); } //macro "Unused Tool -" {} macro "Abort Macro or Plugin (or press Esc key) Action Tool - CbooP51b1f5fbbf5f1b15510T5c10X" { setKeyDown("Esc"); } var xx = requires138b(); // check version at install function requires138b() {requires("1.38b"); return 0; } var dCmds = newMenu("Developer Menu Tool", newArray("ImageJ Website","News", "ImageJ Wiki", "Resources", "Macro Language", "Macros", "Macro Functions", "Startup Macros...", "Plugins", "Source Code", "List Archives", "-", "Record...", "Capture Screen ", "Monitor Memory...", "List Commands...", "Control Panel...", "Search...", "Debug Mode")); macro "Developer Menu Tool - C037T0b11DT7b09eTcb09v" { cmd = getArgument(); if (cmd=="ImageJ Website") run("URL...", "url=http://rsbweb.nih.gov/ij/"); else if (cmd=="News") run("URL...", "url=http://rsbweb.nih.gov/ij/notes.html"); else if (cmd=="ImageJ Wiki") run("URL...", "url=http://imagejdocu.tudor.lu/imagej-documentation-wiki/"); else if (cmd=="Resources") run("URL...", "url=http://rsbweb.nih.gov/ij/developer/"); else if (cmd=="Macro Language") run("URL...", "url=http://rsbweb.nih.gov/ij/developer/macro/macros.html"); else if (cmd=="Macros") run("URL...", "url=http://rsbweb.nih.gov/ij/macros/"); else if (cmd=="Macro Functions") run("URL...", "url=http://rsbweb.nih.gov/ij/developer/macro/functions.html"); else if (cmd=="Plugins") run("URL...", "url=http://rsbweb.nih.gov/ij/plugins/"); else if (cmd=="Source Code") run("URL...", "url=http://rsbweb.nih.gov/ij/developer/source/"); else if (cmd=="List Archives") run("URL...", "url=https://list.nih.gov/archives/imagej.html"); else if (cmd=="Debug Mode") setOption("DebugMode", true); else if (cmd!="-") run(cmd); } var sCmds = newMenu("Stacks Menu Tool", newArray("Add Slice", "Delete Slice", "Next Slice [>]", "Previous Slice [<]", "Set Slice...", "-", "Convert Images to Stack", "Convert Stack to Images", "Make Montage...", "Reslice [/]...", "Z Project...", "3D Project...", "Plot Z-axis Profile", "-", "Start Animation", "Stop Animation", "Animation Options...", "-", "MRI Stack (528K)")); macro "Stacks Menu Tool - C037T0b11ST8b09tTcb09k" { cmd = getArgument(); if (cmd!="-") run(cmd); } var luts = getLutList(); var lCmds = newMenu("LUT Menu Tool", luts); macro "LUT Menu Tool - C037T0b11LT6b09UTcb09T" { cmd = getArgument(); if (cmd!="-") run(cmd); } function getLutList() { lutdir = getDirectory("startup")+"luts"+File.separator; list = newArray("No LUTs in the '/ImageJ/luts' folder"); if (!File.exists(lutdir)) return list; rawlist = getFileList(lutdir); if (rawlist.length==0) return list; count = 0; for (i=0; i< rawlist.length; i++) if (endsWith(rawlist[i], ".lut")) count++; if (count==0) return list; list = newArray(count); index = 0; for (i=0; i< rawlist.length; i++) { if (endsWith(rawlist[i], ".lut")) list[index++] = substring(rawlist[i], 0, lengthOf(rawlist[i])-4); } return list; } macro "Pencil Tool - C037L494fL4990L90b0Lc1c3L82a4Lb58bL7c4fDb4L5a5dL6b6cD7b" { getCursorLoc(x, y, z, flags); if (flags&alt!=0) setColorToBackgound(); draw(pencilWidth); } macro "Paintbrush Tool - C037La077Ld098L6859L4a2fL2f4fL3f99L5e9bL9b98L6888L5e8dL888c" { getCursorLoc(x, y, z, flags); if (flags&alt!=0) setColorToBackgound(); draw(brushWidth); } macro "Flood Fill Tool -C037B21P085373b75d0L4d1aL3135L4050L6166D57D77D68La5adLb6bcD09D94" { requires("1.34j"); setupUndo(); getCursorLoc(x, y, z, flags); if (flags&alt!=0) setColorToBackgound(); floodFill(x, y, floodType); } function draw(width) { requires("1.32g"); setupUndo(); getCursorLoc(x, y, z, flags); setLineWidth(width); moveTo(x,y); x2=-1; y2=-1; while (true) { getCursorLoc(x, y, z, flags); if (flags&leftClick==0) exit(); if (x!=x2 || y!=y2) lineTo(x,y); x2=x; y2 =y; wait(10); } } function setColorToBackgound() { savep = getPixel(0, 0); makeRectangle(0, 0, 1, 1); run("Clear", "slice"); background = getPixel(0, 0); run("Select None"); setPixel(0, 0, savep); setColor(background); } // Runs when the user double-clicks on the pencil tool icon macro 'Pencil Tool Options...' { pencilWidth = getNumber("Pencil Width (pixels):", pencilWidth); } // Runs when the user double-clicks on the paint brush tool icon macro 'Paintbrush Tool Options...' { brushWidth = getNumber("Brush Width (pixels):", brushWidth); call("ij.Prefs.set", "startup.brush", brushWidth); } // Runs when the user double-clicks on the flood fill tool icon macro 'Flood Fill Tool Options...' { Dialog.create("Flood Fill Tool"); Dialog.addChoice("Flood Type:", newArray("4-connected", "8-connected"), floodType); Dialog.show(); floodType = Dialog.getChoice(); call("ij.Prefs.set", "startup.flood", floodType); } // This tool draws arrows. Double click on the // tool icon to set the line width. Double click // on the eye dropper tool to define the color. // Press "z" to undo. var lineWidth=2; macro "Arrow Tool -C037L1ee1L65e1La9e1" { leftButton=16; rightButton=4; alt=8; getCursorLoc(x, y, z, flags); xstart = x; ystart = y; x2=x; y2=y; setOption("disablePopupMenu", true); while (flags!=0) { getCursorLoc(x, y, z, flags); if (x!=x2 || y!=y2) makeLine(xstart, ystart, x, y); x2=x; y2=y; wait(10); } setOption("disablePopupMenu", false); if (x!=xstart || y!=ystart) drawArrow(xstart, ystart, x, y, lineWidth); run("Select None"); } function drawArrow(x1, y1, x2, y2, lineWidth) { setupUndo(); setLineWidth(lineWidth); size = 12+12*lineWidth*0.25; dx = x2-x1; dy = y2-y1; ra = sqrt(dx*dx + dy*dy); dx /= ra; dy /= ra; x3 = round(x2-dx*size); y3 = round(y2-dy*size); r = 0.3*size; x4 = round(x3+dy*r); y4 = round(y3-dx*r); x5 = round(x3-dy*r); y5 = round(y3+dx*r); drawLine(x1, y1, x2, y2); if (!isKeyDown("alt")) {moveTo(x4,y4); lineTo(x2,y2); lineTo(x5,y5);} } // This is a tool macro similar to the spray can tool in NIH Image. // Double-click on the tool icon to set the spray width, dot size // and flow rate. var sprayCanWidth=75, sprayCanDotSize=1, sprayCanRate=6; macro 'Spray Can Tool - C037D20D22D24D41D43D62D82Da2L93b3D84Dc4L75d5L757f Ld5dfLa7d7LabdbLa9d9LacdcLa7ac' { setLineWidth(sprayCanDotSize); radius=sprayCanWidth/2; radius2=radius*radius; start = getTime(); autoUpdate(false); n = 5*exp(0.9*(10-sprayCanRate)); if (n<=5) n = 0; while (true) { getCursorLoc(x, y, z, flags); if (flags&16==0) exit(); x2 = (random()-0.5)*sprayCanWidth; y2 = (random()-0.5)*sprayCanWidth; if (x2*x2+y2*y2start+50) { updateDisplay(); start = getTime(); } } for (i=0; i10) sprayCanRate = 10; } // ImageJ runs this macro when user double-clicks on the tool icon macro "Arrow Tool Options" { lineWidth = getNumber("Line Width:", lineWidth); } macro "Set Drawing Color..."{ run("Color Picker..."); } macro "-" {} //menu divider macro "About Startup Macros..." { path = getDirectory("macros")+"/About Startup Macros"; if (!File.exists(path)) exit("\"About Startup Macros\" not found in ImageJ/macros/."); open(path); } macro "Count Spots [f1]" { run("Find Maxima...", "noise=500 output=Count"); } var pmCmds = newMenu("Popup Menu", newArray("Help...", "Rename...", "Duplicate...", "Original Scale", "Paste Control...", "-", "Record...", "Capture Screen ", "Monitor Memory...", "List Commands...", "Control Panel...", "Startup Macros...", "Search...", "-", "Find Maxima...")); macro "Popup Menu" { cmd = getArgument(); if (cmd=="Help...") showMessage("About Popup Menu", "To customize this menu, edit the line that starts with\n\"var pmCmds\" in ImageJ/macros/StartupMacros.txt."); else run(cmd); } macro "Save As JPEG... [j]" { quality = call("ij.plugin.JpegWriter.getQuality"); quality = getNumber("JPEG quality (0-100):", quality); run("Input/Output...", "jpeg="+quality); saveAs("Jpeg"); }