Dynamic Text Box Adjuster V and H!

Date: Fri Jul 13 04:08:13 MST 2001
From: Jeff Murray <jeff@psychicparrot.com>
Subject: Dynamic Text Box Adjuster V and H!
This behaviour resizes text members (not fields!) down to the exact pixel (most of the time!)..

In order for this script to work, you need a blank bitmap for temporary use. Create a new bitmap, then change the "Targetmem" value to the cast number of it. Apply this behaviour to the text fields you need resizing, then call it by using "Sendsprite(*textspritetoresize*,#setwidth)

It can be a little strange sometimes, thanks to director's dodgy trimwhitespace function. Oh well. Works great with larger text members.

Guru David Mennenoh came up with the idea of using trimwhitespace, so nuff respec to him!

-- Dynamic bounding text box adjustment behaviour v.2
--
-- By Jeff Murray March 14th 2001
-- revised July 12th 2001
-- 
-- http://www.psychicparrot.com
--

property maxx,mycolor,sourceMem
property sourceImage,imageWidth,imageHeight1
property imageHeight,sourceColor
property spritenum
global ed,eobj,gzfactor

on beginSprite me
  
  sprite(spritenum).member.topspacing = 0
  sprite(spritenum).member.boxtype = #fixed
  sprite(spritenum).member.height = 100
  sprite(spritenum).member.alignment = #left
  
end beginSprite 

on setWidth me
        
    -- set up variable default values  
    
    maxx = 0
    sourceMem = sprite(spritenum).member
    TargetMem = 3 -- temporary member for processing the bitmap
    
    -- size up text box to allow for expanding as well as cropping
    
    sourceMem.width = 1760
    
    -- get parameters for new member
    
    sourceImage = member(sourceMem).image
    imageWidth = sourceImage.width
    imageHeight = sourceImage.height 
    sourceRect = sourceImage.rect
    destRect = sourceImage.rect
    
    -- turn that damn wordwrap off!
    
    member(sourceMem).wordwrap= FALSE
    
    -- copyPixels bit to copy text member into a bitmap member   
    
    newImage = image(imageWidth,imageHeight,1,0)
    (newImage).copyPixels(sourceImage, destRect, sourceRect)
    member(targetMem).image = newImage
    member(targetMem).regPoint = point(0,0)
    workingImage = member(targetmem).image.duplicate()  
    workingImage = workingImage.trimWhiteSpace()
    imageWidth = workingImage.width
    
    -- set the original text box to the new value discovered above.  
    
    sprite(spritenum).member.width = imageWidth + 5
       
  setHeight
  
end

on setHeight me
  
  -- set text to default parameters and set up variable default values 
  
  sprite(spritenum).member.topspacing = 0
  sprite(spritenum).member.boxtype = #fixed
  sprite(spritenum).member.height = 100
  sprite(spritenum).member.alignment = #left
  
  maxx = 0
  sourceMem = sprite(spritenum).member
  TargetMem = 347 -- temporary member for processing the bitmap
  
  -- get parameters for new member
  
  sourceImage = member(sourceMem).image
  imageWidth = sourceImage.width
  imageHeight = sourceImage.height 
  sourceRect = sourceImage.rect
  destRect = sourceImage.rect
  
  -- turn that damn wordwrap off!
  
  sprite(spritenum).member.boxtype = #fixed
  sprite(spritenum).member.height = 100
  member(sourceMem).wordwrap= FALSE
  
  -- copyPixels bit to copy text member into a bitmap member   
  
  newImage = image(imageWidth,imageHeight,1,0)
  (newImage).copyPixels(sourceImage, destRect, sourceRect)
  member(targetMem).image = newImage
  member(targetMem).regPoint = point(0,0)
  workingImage = member(targetmem).image.duplicate()  
  workingImage = workingImage.trimWhiteSpace()
  imageHeight = workingImage.trimWhitespace().height
  
  -- set the original text box to the new value discovered above.  
  
  if Imageheight <= 0 then Imageheight = 10
  sourceMem.height = ImageHeight
  ImageHeight1 = ImageHeight
  
  -- now we need to work out Director's TOPSPACING param, which is stupid.
  
  imageWidth = sourcemem.width
  imageHeight = sourcemem.height
  newImage = image(imageWidth,imageHeight,1,0)
  (newImage).copyPixels(sourceImage, destRect, sourceRect)
  member(targetMem).image = newImage
  member(targetMem).regPoint = point(0,0)
  workingImage = member(targetmem).image.duplicate()  
  workingImage = workingImage.trimWhiteSpace()
  imageHeight = workingImage.trimwhitespace().height
  
  sourceMem.topspacing = ((imageheight1 - imageheight) - (imageheight1 -
imageheight) - (imageheight1 - imageheight))
  
end