//qFunctions function montageMaker(dir) { // check how many slices/channels Stack.getDimensions(width, height, channels, slices, frames); getPixelSize(unit, pixelWidth, pixelHeight); // checks now happen before this is called // if (channels * slices * frames == 1) exit ("Need more than one channel or slice or frame"); run("Stack to Images"); numImages = nImages; imgArray = newArray(numImages); colArray = newArray(numImages); mArray = newArray(numImages + 1); mArray[0] = "*None*"; grayChoiceArray = newArray(numImages); for (i=0; i theWidth) vChoice = "vert"; len = imgArray.length; // Standard sizes grout = 16; res = 300; sblen = 10; mag = 0.069; // Make dialog box Dialog.create("Compile the montages"); // variations based on number of files if (vChoice == "vert") { Dialog.addMessage("Select order for your compilation, left to right"); } else { Dialog.addMessage("Select order for your compilation, top to bottom"); } for (i = 0; i < len; i ++) { labStr = d2s(i+1,0); Dialog.addChoice(labStr, rowArray); } Dialog.addNumber("Row gap (px, default = 2 x grout):", 16); Dialog.addNumber("d.p.i.", 300); Dialog.addCheckbox("Scale bar?", false); Dialog.addNumber("Scale bar size (µm):", 10); Dialog.addNumber("1 px is how many µm?", 0.069); Dialog.show(); // variations based on number of files for (i = 0; i < len; i ++) { nameArray[i] = Dialog.getChoice(); } grout = Dialog.getNumber(); res = Dialog.getNumber(); sbchoice = Dialog.getCheckbox(); sblen = Dialog.getNumber(); mag = Dialog.getNumber(); // decisions collected setBatchMode(true); // setup for save win = getTitle(); dir1 = getDirectory("image"); newName = "cmp" + len + win; // get dimensions wArray = newArray(len); hArray = newArray(len); hPosArray = newArray(len+1); hPosArray[0] = 0; height = 0; for (i=0; i