scripting challenge: Large/Smaller text size
Mark Smith
mark at maseurope.net
Sat Jul 2 09:08:32 EDT 2005
So this is the best I've come up with, on a 1.5Ghz mac powerbook.
on increaseTextSize inc
lock screen
put the rtfText of fld 1 into ttext
replace "{\fs" with " {\fs " in ttext
--add spaces to make sure tags and their values are separate words
set the textSize of fld 1 to the effective textSize of fld 1 + inc
put 0 into c
repeat
get wordOffset("{\fs",ttext,c)
if it > 0 then
add inc to word it+1+c of ttext
put it+1+c into c
else
exit repeat
end if
end repeat
replace " {\fs " with "{\fs" in ttext
-- remove previously added spaces
set the rtfText of fld 1 to ttext
end increaseTextSize
In a field with 20000 words, 2000 of which were of a different size
than the field as a whole, this took just under 6 seconds to increase
the size of all the words. Not too impressive compared to AppleWorks 6
which did it effectively instantaneously.
In a field with only enough text to more or less fill the screen, it
took a more usable 21 milliseconds.
Cheers,
Mark
On 2 Jul 2005, at 12:49, Mark Smith wrote:
> But as I just found, on a field with a real lot of text (a field with
> 437477 chars), this will be impractically slow....
>
>
> On 2 Jul 2005, at 12:41, Mark Smith wrote:
>
>> I think you should get the 'effective' textSize of char x in the
>> handler, since if the textSize is inherited from it's owner, which
>> maybe the field, the card, stack or whatever, it's own textSize will
>> be zero....
>>
>>
>> Cheers,
>>
>> Mark
>>
>> On 2 Jul 2005, at 11:09, MisterX wrote:
>>
>>> Richard,
>>>
>>> Have tried the html way with <font size=+2> by anychance?
>>>
>>> set the htmltext of fld "text" to "<font size+2>"&the htmltext of fld
>>> "text"&"</font>"
>>>
>>> Nope... that didn't work but it was worth trying ;)
>>>
>>> and so here's the taoo's script in draft form ;)
>>>
>>> (sorry, html is just so messy and there's no guarantee of there
>>> being a font
>>> size tag anyway... while the field's text does...
>>>
>>> This function is now added to the editNO2 palette - thanks for the
>>> ideas
>>> and a few more variants to come.
>>>
>>> -- inc is the increment in size (can be negative)
>>>
>>> on increasetextsize thisfield, inc
>>> put the length of fld thisfield into lengthtext
>>> repeat with x = 1 to lengthText
>>> get the textsize of char x of fld thisfield
>>> set the textsize of char x of fld thisfield to it + inc
>>> end repeat
>>> -- voila
>>> end increasetextsize
>>>
>>> the simpler the script, the easier it is to adapt for other
>>> functions... to
>>> other uses like changing colors, lineheight, grids, etc...
>>>
>>> cheers
>>> Xavier
>>>
>>>
>>>> -----Original Message-----
>>>> From: use-revolution-bounces at lists.runrev.com
>>>> [mailto:use-revolution-bounces at lists.runrev.com] On Behalf Of
>>>> Richard Gaskin
>>>> Sent: Saturday, July 02, 2005 09:17
>>>> To: How to use Revolution
>>>> Subject: scripting challenge: Large/Smaller text size
>>>>
>>>> Mr. Canyon and anyone else who enjoys an iterative
>>>> optimization exercise:
>>>>
>>>> A common feature in apps that display text are
>>>> "Larger"/"Smaller" text size options. It seems simple at
>>>> first glance, but in practice it's hard to come up with an
>>>> especially fast version, given the need to take into account
>>>> any variety of varying sizes in the source text.
>>>>
>>>> If any of you have a script for such a thing, I wonder if the
>>>> sort of group review process that was done with the clock
>>>> interface would lend itself to optimizing this?
>>>>
>>>> --
>>>> Richard Gaskin
>>>> Fourth World Media Corporation
>>>> ___________________________________________________________
>>>> Ambassador at FourthWorld.com http://www.FourthWorld.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
>>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>>
>> _______________________________________________
>> 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
>>
> _______________________________________________
> 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