Hi, sorry, I don't know what happened. I hope this time they are complete. Thomas. On Mon, 3 May 2004, Valeriy Onuchin wrote: > Hi Thomas, > two files in attachment are empty. > > Regards. Valeriy > > ----- Original Message ----- > From: "Thomas Bretz" <Thomas_Bretz@ph.tum.de> > To: <roottalk@pcroot.cern.ch> > Sent: Monday, May 03, 2004 6:45 PM > Subject: [ROOT] gVirtualX->PutImage and TCanvas > > > > Hi, > > > > with the (very simple) attached class I try to display a gray scaled > > bitmap in a canvas. It doesn't work. Can somebody explain me, what I'm > > doing wrong? > > > > (I'm developing this class, because I need a really fast access to the > > screen - 25fps - which I think I won't get with the big overgead of > > TASImage) > > > > Thanks in advance, > > Thomas. > > > > > > > -------------------------------------------------------------------------------- > > > > void test() > > { > > TCanvas *c=new TCanvas; > > > > MImage2 *i = new MImage2(100, 100); > > > > byte buf[100*100]; > > > > for (int j=0; j<100*100; j++) > > buf[j]=j; > > > > i->DrawImg(buf); > > i->Draw(); > > } > > > ----- Würden Sie Windows 95 die Kontrolle eines AKWs überlassen? Hiroshima '45...! Tschernobyl '86...!! Windows 95...!!! Unix ist benutzerfreundlich - es ist nur etwas wählerisch..." (Walter Misar) Was sagt ein arbeitsloser Physiker zu einem Physiker mit Arbeit? - "Eine Currywurst mit Pommes bitte!" #include "MImage2.h" #include <iostream> #include <TGX11.h> ClassImp(MImage2); using namespace std; MImage2::MImage2(UInt_t w, UInt_t h) : fId(gClient->GetRoot()->GetId()), fWidth(w), fHeight(h) { // p = pointer to MainFrame (not owner) // w = width of frame // h = width of frame fDefGC = gVirtualX->CreateGC(fId, 0); fImage = (XImage*)gVirtualX->CreateImage(fWidth, fHeight); cout << "Detected Color Depth: " << gVirtualX->GetDepth() << endl; if (gVirtualX->GetDepth()!=24) cout << "WARNING this class only works with 24bit color depth!" << endl; } MImage2::~MImage2() { gVirtualX->DeleteGC(fDefGC); gVirtualX->DeleteImage((Drawable_t)fImage); } void MImage2::Paint(Option_t *o) { gVirtualX->PutImage(fId, fDefGC, (Drawable_t)fImage, 0, 0, 0, 0, fWidth, fHeight); } void MImage2::DrawImg24(char *d, char *s, char *e) { // d=destination, s=source, e=end // rrrrrrrr gggggggg bbbbbbbb aaaaaaaa // while (s<e) { *d++ = *s; *d++ = *s; *d++ = *s++; d++; } } void MImage2::DrawImg(const byte *buffer) { DrawImg24(fImage->data, (char*)buffer, (char*)(buffer+fWidth*fHeight)); } #ifndef COSY_MImage2 #define COSY_MImage2 #ifndef ROOT_TGFrame #include <TGFrame.h> #endif #ifndef ROOT_TGX11 #include <TGX11.h> #endif typedef unsigned char byte; class MImage2 : public TObject { XImage *fImage; GContext_t fDefGC; Int_t fId; UInt_t fWidth; UInt_t fHeight; void DrawImg24(char *d, char *s, char *e); public: MImage2(UInt_t w, UInt_t h); ~MImage2(); void Paint(Option_t *o); void DrawImg(const byte *buffer); ClassDef(MImage2, 0) }; #endif // MGIMAGE_H
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:07 MET