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:06 MET