Re: TPaveText::AddText() behavior: Unix vs Win32

From: Rene Brun (Rene.Brun@cern.ch)
Date: Mon Feb 08 1999 - 08:54:12 MET


Hi Scott,
As already pointed out by Valery, the solution to your problem is to use
TPaveText::ReadFile. Also note that in version 2.20, I added several
features in the TPaveText context menu to
  - add one line of text anywhere inside the TPaveText
  - edit one line
  - delete one line
  - change attributes (SetAllWith)
These functions are still quite primitive. I am waiting for the new GUI
to be available under NT before using a better TPaveText editor.

Rene Brun



S.P. Wakely wrote:
> 
> >Scott,
> >You will see many differences with the "\n" characters in Root text
> >strings.
> >
> > - With Postscript the backslash will give a blank
> > - On X11 with the new TrueTypeFonts the backslash is ignored
> > - on X11 with the old fonts a backslash generates a new line on the
> >screen
> > - on NT, a backslash generates a blank
> >
> >In TText, TPaveLabels, TPaveText, we are not planning to support the
> >"\n"
> >action as being a new line.
> >
> >Rene Brun
> 
> Hi,
> 
> I suspected it might be related to the different output engines.
> 
> My data objects generate multiline debug reports which I like to be able to
> dump to stdout or to a Pavetext (the reports are just (char*)s).  So, if any
> are interested, the following dumb little kludge will break strings on '\n'
> characters and call AddText multiple times to get new lines without having
> to delve into the mysteries of the display systems.  Seems to work OK for
> me.
> 
> Int_t TPaveText::AddLines(const Text_t *inbuf)
> {
> // Adds single or multiple lines to this PaveText, breaking on '\n'
> characters
> // returns the number of lines printed
> //
> 
>   Int_t insize = strlen(inbuf);
>   Int_t cnt = 0;
>   Int_t linecount = 1;
> 
>    const Int_t linesize = 255;
>   Text_t outline[linesize];
> 
>   for(Int_t n=0;n<insize;n++){
>        if(inbuf[n] != '\n'){
>          sprintf((outline + cnt++),"%c",inbuf[n]);
>          if(cnt == linesize){    //break after linesize characters
>         linecount++;
>          cnt = 0;
>         AddText(outline);
>               sprintf(outline,"");
>            }
>     } else {                //break on newline character
>       linecount++;
>         cnt = 0;
>            pt->AddText(outline);
>            sprintf(outline,"");
>      }
>   }
>   AddText(outline);           //print what is left in outline
>   return linecount;
> }



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:29 MET