Re: [ROOT] TGQt

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Thu Nov 08 2001 - 20:57:21 MET


Hi Yuriy,

    very encouraging begin of a TGQt. Would be good if you could follow
up with Valery the points he mentions.

Cheers, Fons.


Valeri Fine wrote:
> 
> Hello Yuri,
> 
> This is OK from the first glance.
> 
>   However there are 4  main questions to be solved first:
> 
>    1. How this fits multithreaded applications (otherwise one meets dead-end) (see last week discussion)
>    2. How Qt event loop will "collaborate" with ROOT event loop.
>    3. To eliminate the peformace penalty it would be good to introduce some sort of method
>        like:
>              TVirtualX->PaintBegin(int wid)
>              TVirtualX->PaintEnd(int wid)
> 
>    4. One should change the double-buffered  ROOT schema
>       The small correction may simplify the TVirtualX implementation
>       (I've sent my proposal to Fons). to emanate and the logice it entails.
> 
>   struct SVirtualWnd
>   {
>     QPaintDevice *main;
>     QPaintDevice *buffer;
>     bool          isWidget;
>   };
> 
>   TVirtrualX class should do nothing with the "double buffer".
>    It is a job of TCanvasImp class. TVirtualX should work with
>    ONE QPaintDevice.
> 
> By the way AddWindow should return (int)(QPaintDevice *)
> This eliminate your TGQtWndMan.
> 
> For example one will be able (it is how the current Win32 impl works)
> 
> void  TGQt::CopyPixmap(int wid, int xpos, int ypos)
> {
>   assert(((QPaintDevice *)wid)->devType() == QInternal::Pixmap);
>   if (fSelectedWindow && (int(fSelectedWindow) != wid) )
>   {
>     QRect r = GetQRect(*fSelectedWindow);
>     r.setX(xpos);
>     r.setY(ypos);
>     fQPainter.drawPixmap(r,*(QPixmap *)wid);
>   }
> }
> 
>  There are some othe issues. For example one needs to be able to use RGB with
>   no color index involved. This this ancient schema ROOT inherited from that age
>   when we had  8 colors terminals. Eliminating color index will simplify things
>   tremendously  ROOT wide.
>  Just have a look at http://root.cern.ch/root/htmldoc/src/TColor.cxx.html#TColor:SetRGB
>  to understand how slow and complex the current schema is.
> 
>  For example if TColor::GetNumber will return the packed color index (8 bit)
> + r ( 8bit) + g (8bit) + b(8bit) = 32 bits, then will be no need for your class TGQtColorMan
>  with    typedef QMap<int, QColor> ColorMap; If r = g= b=0, then thing works as before
> for the sake of the backward compatibility. (for this case Qcolor RootColor[256] or
> even better vector<QColor> will be just fine (and faster)
> 
>   As it was proved many times it is not difficult to learn how to draw
>   the filled rectangular on the screen. The question how to do this drawing
>   reasonable fast and useful.
> 
>   This means one has to wait ROOT team word.
> 
>   If you find my thoughts useful and you do have time to work on,
>   send me mail.
> 
>   Cheers,
>                              Valeri
> -----
> Dr.Valeri Fine
> STAR/US Atlas                                    E-mail: fine@bnl.gov
> Brookhaven National Lab                   Phone: +1 631 344 7806
> Upton, NY 11973-5000                       FAX:     +1 631 344 4206
> USA
> 
> ----- Original Message -----
> From: "Yuriy" <yuriypro@mail.ru>
> To: <roottalk@pcroot.cern.ch>
> Sent: Thursday, November 08, 2001 12:38 PM
> Subject: [ROOT] TGQt
> 
> > Dear ROOTer, here is the first draft of the TGQt class (Qt ROOT
> > interface). My approach differs to the Go4 way. I have substituted
> > gVirtualX to Qt implemented drawing class. So it seems to work on
> > different platforms. I tested Linux+Qt3.0 and Windows+Qt2.3, and it
> > works! There are Makefile for Linux and .dsw for VStudio, so you can
> > compile it on both platforms.
> >
> > If somebody will interested on my future Qt ROOT studies just write
> > me a letter.
> >
> > Best regards,
> > Yuriy.
> >
> >

-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7679480



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:08 MET