#pragma rtGlobals=3 // Use modern global access method and strict wave access. #pragma IgorVersion=6 #pragma version=2 // improved Prompts explaining to use negative numbers for overbar // Examples: // TextBox/C/N=text0 CrystalCoordAnnotationText(1,-1,1) // TextBox/C/N=text1 CrystalCoordAnnotationText(-2,2,-2,fontSize=14, offset=46, spacesBetween=0, bracket="<") Function/S CrystalCoordAnnotationText(vA, vB, vC [, fontSize, offset, spacesBetween, bracket]) Variable vA,vB,vC Variable fontSize,offset,spacesBetween String bracket if( ParamIsDefault(fontSize) || fontSize <= 0 ) fontSize= 12 endif if( ParamIsDefault(offset) ) offset = 45 // 90 percent of font height endif String spaces=" " if( !ParamIsDefault(spacesBetween) ) spaces= PadString("", spacesBetween, 0x20) endif if( ParamIsDefault(bracket) ) bracket="(" endif String lineStr= "700" // tdd Thickness is encoded by digit t with values of 4,5,6 and 7 giving 0.25, 0.5, 1.0 and 1.5 pt. dd is line style (00 is solid line) String str sprintf str, "\\Z%02d%s\\[0", fontSize, bracket // note: \M recalls info variable 0 String sval if( vA >= 0 ) sprintf sval, "%g", vA else sprintf sval, "\\[1%g\\y+%02d\\L1%s", -vA, offset,lineStr // \Ldtss Draws a line from the x position specified in text info variable d to the current x position endif str += sval + "\\M"+spaces if( vB >= 0 ) sprintf sval, "%g", vB else sprintf sval, "\\[1%g\\y+%02d\\L1%s", -vB, offset,lineStr endif str += sval + "\\M"+spaces if( vC >= 0 ) sprintf sval, "%g", vC else sprintf sval, "\\[1%g\\y+%02d\\L1%s", -vC, offset,lineStr endif str += sval + "\\M"+ClosingBracket(bracket) // TextBox/C/N=$name "\\Z12\\[0(A\\[1B\\[2\\y+45\\L1700\\MC)" return str End Function/S ClosingBracket(bracket) String bracket strswitch(bracket) case "(": bracket= ")" break case "[": bracket= "]" break case "{": bracket= "}" break case "<": bracket= ">" break endswitch return bracket End Menu "Graph" "Add Crystallography Annotation...", CrystalAnnotation() End Proc CrystalAnnotation(vA, vB, vC, fontSize, spaces, bracket) Variable vA=0, vB=0, vC=0, fontSize=12 // defaults Variable spaces=1 Prompt vA, "vA (use negative # for overbar)" Prompt vB, "vB (use negative # for overbar)" Prompt vC, "vC (use negative # for overbar)" Prompt spaces, "spaces between numbers" String bracket="(" Prompt bracket, "Bracket", popup, ";(;[;{;<;" String str= CrystalCoordAnnotationText(vA,vB,vC,fontSize=fontSize,bracket=bracket,spacesBetween=spaces) TextBox/F=0/A=LT str End