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