Re: [ROOT] TGText::InsText() optimization

From: Valeriy Onuchin (Valeri.Onoutchine@cern.ch)
Date: Sat Sep 25 2004 - 11:06:55 MEST


 Hi, Maxim. sorry  .... tooo russian ....
all improvements are welcome.

I added what you sent to my development code.

Thank you. Valeriy
 

> Hi Maxim,
> just FYI, we are going to rewrite TGText et al. classes completly.
> New itnerface will allow syntax highliting, paragraths, embedding  other widgets 
> (e.g. root canvas), undo/redo capability ... hopefully html rendering.
> 
> Regards.  Valeriy
> 
> > Dear ROOT developers,
> > 
> > I suppose, invocation of LongestLine() from
> > Bool_t TGText::InsText(TGLongPosition pos, const char *buffer)
> > is not a optimal way to determine length of a longest line. Comparison 
> > with the length of the line to add is faster. If you agree, apply the 
> > patch attached. Just type from the root/gui source directory
> > 
> > patch -p1 < TGText.patch
> > 
> > -- 
> > Maxim Nikulin
> > 
> 
> 
> --------------------------------------------------------------------------------
> 
> 
> > Index: gui/inc/TGText.h
> > ===================================================================
> > RCS file: /user/cvs/root/gui/inc/TGText.h,v
> > retrieving revision 1.6
> > diff -a -u -r1.6 TGText.h
> > --- gui/inc/TGText.h 28 May 2003 11:55:31 -0000 1.6
> > +++ gui/inc/TGText.h 23 Sep 2004 08:37:22 -0000
> > @@ -98,7 +98,7 @@
> >     char    GetChar(TGLongPosition pos);
> >  
> >     Bool_t  DelText(TGLongPosition start, TGLongPosition end);
> > -   Bool_t  InsText(TGLongPosition pos, const char *buf);
> > +   Bool_t  InsText(TGLongPosition const& pos, const char *buf);
> >     Bool_t  InsText(TGLongPosition ins_pos, TGText *src, TGLongPosition start_src, TGLongPosition end_src);
> >     Bool_t  AddText(TGText *text);
> >  
> > Index: gui/src/TGText.cxx
> > ===================================================================
> > RCS file: /user/cvs/root/gui/src/TGText.cxx,v
> > retrieving revision 1.14
> > diff -a -u -r1.14 TGText.cxx
> > --- gui/src/TGText.cxx 24 May 2004 11:45:08 -0000 1.14
> > +++ gui/src/TGText.cxx 23 Sep 2004 08:37:23 -0000
> > @@ -738,7 +738,7 @@
> >  }
> >  
> >  //______________________________________________________________________________
> > -Bool_t TGText::InsText(TGLongPosition pos, const char *buffer)
> > +Bool_t TGText::InsText(TGLongPosition const& pos, const char *buffer)
> >  {
> >     // Insert single line at specified position. Return false in case position
> >     // is out of bounds.
> > @@ -751,11 +751,16 @@
> >        fCurrent->fNext = new TGTextLine(buffer);
> >        fCurrent->fNext->fPrev = fCurrent;
> >        fRowCount++;
> > +      if ((Long_t)fCurrent->fNext->fLength > fColCount) {
> > +         fColCount = fCurrent->fNext->fLength;
> > +      }
> >     } else {
> >        SetCurrentRow(pos.fY);
> >        fCurrent->InsText(pos.fX, buffer);
> > +      if ((Long_t)fCurrent->fLength > fColCount) {
> > +         fColCount = fCurrent->fLength;
> > +      }
> >     }
> > -   LongestLine();
> >     fIsSaved = kFALSE;
> >     return kTRUE;
> >  }
> > 
> 



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:09 MET