Reference Implementation

Window Logic

Set reference MessageRef to $cinst.$objs.MessagePane.$bobjs.iMessage

Calculate HeightRemainder as $cinst.$height-MessageRef.$height

Calculate NewHeight as tStringFields.$getWindowFieldHeightForAvailWidth(
  MessageRef.$fieldstyle,
  iMessage,
  MessageRef.$width
)

Calculate NewHeight as NewHeight+HeightRemainder

Core Method

Calculate Height as $cinst.$getWindowFieldHeight(pFieldStyle)

Calculate LinesToAdd as 0
Calculate bitmapWidth as 18 

Calculate TokenString as pText

While pos(chr(27),TokenString)>0
  Calculate styleSubString as mid(TokenString,pos(chr(27),TokenString))
  Calculate styleSubString as mid(styleSubString,1,pos(chr(35),styleSubString))

  If asc(styleSubString,2)=kEscBmp
    Calculate bmpCount as bmpCount+$cinst.$replace(TokenString,styleSubString,'',TokenString)
  Else
    Calculate TokenString as replaceall(TokenString,styleSubString,'')
  End If
End While

Calculate Token as strtok(nam(TokenString),kCr)

While len(TokenString)>0|len(Token)>0

  If len(Token)=0
    Calculate LinesToAdd as LinesToAdd+1
  Else
    Calculate TokenWidth as $cinst.$getWindowFieldWidth(pFieldStyle,Token)+bmpCount*bitmapWidth
    Calculate LinesToAdd as LinesToAdd+int(TokenWidth/pAvailWidth)+1
  End If

  Calculate Token as strtok(nam(TokenString),kCr)
End While

Quit method Height*LinesToAdd

Notes