character to justify text -- spacer graphic implementation

-= JB =- sundown at nwrain.net
Wed Jun 27 01:50:10 EDT 2007


I haven't tried this yet.  I will later tonight.  But when I was
working with hypercard I bought some cool code from Ro
Nagey at Royal Software written by a Brian Yennie.  Am
I correct in thinking this is the same Brian Yennie.

Thank you all,
-=>JB<=-

===========================================
On Jun 26, 2007, at 10:35 PM, J. Landman Gay wrote:

> Wow. While everybody else is yakking, you write a script. :) This  
> is very cool and there's not even a noticable lag.
>
> It would need a custom "copy" though to remove the spacers. Maybe:
>
> on commandKeyDown which -- copykey
>   if which <> "c" then pass commandKeyDown
>   put the selectedText into tData
>   replace numToChar(0) with empty in tData
>   set the clipboardData["text"] to tData
> end commandKeyDown -- copykey
>
> Ideally the handler should use "copyKey" but I couldn't get it to  
> trigger.
>
>
> Brian Yennie wrote:
>
>> 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
>> use-revolution at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your  
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-revolution
>>
>
>
> -- 
> Jacqueline Landman Gay         |     jacque at hyperactivesw.com
> HyperActive Software           |     http://www.hyperactivesw.com
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your  
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution
>
>




More information about the use-livecode mailing list