///////////////////////////////////////////////////////////////////// // (c) Gatan Inc. ///////////////////////////////////////////////////////////////////// // This script creates and updates a text-annotation on the front // most image, showing the current time. // // The update ends if SHIFT + CTRL + ALT are pressed simultaneously ////////////////////////////////////////////////////////////////////// // last modified 08-July-2014 BS Class ImageTimeStamp { image target number interval number selfTaskID component timebar number tBshowSec number tBSize number tBRelPosX, tBRelPosY number tBDM string tBFont number tBFG_r, tBFG_g, tBFG_b number tBBG_r, tBBG_g, tBBG_b void StartTimer( object self ) selfTaskID = AddMainThreadPeriodicTask( self, "UpdateBar", interval ) void StopTimer( object self ) RemoveMainThreadtask(selfTaskID) void SetTimeBarDefaults( object self ) { tBFont = "Arial" tBshowSec = 1 tBSize = 14 tBRelPosX = 0.1; tBRelPosY = 0.9; tBDM = 2; tBFG_r = 0; tBFG_g = 1; tBFG_b = 0; tBBG_r = 0; tBBG_g = 0; tBBG_b = 0; } component CreateTimeBar( object self ) { number sx,sy target.ImageGetorCreateImageDocument().ImageDocumentGetWindow().WindowGetContentSize(sx,sy) component bar = NewTextAnnotation( target.ImageGetImageDisplay(0), sx*tBRelPosX, sy*tBRelPosY, GetTime(tBShowSec), tBSize ) bar.ComponentSetForegroundColor( tBFG_r, tBFG_g, tBFG_b ) bar.ComponentSetBackgroundColor( tBBG_r, tBBG_g, tBBG_b ) bar.ComponentSetDrawingMode( tBDM ) bar.ComponentSetFontFaceName( tBFont ) return bar } object Init( object self, image img, number sec ) { target := img interval = sec self.SetTimeBarDefaults() timebar = self.CreateTimeBar() img.ImageGetImageDisplay(0).ComponentAddChildAtEnd( timebar ) self.StartTimer() return self } void UpdateBar( object self ) { if ( 0 == target.ImageCountImageDisplays() ) self.StopTimer() if ( ShiftDown() && OptionDown() && ControlDown() ) self.StopTimer() timebar.TextAnnotationSetText( GetTime(tBShowSec) ) } } // Main Call Image img number updateIntervalSec = 1 if ( GetFrontImage(img) ) Alloc(ImageTimeStamp).Init(img,updateIntervalSec)