Hi Leon, Could you send me a short script illustrating the case that does not work? Do not try to use the formats >1000, like 100111,etc. Rene Brun On Wed, 20 Feb 2002, Leon Mualem wrote: > Hi, > I seem to be able to get this error in a CVS version dated 2002/02/14. > I discovered this while investigating a different problem, which I will > describe here. > > I have two very similar versions of a macro, and one make reasonable > landscape US letter output, while the other doesn't. The problem would > manifest itself by the picture being sized too large in the x direction, > or the short side of a landscape page. While investigating why, I > discovered that the TPostScript constructor has a couple of features > which may be inconvenient, and I think easily corrected. > > The first problem is that there are tests on the variable "fType", for > selecting landscape, portrait, or eps. The problem is that the actual > selection of these types are only in the first digit, which is > calculated as fMode, but then not used in the tests. This make a > problem if you want to select a paper type of US letter, by changing > your fType from the stated types of 111,112,or 113, to 100111,100112, > and 100113. The tests for fType will fail, as they are like fType==112, > while a test like fMode==2 is what is required. > > The second, and probably more complicated issue is the coupling to gPad. > This is the root of the problem I had. There may be issues that I > don't know about not being a postscript expert, or even novice, but I > did take some time to try to understand what was going on. If you do > not have a current gPad, you effectively choose a layout defined by > gStyle->GetPaperSize(fXsize,fYsize), but apparently get the segfault > described below, for reasons that are not obvious to me. It seems the > only reason for requiring this gPad test is so that you can get the > scale of the drawing you have done, or are going to do in this gPad > correct. However, I don't think this quite works as intended, since it > only gets the scaling correct for the current Canvas, if you open > another, it will rescale the drawings to the dimensions of the pad you > have open at the time. (if I understand correctly.) > > It seems like a sensible thing to do, is to have it first grab the > dimensions of the current paper size, and then, if there is a gPad, > reset to the size of the current gPad. Something along the lines of: > > gStyle->GetPaperSize(fXsize,fYsize); > Float_t ww=fXsize; > Float_t wh=fYsize; > if(gPad) { > ww = gPad->GetWw(); > wh = gPad->GetWh(); > } > > This would then scale a drawing to the page, if there was no gPad > defined, and if one was defined, it would keep the aspect ratio of the > current pad. It probably doesn't handle the .eps case well, but I > haven't been bitten by this yet, so there may be an elegant solution to > that, or a better solution than I proposed here. The experts are free > to do as they wish, of course. > > Leon > > > Hi Thomas, > > > > This happens when you create a TPostScript object before creating a TCanvas. > > Simply create a Tcanvas before this statement. > > The fix is already in the CVS source. > > > > Rene Brun > > > > Thomas Kluge wrote: > >> > Hi, > >> > since ROOT 3.02/06 I suffer from this: > >> > --------------------- > >> [h1aac02] ~ $ root > >> ******************************************* > >> * * > >> * W E L C O M E to R O O T * > >> * * > >> * Version 3.02/06 14 December 2001 * > >> * * > >> * You are welcome to visit our Web site * > >> * http://root.cern.ch * > >> * * > >> ******************************************* > >> > FreeType Engine v1.x used to render TrueType fonts. > >> Compiled for linuxsuse6. > >> > CINT/ROOT C/C++ Interpreter version 5.15.21, Dec 8 2001 > >> Type ? for help. Commands must be C++ statements. > >> Enclose multiple statements between { }. > >> root [0] TPostScript *ps = new TPostScript("test.ps"); > >> > *** Break *** segmentation violation > >> Root > > >> --------------------- > >> > What's wrong? > >> > Best regards, > >> > Thomas > >> > > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:42 MET