net@tub.UUCP (06/16/87)
I have a couple of questions about the X Window System. I'm new to X and to this newsgroup/list, so maybe the answers are obvious or the questions have already been asked before. I'm using X version 10 on an Integrated Solutions Optimum V WorkStation. 1) Is there a way to define a temporary clipping rectangle for a window? If not, why? When a client receives an expose-region event, the XExposeEvent structure gives the coordinates of the region of the window that must be repainted by the client. However, clients typically are kept simple so they can repaint only entire windows, not arbitrary rectangles within a window. This causes unnecessary activity on the screen when, for instance, only a small part of a large window has been exposed. To avoid unnecessary repainting, the client must clip all drawing primitives with respect to the rectangle that has become visible. This can be complicated, and I don't see a reason why the clipping should not be performed by the server. It would be useful to have "XSetTemporaryClipping" and "XRemoveTemporaryClipping" requests that can be used to define (and remove) a rectangle within a window to which all further drawing requests are clipped. One would set a temporary clipping on receipt of an expose-region event, then invoke the function to repaint the entire window, and finally remove the clipping. I can't find something like this in the Xlib manual. Is there a way to obtain this functionality using existing X requests? 2) Is there a way to purge the Xlib request queue? If not, why? There is a function to flush the output request queue, XFlush(), but I can't find a way to discard the contents of the request queue. Imagine the following typical scenario: A client submits several drawing requests, for instance, to draw a curve in a window. The requests are buffered in the Xlib until the next call to XFlush(), XPending(), XNextEvent(), etc. The drawing requests are based on certain assumptions about the size of the window, e.g. the curve is scaled so that if fits nicely into the window. Now, the window gets resized. Before this event is noticed by the client, the output queue is flushed (typically by a call to XPending()). The problem is that the requests that had been waiting in the queue are now executed in the wrong context, because the window has changed its size in the meantime. The coordinates that have been supplied together with these requests may no longer be valid with the new window size (e.g. the curve should be rescaled); this can produce ugly glitches on the screen. Obviously, in addition to XFlush() one needs something like "XDiscard()" or "XPurge()" that can be used to throw away the current contents of the output request queue. However, there remains the problem that some requests may have already been sent out by the Xlib, but have not yet been received by the server (for instance, they may sit somewhere in the connection to the server). 3) When a rubber box is displayed on the screen by XCreate(), the size of the box is the minimum window size (determined by the "minwidth" and "minheight" arguments to XCreate()). This is counter-intuitive. Instead, a rubber box of the default size should be shown. It still could be reduced to the minimum size when the middle button is used for sizing the window. Is showing the minimum size a feature? If so, how can I tell XCreate() to rubber band (and finally create) a box of the default size? If you want to comment publicly, please send me a copy of your response by E-Mail, too, because the news feed to developing countries like Germany is very unreliable. -- Regards, Oliver Laumann, Technical University of Berlin, Germany. ...!pyramid!tub!net or net@TUB.BITNET
net@tub.BITNET.UUCP (06/16/87)
I have a couple of questions about the X Window System. I'm new to X and to this newsgroup/list, so maybe the answers are obvious or the questions have already been asked before. I'm using X version 10 on an Integrated Solutions Optimum V WorkStation. 1) Is there a way to define a temporary clipping rectangle for a window? If not, why? When a client receives an expose-region event, the XExposeEvent structure gives the coordinates of the region of the window that must be repainted by the client. However, clients typically are kept simple so they can repaint only entire windows, not arbitrary rectangles within a window. This causes unnecessary activity on the screen when, for instance, only a small part of a large window has been exposed. To avoid unnecessary repainting, the client must clip all drawing primitives with respect to the rectangle that has become visible. This can be complicated, and I don't see a reason why the clipping should not be performed by the server. It would be useful to have "XSetTemporaryClipping" and "XRemoveTemporaryClipping" requests that can be used to define (and remove) a rectangle within a window to which all further drawing requests are clipped. One would set a temporary clipping on receipt of an expose-region event, then invoke the function to repaint the entire window, and finally remove the clipping. I can't find something like this in the Xlib manual. Is there a way to obtain this functionality using existing X requests? 2) Is there a way to purge the Xlib request queue? If not, why? There is a function to flush the output request queue, XFlush(), but I can't find a way to discard the contents of the request queue. Imagine the following typical scenario: A client submits several drawing requests, for instance, to draw a curve in a window. The requests are buffered in the Xlib until the next call to XFlush(), XPending(), XNextEvent(), etc. The drawing requests are based on certain assumptions about the size of the window, e.g. the curve is scaled so that if fits nicely into the window. Now, the window gets resized. Before this event is noticed by the client, the output queue is flushed (typically by a call to XPending()). The problem is that the requests that had been waiting in the queue are now executed in the wrong context, because the window has changed its size in the meantime. The coordinates that have been supplied together with these requests may no longer be valid with the new window size (e.g. the curve should be rescaled); this can produce ugly glitches on the screen. Obviously, in addition to XFlush() one needs something like "XDiscard()" or "XPurge()" that can be used to throw away the current contents of the output request queue. However, there remains the problem that some requests may have already been sent out by the Xlib, but have not yet been received by the server (for instance, they may sit somewhere in the connection to the server). 3) When a rubber box is displayed on the screen by XCreate(), the size of the box is the minimum window size (determined by the "minwidth" and "minheight" arguments to XCreate()). This is counter-intuitive. Instead, a rubber box of the default size should be shown. It still could be reduced to the minimum size when the middle button is used for sizing the window. Is showing the minimum size a feature? If so, how can I tell XCreate() to rubber band (and finally create) a box of the default size? If you want to comment publicly, please send me a copy of your response by E-Mail, too, because the news feed to developing countries like Germany is very unreliable. -- Regards, Oliver Laumann, Technical University of Berlin, Germany. ...!pyramid!tub!net or net@TUB.BITNET
"E_Borovsky.ESCP8"@XEROX.COM.UUCP (06/17/87)
Gentlemen! I am a freshman to the world of X windows. I would like to have some introduction material like an overview or a tutorial. I need to know what X window system is all about and the status of the different versions. Thanks For Your Help //Emanuel
ken@hpcvlo.HP.COM (Ken Bronstein) (06/26/87)
One way to do clipping rectangles in Xv10 is to create a child window of your application window that is a TRANSPARENT WINDOW. Then you can move the window around to perform clipping as you write to it. Please do NOT perform input on the transparent window as you would have trouble moving that to Xv11. For transparent windows in v11 are GOING AWAY in favor of real clipping rectangles, somebody who really knows v11 help me out.) Not a great story but it works. -Ken Bronstein hp-pcd!ken
sanjeev@psuvax1.psuvax1.cs.psu.edu (Sanjeev Y. Dharap) (07/25/89)
I am programming in Xlib. I am writing an application and I need the application window to come up at a program specified position. I tried using PPosition|PSize but that does not work. Can someone tell me how to achieve such a thing? What does one use NoExpose events for? Thanx in advance for the help. Sanjeev. sanjeev@psuvax1.cs.psu.edu Sanjeev Dharap Dept. of Computer Science, Penn State University, University Park, PA 16802.
chuckles@SNE42E.ORL.MMC.COM (chuck strickland) (03/07/90)
thanks for help on earlier request. All functions are now operable. xmh interfaces to the Rand MH system. What is the RAND MH. Is available public domain. If not is there a mail handler for the sendmail. I did not see one in comp.sources.x thanks chuck strickland