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