Wow -- it works! A little bit of trouble with the last line of paragraphs, but very impressive!
"Brian Yennie" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > This uses a naive algorithm and has limitations, but it's a fun > experiment. > Create a scrolling text field and a 1x1 empty image object. > > Paste this into the field script and type away. > > on keyDown c > lock screen > do "put c into"&& (the selectedChunk) > fullJustify (the id of me), (the id of image "spacer") > unlock screen > end keyDown > > on fullJustify fldID, imageID > local i, targetWidth > > put fullFieldLineWidth(fldID) into targetWidth > > put 1 into i > > lock screen > replace numToChar(0) with empty in fld id fldID > put the formattedText of fld id fldID into fld id fldID > > repeat for each line l in fld id fldID > put (targetWidth - the formattedWidth of line i of fld id fldID) into > tLineGaps[i] > add 1 to i > end repeat > > put 1 into i > repeat for each line l in fld id fldID > put padLine(l, tLineGaps[i], numToChar(0)) into line i of fld id > fldID > add 1 to i > end repeat > > put 1 into i > repeat for each char c in fld id fldID > if (char i of fld 1 is numToChar(0)) then > set the imageSource of char i of fld id fldID to imageID > end if > add 1 to i > end repeat > unlock screen > > end fullJustify > > function fullFieldLineWidth fldID > put (the width of fld id fldID) into targetWidth > subtract (2* the borderWidth of fld id fldID) from targetWidth > subtract (item 1 of the margins of fld id fldID) from targetWidth > get (item 3 of the margins of fld id fldID) > if (it is empty) then subtract (item 1 of the margins of fld id fldID) > from targetWidth > else subtract (item 3 of the margins of fld id fldID) from targetWidth > if (the vScrollbar of fld id fldID) then subtract the scrollbarWidth of > fld id fldID from targetWidth > return targetWidth > end fullFieldLineWidth > > function padLine l, pixels > put empty into tmp1 > put 0 into spaceCount > repeat for each char c in l > if (c is space) then add 1 to spaceCount > end repeat > if (spaceCount = 0) then return l > put (pixels div spaceCount) into spacePadding > put (pixels mod spaceCount) into leftoverPads > repeat for each char c in l > if (c is space) then > repeat spacePadding > put numToChar(0) after tmp1 > end repeat > end if > put c after tmp1 > end repeat > repeat for each char c in tmp1 > if (c is space) AND (leftoverPads > 0) then > put numToChar(0) after tmp2 > subtract 1 from leftoverPads > end if > put c after tmp2 > end repeat > > return tmp2 > end padLine > > > > > > _______________________________________________ > use-revolution mailing list > [email protected] > Please visit this url to subscribe, unsubscribe and manage your > subscription preferences: > http://lists.runrev.com/mailman/listinfo/use-revolution > _______________________________________________ use-revolution mailing list [email protected] Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-revolution
