Sorry for the late post, I'm trying to catch up. I noticed that no-one posted an actual solution so here is mine.

Don't hold your breath on getting these functions added to RR. I have been asking for this type of improvement to add simple text handling routines since RR 1.1 which would allow the generation of more text processing / reports applications.

This is a routine that I use to generate a tabstop that will center a short line or title for each line that contains a char of my choosing in a card field called "Other Data".

Sorry I haven't completely commented it.

Merry Christmas

on doTabCenter --Align Center Command (Centers a short line or title on the field)
  put the lockscreen into tLockScreen
  lock screen
  put empty into fld "Other Data"
  put the tabstops of cd fld "Other Data" into tTabStops

repeat while cd fld "Other Data" contains "»" -- This is the char I chose to indicate which lines to center put the cTabCenterLine of cd fld "Other Data" into tTabCenterLine --Tab location to center line / self generates put the cTabCenterLineText of cd fld "Other Data" into tTabCenterLineText --Tab location to center line / self generates

    put the item 1 of the loc of cd fld "Other Data" into tCenterTab
    put lineoffset ("»",cd fld "Other Data") into tLn
    put line tLn of cd fld "Other Data" into tLine

    put the HTMLtext of line tLn of cd fld "Other Data" into tmpLine

    put tmpLine into line tLn of tTabCenterLineText

    replace "	" with empty in tmpLine
    replace "  " with empty in tmpLine
    set the htmltext of line tLn of cd fld "Other Data" to tmpLine

delete char offset ("»",line tLn of cd fld "Other Data") of line tLn of cd fld "Other Data"
    put line tLn of cd fld "Other Data"into tText

put the formattedWidth of line tLn of cd fld "Other Data" into tWidthOfTitle

    select word 1 of line tLn of cd fld "Other Data"
    put item 2 of the selectedLoc into tLocWordA

    put space & "»" after line tLn of cd fld "Other Data"

    repeat
      put offset (tText, line tLn of cd fld "Other Data") into tLocChar2
      put " " before char tLocChar2 of line tLn of cd fld "Other Data"
      put offset ("»", line tLn of cd fld "Other Data") into tLocChar3
      select char (tLocChar3) of line tLn of cd fld "Other Data"
      put item 2 of the selectedLoc into tLocWordB

      if tLocWordA <> tLocWordB then exit repeat

    end repeat

    delete char (tLocChar3) of line tLn of cd fld "Other Data"
    subtract 1 from tLocChar3
put the formattedWidth of char 1 to (tLocChar3) of line tLn of cd fld "Other Data" into tWidthOfLine

put number of chars of line tLn of cd fld "Other Data" into tLocChar3

    delete char (tLocChar3) of line tLn of cd fld "Other Data"

delete char 1 to ( offset (tText,line tLn of cd fld "Other Data" ) - 1) of line tLn of cd fld "Other Data"

    put round (tWidthOfLine / 2) into tCenterTab1
    put  round (tWidthOfTitle / 2) into tTabWidth1

    subtract tTabWidth1 from tCenterTab1

    put tCenterTab1 into line tLn of tTabCenterLine

  end repeat

  repeat for each line tCenterLine in tTabCenterLine
    if tCenterLine is empty then next repeat
    put true into tAddStop

repeat with i = 1 to number of items of tTabStops -- i for each item tItem in tTabStops
      if item i of tTabStops = tCenterTab1 then
        put false into tAddStop
        exit repeat
      end if
    end repeat

    if tAddStop then
      if tTabStops is empty then put tCenterTab1 after tTabStops
       else put "," & tCenterTab1 after tTabStops
    end if
    sort items of tTabStops ascending numeric

  end repeat

set the cTabCenterLine of cd fld "Other Data" to tTabCenterLine --Tab location to center line set the cTabCenterLineText of cd fld "Other Data" to tTabCenterLineText
  set the tabstops of cd fld "Other Data" to tTabStops


  repeat for each line tCenterTabLoc in tTabCenterLine
    put lineoffset ("&raquo;",tTabCenterLineText) into tLn
    if tLn = 0 then exit repeat
    put line tLn of tTabCenterLine into tCenterTabLoc
    put empty into line tLn of tTabCenterLineText

    if tCenterTabLoc is empty then next repeat
    repeat with i = 1 to number of items of tTabStops
      put tab before line tLn of cd fld "Other Data"
--put the formattedWidth char 1 to ( offset (tText,line tLn of cd fld "Other Data" ) - 1) of line tLn of cd fld "Other Data" into tTextCenterAlign
      if item i of tTabStops >= tCenterTabLoc then exit repeat
    end repeat
  end repeat

  set the lockscreen to tLockScreen

end doTabCenter

I also have a routine that will indent a wrapped line into an indented paragraph similar to the "increase indent" that I could post if you are interested.

Dave Calkins





On Dec 16, 2005, at 2:26 AM, [EMAIL PROTECTED] wrote:

From: Sivakatirswami <[EMAIL PROTECTED]>
Subject: "Typesetting" functions
To: use-revolution@lists.runrev.com
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed

As one who is spoiled by options for very precise control over type
all these years (Quark and now InDesign) the challenges of making
text look good in a Revolution field seem daunting.

I was wondering if any one had "rolled their own" typesetting
functions. I would rather not have to create multiple flds and then
group these with some being centered and others align left... so I
was thinking that one could, for example, center type but getting
some measurement of the  len(the selection) and then inserting
something like

(an algorithm that needs real code:)

the total length of the line -(the length of type to be centered)/2 =
(some  number of spaces to insert in front of the text)

I may be dreaming about cheddar on Mars, because I don't see from the
docs any syntax that can provide a"real" correlation between len
(fooString) and pixelwidth(fooString)  that can be translated back
into a tab width or number of spaces...as the pixel width of
fooString will vary by the charWidths of the chars in the string and
again, this has no correlation to the width of a space... and tabs
are out anyway, since you cannot set tabs on a per line basis. (I
hope this is on the feature list as a bare minimum upgrade to text
handling in the next version of rev) etc. etc. round in circles.

a typical thing one would like to be able to do, besides centering
type on a line in a field... would be formatting like this:

someTextLeftAligned [tab or string of spaces] SomeTextRightAligned

I'm hoping some of you may have already "been there done that and yes
it can  be done... here's how"

My actual context is rolling credits in a single field with centered
headers for each section followed by

Correspondents

staff  country

Photographers:

photographer country

etc.

now I can center all this and it looks fairly decent if you give up
aspirations for any more control and think "well the do it like that
in the movies and if you don't care about things lining up its just
fine..."  But this may not  fly when it goes up for review... or I
will have to say "sorry, this is all we get in Rev. we have to live
with it like this for now...

TIA

Sivakatirswami

Dave Calkins

_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to