// This script makes the scalebar of all displayed images the same // in style and relative size. // Optionally, it adds/removes the scalebar at all number kEnsureScalebar = 1 void SetScaleBarToStyle( image img, number doAddIfMissing ) { // Style to be used number relT = 0.8 // 80% from top number relL = 0.1 // 10% from left number relB = 0.9 // 10% from bottom number relR = 0.9 // 10% from right number moveable = 0 // 'freeze' into place string font = "Arial" number fontSize = 12 rgbnumber fCol = RGB( 0, 100, 230 ) // Get display and verify it is suitable if ( !img.ImageIsValid() ) return if ( 0 == img.ImageCountImageDisplays() ) return imageDisplay disp = img.ImageGetImageDisplay( 0 ) number kRASTER = 1 // Display Type Raster-image number kRGB = 4 // Display Type RGB-Raster-image number dispType = disp.ImageDisplayGetDisplayType() if ( !((kRGB == dispType)||(kRASTER == dispType)) ) return // Find scale-bar annotation number kSCALEBAR = 31 component scalebar if ( 0 == disp.ComponentCountChildrenOfType( kSCALEBAR ) ) { if ( !doAddIfMissing ) return scalebar = NewComponent( kSCALEBAR, 0, 0, 1, 1 ) disp.ComponentAddChildAtEnd( scalebar ) } number nComp = disp.ComponentCountChildren() for ( number i = 0 ; i < nComp; i++ ) { scalebar = disp.ComponentGetChild( i ) if ( kSCALEBAR == scalebar.ComponentGetType() ) break; } // now adjust number imgW = img.ImageGetDimensionSize( 0 ) number imgH = img.ImageGetDimensionSize( 1 ) scalebar.ComponentSetRect( relT * imgH, relL * imgW, relB * imgH, relR * imgW ) scalebar.ComponentSetFontFaceName( font ) scalebar.ComponentSetFontSize( fontSize ) // annotion height & font-size are interlinked scalebar.ComponentSetForegroundColor( Red(fcol)/255, Green(fcol)/255, Blue(fcol)/255 ) scalebar.ComponentSetMovable( moveable ) scalebar.ComponentSetSelected( 0 ) } // Perform action on all image displays image img GetFrontImage( img ) while( img.ImageIsValid() ) { SetScaleBarToStyle( img, kEnsureScalebar ) img := FindNextImage( img ) }