
Size a Graph

cdejoseph
#pragma rtGlobals=1 // Use modern global access method. // This routine places a command under the "Graph" menu which allows // sizing of the outer portion of a graph in units of inches. Thus one can // arrange annotations while the graph is at it's proper size. The graph // can then be exported and should appear just as it does on screen. // This was written using IgorPro 6.02 and tested on a Windows XP box. // // Version 11-01-07-01 C. DeJoseph, Jr. // Version 11-02-07-01 Jim Prouty, ICS // Version 11-05-07-01 C. DeJoseph, Jr. // Version 02-07-08-01 C. DeJoseph, Jr. // Menu "Graph", dynamic SizeTheGraphMenu(), /Q, DoSizing() end function/S SizeTheGraphMenu() String text="Size the Graph" string GrName=WinName(0,1) if( strlen(GrName) ) GetWindow $GrName hook(SetGraphSize) if( strlen(S_Value) ) // already hooked text="Exit Graph Sizing" endif endif return text End function DoSizing() string GrName=WinName(0,1) GetWindow $GrName hook(SetGraphSize) if( strlen(S_Value) ) // already hooked ExitSizing("") else SetGraphSize() endif End function SetGraphSize() string GrName=WinName(0,1) variable/G gGraphWidth, gGraphHeight if(strlen(GrName)<1) DoAlert 0, "No Graph selected" return -1 endif getGraphSize(Grname) ControlInfo/W=$Grname kwControlBar Variable/G oldControlBar= V_Height getwindow kwTopWin, wsize // get cordinates for top-left to keep the graph area the same size Variable morePixels= 54 ControlBar/W=$GrName morePixels+oldControlBar MoveWindow /W=$"" V_left, V_top, V_right, V_bottom+morePixels/ScreenResolution*72 SetWindow $GrName hook(SetGraphSize)=UpdateSizeHook SetVariable setvarSetGSize0,pos={10,oldControlBar+3},size={140,23},disable=2,title="Width (inches):" SetVariable setvarSetGSize0,fSize=14,format="%4.2f",limits={-inf,inf,0}, value=gGraphWidth SetVariable setvarSetGSize1,pos={10,oldControlBar+29},size={140,23},disable=2,title="Height (inches):" SetVariable setvarSetGSize1,fSize=14,format="%4.2f",limits={-inf,inf,0}, value=gGraphHeight Button buttonSetGSize0,pos={154,oldControlBar+15.5},size={50,23},disable=0,proc=ExitSizing,title="Exit" end Function UpdateSizeHook(s) STRUCT WMWinHookStruct &s strswitch(s.eventName) case "resize": getGraphSize(s.winName) break endswitch return 0 End function UpdateSize(infoStr) String infoStr String Grname= StringByKey("HCSPEC",infoStr) getGraphSize(Grname) end function getGraphSize(gname) string gname variable/G gGraphWidth, gGraphHeight getwindow $gname, gsize gGraphWidth=(V_right-V_left)/72 // inches gGraphHeight=(V_bottom-V_Top)/72 end function ExitSizing(ctrlName) : ButtonControl string ctrlName variable xoffset, yoffset setwindow kwTopWin hook(SetGraphSize)=$"" getwindow kwTopWin, wsize // get cordinates for top-left xoffset=V_left yoffset=V_top getwindow kwTopWin, gsize // now get size of graph only (not including control bar) KillControl setvarSetGSize0 KillControl setvarSetGSize1 KillControl buttonSetGSize0 Variable/G oldControlBar ControlBar oldControlBar MoveWindow /W=$"" V_left+xoffset, V_top+yoffset, V_right+xoffset, V_bottom+yoffset+oldControlBar/ScreenResolution*72 // points end

Forum

Support

Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More