afzal@uni2a.unige.ch (11/06/90)
Newsgroups: comp.windows.x Subject: XFillRectangle with Tile Vs Manual Tiling Expires: References: Sender: Reply-To: afzal@cuisun.unige.ch () Followup-To: Organization: University of Geneva, Switzerland Keywords: (not sure if this got posted) Hi, I have a question regarding tiling rectangular areas of a drawable. In the course of writing a widget I have been considering the question of tiling a rectangular area of a drawable. I have tried the obvious way of doing this, i.e., setting the tile attribute of a gc, the ts_x_origin, ts_y_origin, and the fill style to FillTiled, and the not-so-obvious way, i.e., doing it yourself. In both cases I was using a Pixmap to tile a drawable. I found (much to my surprise) that the not-so-obvious way was MUCH faster (one my Sparcstation 1) with an area about twelve times the area of the tile. This seems bizzare to me, after all the obvious way requires one trip to the server, while the not-so-obvious way requires many trips. Has anyone else noticed such behaviour, or have I most likely overlooked something? The code is in a widget I am writing, so I do not include it here, however, I will go off now and try and reproduce this in straight Xlib calls. In the meantime, if anyone has advice, flames (:-), etc., I'll be happy to receive them, and will post a summary to the net if there is interest -Afzal Ballim (later....) I've written two raw Xlib programs to demonstrate the problem. (Compile with -lX11). +------------------------------cut here------------------------------+ #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: prob.c prob2.c # Wrapped by afzal@issun3 on Tue Nov 6 12:19:25 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'prob.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'prob.c'\" else echo shar: Extracting \"'prob.c'\" \(13428 characters\) sed "s/^X//" >'prob.c' <<'END_OF_FILE' X X#include <stdio.h> X#include <X11/Xlib.h> X#include <X11/Xutil.h> X Xstatic char pixbits[] = { X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xf4, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x00, 0xa0, 0xf6, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x3f, 0x00, 0x20, 0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x01, 0x00, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0xba, 0x4a, 0x08, X 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x02, 0x00, X 0x54, 0x25, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0x1f, 0x20, 0xa2, 0xd2, 0x02, 0x0a, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x88, 0x48, 0x00, 0x00, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0x02, 0x02, 0x00, X 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x92, X 0x10, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0x00, 0x20, 0xa4, 0x02, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x01, 0x88, 0x2a, 0x14, 0x80, 0x08, 0x00, 0x80, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x01, 0x5a, 0x04, 0x50, 0x82, X 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x50, 0xe0, 0x52, X 0x00, 0xa8, 0x08, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x13, X 0x00, 0x42, 0x05, 0x43, 0xb8, 0x24, 0x81, 0x00, 0xfc, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x03, 0x00, 0x48, 0xf1, 0x06, 0x05, 0x41, 0x0a, 0x00, 0xf8, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d, 0x09, 0x21, 0x5c, 0x01, 0x50, 0x2a, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0xc4, X 0x40, 0x85, 0x94, 0x0a, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, X 0x40, 0x04, 0x50, 0x91, 0x24, 0x14, 0x00, 0x08, 0xe0, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0x01, 0x04, 0x01, 0x10, 0x60, 0x09, 0xa1, 0x48, 0x00, 0xc0, X 0xff, 0xff, 0xff, 0xff, 0xdf, 0x00, 0x20, 0x10, 0x02, 0xa6, 0x42, 0x08, X 0x00, 0x88, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x09, 0x04, 0x40, X 0xae, 0x14, 0x20, 0x01, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x20, X 0x40, 0x88, 0x00, 0x57, 0x41, 0x15, 0x20, 0xa8, 0x11, 0xff, 0xff, 0xff, X 0xff, 0x37, 0x08, 0x20, 0x35, 0x10, 0x57, 0x2d, 0x52, 0x00, 0x09, 0x05, X 0xff, 0xff, 0xff, 0xff, 0x37, 0x40, 0xa2, 0x06, 0x44, 0xde, 0x4b, 0x15, X 0x00, 0x50, 0x01, 0xfe, 0xff, 0xff, 0xff, 0x3b, 0x02, 0xa0, 0xa5, 0x20, X 0xf4, 0xaa, 0x5a, 0x40, 0x04, 0x15, 0xfc, 0xff, 0xff, 0xff, 0x1b, 0x28, X 0x0d, 0x4a, 0x52, 0xed, 0xa8, 0x38, 0x04, 0x50, 0x25, 0xfc, 0xff, 0xff, X 0xff, 0x0d, 0x02, 0xae, 0xc3, 0x50, 0xea, 0xea, 0xe5, 0x00, 0x82, 0x0d, X 0xfc, 0xff, 0xff, 0xff, 0x1d, 0x11, 0x1d, 0xca, 0x05, 0xe1, 0xf8, 0xc1, X 0x01, 0x24, 0x83, 0xf0, 0xff, 0xff, 0xff, 0x8e, 0x54, 0x04, 0x41, 0x91, X 0xb4, 0x7b, 0x55, 0x4a, 0xc8, 0x13, 0xf8, 0xff, 0xff, 0xff, 0x1e, 0x11, X 0x29, 0xd0, 0x05, 0x2a, 0xff, 0x96, 0x05, 0x40, 0x83, 0xf8, 0xff, 0xff, X 0x7f, 0x7f, 0xad, 0x02, 0x00, 0x80, 0xfe, 0xd5, 0x77, 0x0f, 0xca, 0x15, X 0xf0, 0xff, 0xff, 0x7f, 0x5f, 0xa9, 0x0a, 0xe4, 0x20, 0xfe, 0xeb, 0xdb, X 0x97, 0xd0, 0x4b, 0xf1, 0xff, 0xff, 0x7f, 0xff, 0x82, 0x44, 0x13, 0xd2, X 0xfe, 0xe2, 0xad, 0x03, 0x2a, 0x84, 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x29, X 0x14, 0x21, 0xa0, 0xfe, 0xd1, 0x9b, 0xab, 0xf8, 0x14, 0xe0, 0xff, 0xff, X 0xbf, 0xff, 0xa8, 0x8a, 0x8a, 0x7c, 0x3f, 0xe5, 0x76, 0x28, 0xb4, 0x00, X 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x55, 0x0a, 0x21, 0xfa, 0x7f, 0xf1, 0x7a, X 0x55, 0x79, 0x25, 0xe0, 0xff, 0xff, 0xdf, 0xff, 0xab, 0x5c, 0x88, 0xfe, X 0x5f, 0xeb, 0x7e, 0x2c, 0xff, 0x10, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0x7f, X 0x03, 0x72, 0xff, 0xff, 0xf1, 0xbe, 0x1a, 0xfe, 0x01, 0xc0, 0xff, 0xff, X 0xdf, 0xff, 0xdf, 0x5a, 0xf4, 0xff, 0xff, 0x6a, 0x3f, 0x0c, 0xf7, 0x91, X 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x87, 0xfb, 0xff, 0xfd, 0xb7, 0x4e, X 0x1d, 0x7f, 0x01, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x25, 0xfe, 0xff, X 0xfd, 0x2e, 0x6e, 0x0c, 0xff, 0x50, 0x80, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xef, 0xbf, 0xb7, 0x47, 0xfc, 0xbf, 0x00, 0xa0, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xdf, 0x2b, 0xec, 0x7f, 0x04, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9b, 0x05, X 0xfe, 0xbf, 0x90, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xdf, 0xab, 0x21, 0xfc, 0x3f, 0xa0, 0xa2, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xbf, 0x09, 0x45, 0xfa, 0x1f, 0x80, 0x81, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xd7, 0x99, 0xde, 0x7f, 0x20, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xb0, X 0x97, 0xbf, 0x80, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf4, X 0x7f, 0xfe, 0xf5, 0x2b, 0x7a, 0x21, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xf8, 0xff, 0xf4, 0xf9, 0x57, 0xfe, 0x00, 0xa2, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfc, 0xff, 0xa3, 0xf8, 0x01, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfa, 0xff, X 0x0b, 0xfd, 0x85, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xbe, 0x7f, 0xa2, 0xfa, 0x15, 0xb0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xfe, 0x4f, 0xb4, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf4, 0x7f, 0x8b, X 0xb8, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0x2e, 0xba, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x08, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, X 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xbf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x7f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, X 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xf7, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, X 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf7, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, X 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, X 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xe3, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, X 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff X}; X X X/* border width */ X#define BDW 4 X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X/* declarations */ XDisplay *mydisplay; XWindow mywindow; XXGCValues gcvalues; XGC copygc,tilegc; XXSizeHints hints; Xint myscreen; Xunsigned long foreground,background; Xint i,j,k; /* :-) */ Xint done; X X/* Initialisation */ X Xmydisplay = XOpenDisplay(""); Xmyscreen = DefaultScreen(mydisplay); X X/* pixel values */ Xforeground = WhitePixel(mydisplay,myscreen); Xbackground = BlackPixel(mydisplay,myscreen); X X/* hints */ Xhints.x = 200; hints.y = 300; Xhints.width = 360; hints.height = 480; X Xhints.flags = PPosition | PSize; X X/* make a window */ X Xmywindow = XCreateSimpleWindow(mydisplay, X DefaultRootWindow(mydisplay), X hints.x,hints.y,hints.width,hints.height, X BDW,foreground,background); XXSetStandardProperties(mydisplay,mywindow,"Tile test","Tile test", X None,argv,argc,&hints); X X/* make the GCs */ X Xgcvalues.foreground= foreground; Xgcvalues.background= background; Xcopygc = XCreateGC(mydisplay,mywindow,GCBackground|GCForeground,&gcvalues); X Xgcvalues.fill_style = FillTiled; Xgcvalues.tile = XCreatePixmapFromBitmapData(mydisplay,mywindow, X pixbits,120,120,foreground,background, X DefaultDepth(mydisplay,myscreen)); Xtilegc = XXCreateGC(mydisplay,mywindow,GCBackground|GCForeground|GCTile|GCFillStyle, X &gcvalues); X X/* raise window */ XXMapRaised(mydisplay,mywindow); XXFlush(mydisplay); X X X/* main loop, don't care about events */ X X/* first tile the window twelve hundred times */ Xprintf("Tile the window twelve hundred times using XFillRectangle\n"); Xfor (i=0;i<1200;i++) { X /* set the TS origins here because in general what I want to X do requires this (scrolling over a pixmap) */ X gcvalues.ts_x_origin = i; X gcvalues.ts_y_origin = i; X XChangeGC(mydisplay,tilegc, X GCTileStipXOrigin|GCTileStipYOrigin,&gcvalues); X XFillRectangle(mydisplay,mywindow,tilegc, X 0,0,360,480); X XFlush(mydisplay); X} Xprintf("finished tiling with gc\n"); X X/* now manual tiling */ X XXFreeGC(mydisplay,copygc); XXFreeGC(mydisplay,tilegc); XXDestroyWindow(mydisplay,mywindow); XXCloseDisplay(mydisplay); Xexit(0); X X} END_OF_FILE if test 13428 -ne `wc -c <'prob.c'`; then echo shar: \"'prob.c'\" unpacked with wrong size! fi # end of 'prob.c' fi if test -f 'prob2.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'prob2.c'\" else echo shar: Extracting \"'prob2.c'\" \(13968 characters\) sed "s/^X//" >'prob2.c' <<'END_OF_FILE' X X#include <stdio.h> X#include <X11/Xlib.h> X#include <X11/Xutil.h> X Xstatic char pixbits[] = { X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xf4, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x00, 0xa0, 0xf6, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x3f, 0x00, 0x20, 0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x01, 0x00, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0xba, 0x4a, 0x08, X 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x02, 0x00, X 0x54, 0x25, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0x1f, 0x20, 0xa2, 0xd2, 0x02, 0x0a, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x88, 0x48, 0x00, 0x00, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0x02, 0x02, 0x00, X 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x92, X 0x10, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0x00, 0x20, 0xa4, 0x02, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x01, 0x88, 0x2a, 0x14, 0x80, 0x08, 0x00, 0x80, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x01, 0x5a, 0x04, 0x50, 0x82, X 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x50, 0xe0, 0x52, X 0x00, 0xa8, 0x08, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x13, X 0x00, 0x42, 0x05, 0x43, 0xb8, 0x24, 0x81, 0x00, 0xfc, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x03, 0x00, 0x48, 0xf1, 0x06, 0x05, 0x41, 0x0a, 0x00, 0xf8, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d, 0x09, 0x21, 0x5c, 0x01, 0x50, 0x2a, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0xc4, X 0x40, 0x85, 0x94, 0x0a, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, X 0x40, 0x04, 0x50, 0x91, 0x24, 0x14, 0x00, 0x08, 0xe0, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0x01, 0x04, 0x01, 0x10, 0x60, 0x09, 0xa1, 0x48, 0x00, 0xc0, X 0xff, 0xff, 0xff, 0xff, 0xdf, 0x00, 0x20, 0x10, 0x02, 0xa6, 0x42, 0x08, X 0x00, 0x88, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x09, 0x04, 0x40, X 0xae, 0x14, 0x20, 0x01, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x20, X 0x40, 0x88, 0x00, 0x57, 0x41, 0x15, 0x20, 0xa8, 0x11, 0xff, 0xff, 0xff, X 0xff, 0x37, 0x08, 0x20, 0x35, 0x10, 0x57, 0x2d, 0x52, 0x00, 0x09, 0x05, X 0xff, 0xff, 0xff, 0xff, 0x37, 0x40, 0xa2, 0x06, 0x44, 0xde, 0x4b, 0x15, X 0x00, 0x50, 0x01, 0xfe, 0xff, 0xff, 0xff, 0x3b, 0x02, 0xa0, 0xa5, 0x20, X 0xf4, 0xaa, 0x5a, 0x40, 0x04, 0x15, 0xfc, 0xff, 0xff, 0xff, 0x1b, 0x28, X 0x0d, 0x4a, 0x52, 0xed, 0xa8, 0x38, 0x04, 0x50, 0x25, 0xfc, 0xff, 0xff, X 0xff, 0x0d, 0x02, 0xae, 0xc3, 0x50, 0xea, 0xea, 0xe5, 0x00, 0x82, 0x0d, X 0xfc, 0xff, 0xff, 0xff, 0x1d, 0x11, 0x1d, 0xca, 0x05, 0xe1, 0xf8, 0xc1, X 0x01, 0x24, 0x83, 0xf0, 0xff, 0xff, 0xff, 0x8e, 0x54, 0x04, 0x41, 0x91, X 0xb4, 0x7b, 0x55, 0x4a, 0xc8, 0x13, 0xf8, 0xff, 0xff, 0xff, 0x1e, 0x11, X 0x29, 0xd0, 0x05, 0x2a, 0xff, 0x96, 0x05, 0x40, 0x83, 0xf8, 0xff, 0xff, X 0x7f, 0x7f, 0xad, 0x02, 0x00, 0x80, 0xfe, 0xd5, 0x77, 0x0f, 0xca, 0x15, X 0xf0, 0xff, 0xff, 0x7f, 0x5f, 0xa9, 0x0a, 0xe4, 0x20, 0xfe, 0xeb, 0xdb, X 0x97, 0xd0, 0x4b, 0xf1, 0xff, 0xff, 0x7f, 0xff, 0x82, 0x44, 0x13, 0xd2, X 0xfe, 0xe2, 0xad, 0x03, 0x2a, 0x84, 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x29, X 0x14, 0x21, 0xa0, 0xfe, 0xd1, 0x9b, 0xab, 0xf8, 0x14, 0xe0, 0xff, 0xff, X 0xbf, 0xff, 0xa8, 0x8a, 0x8a, 0x7c, 0x3f, 0xe5, 0x76, 0x28, 0xb4, 0x00, X 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x55, 0x0a, 0x21, 0xfa, 0x7f, 0xf1, 0x7a, X 0x55, 0x79, 0x25, 0xe0, 0xff, 0xff, 0xdf, 0xff, 0xab, 0x5c, 0x88, 0xfe, X 0x5f, 0xeb, 0x7e, 0x2c, 0xff, 0x10, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0x7f, X 0x03, 0x72, 0xff, 0xff, 0xf1, 0xbe, 0x1a, 0xfe, 0x01, 0xc0, 0xff, 0xff, X 0xdf, 0xff, 0xdf, 0x5a, 0xf4, 0xff, 0xff, 0x6a, 0x3f, 0x0c, 0xf7, 0x91, X 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x87, 0xfb, 0xff, 0xfd, 0xb7, 0x4e, X 0x1d, 0x7f, 0x01, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x25, 0xfe, 0xff, X 0xfd, 0x2e, 0x6e, 0x0c, 0xff, 0x50, 0x80, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xef, 0xbf, 0xb7, 0x47, 0xfc, 0xbf, 0x00, 0xa0, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xdf, 0x2b, 0xec, 0x7f, 0x04, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9b, 0x05, X 0xfe, 0xbf, 0x90, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xdf, 0xab, 0x21, 0xfc, 0x3f, 0xa0, 0xa2, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xbf, 0x09, 0x45, 0xfa, 0x1f, 0x80, 0x81, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xd7, 0x99, 0xde, 0x7f, 0x20, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xb0, X 0x97, 0xbf, 0x80, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf4, X 0x7f, 0xfe, 0xf5, 0x2b, 0x7a, 0x21, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xf8, 0xff, 0xf4, 0xf9, 0x57, 0xfe, 0x00, 0xa2, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfc, 0xff, 0xa3, 0xf8, 0x01, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfa, 0xff, X 0x0b, 0xfd, 0x85, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xbe, 0x7f, 0xa2, 0xfa, 0x15, 0xb0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xfe, 0x4f, 0xb4, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf4, 0x7f, 0x8b, X 0xb8, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0x2e, 0xba, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x08, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, X 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xbf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x7f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, X 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xf7, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, X 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf7, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, X 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, X 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xe3, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, X 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff X}; X X X/* define MD, a macro similar to REMAINDER but with X different semantics. If MD(x,y) = z then it should X always be the case that z <= 0, and z is the difference X between the greatest number evenly divisible by y X that is NO GREATER THAN x, and the number x itself. */ X X#define MD(x,y) ((x < 0) ? -((y+(x%y))%y) : -(x%y)) X X/* end MD definition */ X X X/* border width */ X#define BDW 4 X X X/* just to minimise differences, change nothing except the X printing loop. */ X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X/* declarations */ XDisplay *mydisplay; XWindow mywindow; XXGCValues gcvalues; XGC copygc,tilegc; XXSizeHints hints; Xint myscreen; Xunsigned long foreground,background; Xint i,j,k; /* :-) */ Xint done; X Xint tmpsx,tmpsy; XPixmap thepixmap; X X/* Initialisation */ X Xmydisplay = XOpenDisplay(""); Xmyscreen = DefaultScreen(mydisplay); X X/* pixel values */ Xforeground = WhitePixel(mydisplay,myscreen); Xbackground = BlackPixel(mydisplay,myscreen); X X/* hints */ Xhints.x = 200; hints.y = 300; Xhints.width = 360; hints.height = 480; X Xhints.flags = PPosition | PSize; X X/* make a window */ X Xmywindow = XCreateSimpleWindow(mydisplay, X DefaultRootWindow(mydisplay), X hints.x,hints.y,hints.width,hints.height, X BDW,foreground,background); XXSetStandardProperties(mydisplay,mywindow,"Tile test","Tile test", X None,argv,argc,&hints); X X/* make the GCs */ X Xgcvalues.foreground= foreground; Xgcvalues.background= background; Xcopygc = XCreateGC(mydisplay,mywindow,GCBackground|GCForeground,&gcvalues); X Xgcvalues.fill_style = FillTiled; Xthepixmap = gcvalues.tile = XCreatePixmapFromBitmapData(mydisplay,mywindow, X pixbits,120,120,foreground,background, X DefaultDepth(mydisplay,myscreen)); Xtilegc = XXCreateGC(mydisplay,mywindow,GCBackground|GCForeground|GCTile|GCFillStyle, X &gcvalues); X X/* raise window */ XXMapRaised(mydisplay,mywindow); XXFlush(mydisplay); X X X/* main loop, don't care about events */ X X/* first tile the window twelve hundred times */ Xprintf("Tile the window twelve hundred times using XCopyArea/Plane\n"); Xfor (i=0;i<1200;i++) { X for (tmpsx=MD(-i,120); tmpsx<360; tmpsx+=120) X for (tmpsy=MD(-i,120);tmpsy<480;tmpsy+=120) { X if (DefaultDepth(mydisplay,myscreen) == 1) X XCopyArea(mydisplay, thepixmap, mywindow, X copygc, 0, 0, 120, 120, tmpsx, tmpsy); X else X XCopyPlane(mydisplay, thepixmap, mywindow, X copygc, 0, 0, 120, 120, tmpsx, tmpsy); X } X XFlush(mydisplay); X} Xprintf("finished tiling manually\n"); X X/* now manual tiling */ X XXFreeGC(mydisplay,copygc); XXFreeGC(mydisplay,tilegc); XXDestroyWindow(mydisplay,mywindow); XXCloseDisplay(mydisplay); Xexit(0); X X} END_OF_FILE if test 13968 -ne `wc -c <'prob2.c'`; then echo shar: \"'prob2.c'\" unpacked with wrong size! fi # end of 'prob2.c' fi echo shar: End of shell archive. exit 0
cjmchale@swift.cs.tcd.ie (11/06/90)
I'm posting this on behalf of Afzal Ballim <afzal@divsun.unige.ch> who at the moment can read but not post to the net. Either followup or reply to him (not me). ------------------------------------------------------------------- Newsgroups: comp.windows.x Subject: XFillRectangle with Tile Vs Manual Tiling Reply-To: afzal@cuisun.unige.ch (not sure if this got posted) Hi, I have a question regarding tiling rectangular areas of a drawable. In the course of writing a widget I have been considering the question of tiling a rectangular area of a drawable. I have tried the obvious way of doing this, i.e., setting the tile attribute of a gc, the ts_x_origin, ts_y_origin, and the fill style to FillTiled, and the not-so-obvious way, i.e., doing it yourself. In both cases I was using a Pixmap to tile a drawable. I found (much to my surprise) that the not-so-obvious way was MUCH faster (one my Sparcstation 1) with an area about twelve times the area of the tile. This seems bizzare to me, after all the obvious way requires one trip to the server, while the not-so-obvious way requires many trips. Has anyone else noticed such behaviour, or have I most likely overlooked something? The code is in a widget I am writing, so I do not include it here, however, I will go off now and try and reproduce this in straight Xlib calls. In the meantime, if anyone has advice, flames (:-), etc., I'll be happy to receive them, and will post a summary to the net if there is interest -Afzal Ballim (later....) I've written two raw Xlib programs to demonstrate the problem. (Compile with -lX11). +------------------------------cut here------------------------------+ #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: prob.c prob2.c # Wrapped by afzal@issun3 on Tue Nov 6 12:19:25 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'prob.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'prob.c'\" else echo shar: Extracting \"'prob.c'\" \(13428 characters\) sed "s/^X//" >'prob.c' <<'END_OF_FILE' X X#include <stdio.h> X#include <X11/Xlib.h> X#include <X11/Xutil.h> X Xstatic char pixbits[] = { X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xf4, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x00, 0xa0, 0xf6, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x3f, 0x00, 0x20, 0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x01, 0x00, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0xba, 0x4a, 0x08, X 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x02, 0x00, X 0x54, 0x25, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0x1f, 0x20, 0xa2, 0xd2, 0x02, 0x0a, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x88, 0x48, 0x00, 0x00, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0x02, 0x02, 0x00, X 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x92, X 0x10, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0x00, 0x20, 0xa4, 0x02, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x01, 0x88, 0x2a, 0x14, 0x80, 0x08, 0x00, 0x80, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x01, 0x5a, 0x04, 0x50, 0x82, X 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x50, 0xe0, 0x52, X 0x00, 0xa8, 0x08, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x13, X 0x00, 0x42, 0x05, 0x43, 0xb8, 0x24, 0x81, 0x00, 0xfc, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x03, 0x00, 0x48, 0xf1, 0x06, 0x05, 0x41, 0x0a, 0x00, 0xf8, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d, 0x09, 0x21, 0x5c, 0x01, 0x50, 0x2a, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0xc4, X 0x40, 0x85, 0x94, 0x0a, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, X 0x40, 0x04, 0x50, 0x91, 0x24, 0x14, 0x00, 0x08, 0xe0, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0x01, 0x04, 0x01, 0x10, 0x60, 0x09, 0xa1, 0x48, 0x00, 0xc0, X 0xff, 0xff, 0xff, 0xff, 0xdf, 0x00, 0x20, 0x10, 0x02, 0xa6, 0x42, 0x08, X 0x00, 0x88, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x09, 0x04, 0x40, X 0xae, 0x14, 0x20, 0x01, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x20, X 0x40, 0x88, 0x00, 0x57, 0x41, 0x15, 0x20, 0xa8, 0x11, 0xff, 0xff, 0xff, X 0xff, 0x37, 0x08, 0x20, 0x35, 0x10, 0x57, 0x2d, 0x52, 0x00, 0x09, 0x05, X 0xff, 0xff, 0xff, 0xff, 0x37, 0x40, 0xa2, 0x06, 0x44, 0xde, 0x4b, 0x15, X 0x00, 0x50, 0x01, 0xfe, 0xff, 0xff, 0xff, 0x3b, 0x02, 0xa0, 0xa5, 0x20, X 0xf4, 0xaa, 0x5a, 0x40, 0x04, 0x15, 0xfc, 0xff, 0xff, 0xff, 0x1b, 0x28, X 0x0d, 0x4a, 0x52, 0xed, 0xa8, 0x38, 0x04, 0x50, 0x25, 0xfc, 0xff, 0xff, X 0xff, 0x0d, 0x02, 0xae, 0xc3, 0x50, 0xea, 0xea, 0xe5, 0x00, 0x82, 0x0d, X 0xfc, 0xff, 0xff, 0xff, 0x1d, 0x11, 0x1d, 0xca, 0x05, 0xe1, 0xf8, 0xc1, X 0x01, 0x24, 0x83, 0xf0, 0xff, 0xff, 0xff, 0x8e, 0x54, 0x04, 0x41, 0x91, X 0xb4, 0x7b, 0x55, 0x4a, 0xc8, 0x13, 0xf8, 0xff, 0xff, 0xff, 0x1e, 0x11, X 0x29, 0xd0, 0x05, 0x2a, 0xff, 0x96, 0x05, 0x40, 0x83, 0xf8, 0xff, 0xff, X 0x7f, 0x7f, 0xad, 0x02, 0x00, 0x80, 0xfe, 0xd5, 0x77, 0x0f, 0xca, 0x15, X 0xf0, 0xff, 0xff, 0x7f, 0x5f, 0xa9, 0x0a, 0xe4, 0x20, 0xfe, 0xeb, 0xdb, X 0x97, 0xd0, 0x4b, 0xf1, 0xff, 0xff, 0x7f, 0xff, 0x82, 0x44, 0x13, 0xd2, X 0xfe, 0xe2, 0xad, 0x03, 0x2a, 0x84, 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x29, X 0x14, 0x21, 0xa0, 0xfe, 0xd1, 0x9b, 0xab, 0xf8, 0x14, 0xe0, 0xff, 0xff, X 0xbf, 0xff, 0xa8, 0x8a, 0x8a, 0x7c, 0x3f, 0xe5, 0x76, 0x28, 0xb4, 0x00, X 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x55, 0x0a, 0x21, 0xfa, 0x7f, 0xf1, 0x7a, X 0x55, 0x79, 0x25, 0xe0, 0xff, 0xff, 0xdf, 0xff, 0xab, 0x5c, 0x88, 0xfe, X 0x5f, 0xeb, 0x7e, 0x2c, 0xff, 0x10, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0x7f, X 0x03, 0x72, 0xff, 0xff, 0xf1, 0xbe, 0x1a, 0xfe, 0x01, 0xc0, 0xff, 0xff, X 0xdf, 0xff, 0xdf, 0x5a, 0xf4, 0xff, 0xff, 0x6a, 0x3f, 0x0c, 0xf7, 0x91, X 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x87, 0xfb, 0xff, 0xfd, 0xb7, 0x4e, X 0x1d, 0x7f, 0x01, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x25, 0xfe, 0xff, X 0xfd, 0x2e, 0x6e, 0x0c, 0xff, 0x50, 0x80, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xef, 0xbf, 0xb7, 0x47, 0xfc, 0xbf, 0x00, 0xa0, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xdf, 0x2b, 0xec, 0x7f, 0x04, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9b, 0x05, X 0xfe, 0xbf, 0x90, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xdf, 0xab, 0x21, 0xfc, 0x3f, 0xa0, 0xa2, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xbf, 0x09, 0x45, 0xfa, 0x1f, 0x80, 0x81, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xd7, 0x99, 0xde, 0x7f, 0x20, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xb0, X 0x97, 0xbf, 0x80, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf4, X 0x7f, 0xfe, 0xf5, 0x2b, 0x7a, 0x21, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xf8, 0xff, 0xf4, 0xf9, 0x57, 0xfe, 0x00, 0xa2, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfc, 0xff, 0xa3, 0xf8, 0x01, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfa, 0xff, X 0x0b, 0xfd, 0x85, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xbe, 0x7f, 0xa2, 0xfa, 0x15, 0xb0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xfe, 0x4f, 0xb4, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf4, 0x7f, 0x8b, X 0xb8, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0x2e, 0xba, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x08, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, X 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xbf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x7f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, X 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xf7, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, X 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf7, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, X 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, X 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xe3, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, X 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff X}; X X X/* border width */ X#define BDW 4 X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X/* declarations */ XDisplay *mydisplay; XWindow mywindow; XXGCValues gcvalues; XGC copygc,tilegc; XXSizeHints hints; Xint myscreen; Xunsigned long foreground,background; Xint i,j,k; /* :-) */ Xint done; X X/* Initialisation */ X Xmydisplay = XOpenDisplay(""); Xmyscreen = DefaultScreen(mydisplay); X X/* pixel values */ Xforeground = WhitePixel(mydisplay,myscreen); Xbackground = BlackPixel(mydisplay,myscreen); X X/* hints */ Xhints.x = 200; hints.y = 300; Xhints.width = 360; hints.height = 480; X Xhints.flags = PPosition | PSize; X X/* make a window */ X Xmywindow = XCreateSimpleWindow(mydisplay, X DefaultRootWindow(mydisplay), X hints.x,hints.y,hints.width,hints.height, X BDW,foreground,background); XXSetStandardProperties(mydisplay,mywindow,"Tile test","Tile test", X None,argv,argc,&hints); X X/* make the GCs */ X Xgcvalues.foreground= foreground; Xgcvalues.background= background; Xcopygc = XCreateGC(mydisplay,mywindow,GCBackground|GCForeground,&gcvalues); X Xgcvalues.fill_style = FillTiled; Xgcvalues.tile = XCreatePixmapFromBitmapData(mydisplay,mywindow, X pixbits,120,120,foreground,background, X DefaultDepth(mydisplay,myscreen)); Xtilegc = XXCreateGC(mydisplay,mywindow,GCBackground|GCForeground|GCTile|GCFillStyle, X &gcvalues); X X/* raise window */ XXMapRaised(mydisplay,mywindow); XXFlush(mydisplay); X X X/* main loop, don't care about events */ X X/* first tile the window twelve hundred times */ Xprintf("Tile the window twelve hundred times using XFillRectangle\n"); Xfor (i=0;i<1200;i++) { X /* set the TS origins here because in general what I want to X do requires this (scrolling over a pixmap) */ X gcvalues.ts_x_origin = i; X gcvalues.ts_y_origin = i; X XChangeGC(mydisplay,tilegc, X GCTileStipXOrigin|GCTileStipYOrigin,&gcvalues); X XFillRectangle(mydisplay,mywindow,tilegc, X 0,0,360,480); X XFlush(mydisplay); X} Xprintf("finished tiling with gc\n"); X X/* now manual tiling */ X XXFreeGC(mydisplay,copygc); XXFreeGC(mydisplay,tilegc); XXDestroyWindow(mydisplay,mywindow); XXCloseDisplay(mydisplay); Xexit(0); X X} END_OF_FILE if test 13428 -ne `wc -c <'prob.c'`; then echo shar: \"'prob.c'\" unpacked with wrong size! fi # end of 'prob.c' fi if test -f 'prob2.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'prob2.c'\" else echo shar: Extracting \"'prob2.c'\" \(13968 characters\) sed "s/^X//" >'prob2.c' <<'END_OF_FILE' X X#include <stdio.h> X#include <X11/Xlib.h> X#include <X11/Xutil.h> X Xstatic char pixbits[] = { X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xf4, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x00, 0xa0, 0xf6, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x3f, 0x00, 0x20, 0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x01, 0x00, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0xba, 0x4a, 0x08, X 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x02, 0x00, X 0x54, 0x25, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0x1f, 0x20, 0xa2, 0xd2, 0x02, 0x0a, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x88, 0x48, 0x00, 0x00, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0x02, 0x02, 0x00, X 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x92, X 0x10, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0x00, 0x20, 0xa4, 0x02, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x01, 0x88, 0x2a, 0x14, 0x80, 0x08, 0x00, 0x80, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x01, 0x5a, 0x04, 0x50, 0x82, X 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x50, 0xe0, 0x52, X 0x00, 0xa8, 0x08, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x13, X 0x00, 0x42, 0x05, 0x43, 0xb8, 0x24, 0x81, 0x00, 0xfc, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x03, 0x00, 0x48, 0xf1, 0x06, 0x05, 0x41, 0x0a, 0x00, 0xf8, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d, 0x09, 0x21, 0x5c, 0x01, 0x50, 0x2a, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0xc4, X 0x40, 0x85, 0x94, 0x0a, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, X 0x40, 0x04, 0x50, 0x91, 0x24, 0x14, 0x00, 0x08, 0xe0, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0x01, 0x04, 0x01, 0x10, 0x60, 0x09, 0xa1, 0x48, 0x00, 0xc0, X 0xff, 0xff, 0xff, 0xff, 0xdf, 0x00, 0x20, 0x10, 0x02, 0xa6, 0x42, 0x08, X 0x00, 0x88, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x09, 0x04, 0x40, X 0xae, 0x14, 0x20, 0x01, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x20, X 0x40, 0x88, 0x00, 0x57, 0x41, 0x15, 0x20, 0xa8, 0x11, 0xff, 0xff, 0xff, X 0xff, 0x37, 0x08, 0x20, 0x35, 0x10, 0x57, 0x2d, 0x52, 0x00, 0x09, 0x05, X 0xff, 0xff, 0xff, 0xff, 0x37, 0x40, 0xa2, 0x06, 0x44, 0xde, 0x4b, 0x15, X 0x00, 0x50, 0x01, 0xfe, 0xff, 0xff, 0xff, 0x3b, 0x02, 0xa0, 0xa5, 0x20, X 0xf4, 0xaa, 0x5a, 0x40, 0x04, 0x15, 0xfc, 0xff, 0xff, 0xff, 0x1b, 0x28, X 0x0d, 0x4a, 0x52, 0xed, 0xa8, 0x38, 0x04, 0x50, 0x25, 0xfc, 0xff, 0xff, X 0xff, 0x0d, 0x02, 0xae, 0xc3, 0x50, 0xea, 0xea, 0xe5, 0x00, 0x82, 0x0d, X 0xfc, 0xff, 0xff, 0xff, 0x1d, 0x11, 0x1d, 0xca, 0x05, 0xe1, 0xf8, 0xc1, X 0x01, 0x24, 0x83, 0xf0, 0xff, 0xff, 0xff, 0x8e, 0x54, 0x04, 0x41, 0x91, X 0xb4, 0x7b, 0x55, 0x4a, 0xc8, 0x13, 0xf8, 0xff, 0xff, 0xff, 0x1e, 0x11, X 0x29, 0xd0, 0x05, 0x2a, 0xff, 0x96, 0x05, 0x40, 0x83, 0xf8, 0xff, 0xff, X 0x7f, 0x7f, 0xad, 0x02, 0x00, 0x80, 0xfe, 0xd5, 0x77, 0x0f, 0xca, 0x15, X 0xf0, 0xff, 0xff, 0x7f, 0x5f, 0xa9, 0x0a, 0xe4, 0x20, 0xfe, 0xeb, 0xdb, X 0x97, 0xd0, 0x4b, 0xf1, 0xff, 0xff, 0x7f, 0xff, 0x82, 0x44, 0x13, 0xd2, X 0xfe, 0xe2, 0xad, 0x03, 0x2a, 0x84, 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x29, X 0x14, 0x21, 0xa0, 0xfe, 0xd1, 0x9b, 0xab, 0xf8, 0x14, 0xe0, 0xff, 0xff, X 0xbf, 0xff, 0xa8, 0x8a, 0x8a, 0x7c, 0x3f, 0xe5, 0x76, 0x28, 0xb4, 0x00, X 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x55, 0x0a, 0x21, 0xfa, 0x7f, 0xf1, 0x7a, X 0x55, 0x79, 0x25, 0xe0, 0xff, 0xff, 0xdf, 0xff, 0xab, 0x5c, 0x88, 0xfe, X 0x5f, 0xeb, 0x7e, 0x2c, 0xff, 0x10, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0x7f, X 0x03, 0x72, 0xff, 0xff, 0xf1, 0xbe, 0x1a, 0xfe, 0x01, 0xc0, 0xff, 0xff, X 0xdf, 0xff, 0xdf, 0x5a, 0xf4, 0xff, 0xff, 0x6a, 0x3f, 0x0c, 0xf7, 0x91, X 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x87, 0xfb, 0xff, 0xfd, 0xb7, 0x4e, X 0x1d, 0x7f, 0x01, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x25, 0xfe, 0xff, X 0xfd, 0x2e, 0x6e, 0x0c, 0xff, 0x50, 0x80, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xef, 0xbf, 0xb7, 0x47, 0xfc, 0xbf, 0x00, 0xa0, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xdf, 0x2b, 0xec, 0x7f, 0x04, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9b, 0x05, X 0xfe, 0xbf, 0x90, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xdf, 0xab, 0x21, 0xfc, 0x3f, 0xa0, 0xa2, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xbf, 0x09, 0x45, 0xfa, 0x1f, 0x80, 0x81, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xd7, 0x99, 0xde, 0x7f, 0x20, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xb0, X 0x97, 0xbf, 0x80, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf4, X 0x7f, 0xfe, 0xf5, 0x2b, 0x7a, 0x21, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xf8, 0xff, 0xf4, 0xf9, 0x57, 0xfe, 0x00, 0xa2, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfc, 0xff, 0xa3, 0xf8, 0x01, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfa, 0xff, X 0x0b, 0xfd, 0x85, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xbe, 0x7f, 0xa2, 0xfa, 0x15, 0xb0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xfe, 0x4f, 0xb4, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf4, 0x7f, 0x8b, X 0xb8, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0x2e, 0xba, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x08, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, X 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xbf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x7f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, X 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xf7, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, X 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf7, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, X 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, X 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xe3, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, X 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff X}; X X X/* define MD, a macro similar to REMAINDER but with X different semantics. If MD(x,y) = z then it should X always be the case that z <= 0, and z is the difference X between the greatest number evenly divisible by y X that is NO GREATER THAN x, and the number x itself. */ X X#define MD(x,y) ((x < 0) ? -((y+(x%y))%y) : -(x%y)) X X/* end MD definition */ X X X/* border width */ X#define BDW 4 X X X/* just to minimise differences, change nothing except the X printing loop. */ X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X/* declarations */ XDisplay *mydisplay; XWindow mywindow; XXGCValues gcvalues; XGC copygc,tilegc; XXSizeHints hints; Xint myscreen; Xunsigned long foreground,background; Xint i,j,k; /* :-) */ Xint done; X Xint tmpsx,tmpsy; XPixmap thepixmap; X X/* Initialisation */ X Xmydisplay = XOpenDisplay(""); Xmyscreen = DefaultScreen(mydisplay); X X/* pixel values */ Xforeground = WhitePixel(mydisplay,myscreen); Xbackground = BlackPixel(mydisplay,myscreen); X X/* hints */ Xhints.x = 200; hints.y = 300; Xhints.width = 360; hints.height = 480; X Xhints.flags = PPosition | PSize; X X/* make a window */ X Xmywindow = XCreateSimpleWindow(mydisplay, X DefaultRootWindow(mydisplay), X hints.x,hints.y,hints.width,hints.height, X BDW,foreground,background); XXSetStandardProperties(mydisplay,mywindow,"Tile test","Tile test", X None,argv,argc,&hints); X X/* make the GCs */ X Xgcvalues.foreground= foreground; Xgcvalues.background= background; Xcopygc = XCreateGC(mydisplay,mywindow,GCBackground|GCForeground,&gcvalues); X Xgcvalues.fill_style = FillTiled; Xthepixmap = gcvalues.tile = XCreatePixmapFromBitmapData(mydisplay,mywindow, X pixbits,120,120,foreground,background, X DefaultDepth(mydisplay,myscreen)); Xtilegc = XXCreateGC(mydisplay,mywindow,GCBackground|GCForeground|GCTile|GCFillStyle, X &gcvalues); X X/* raise window */ XXMapRaised(mydisplay,mywindow); XXFlush(mydisplay); X X X/* main loop, don't care about events */ X X/* first tile the window twelve hundred times */ Xprintf("Tile the window twelve hundred times using XCopyArea/Plane\n"); Xfor (i=0;i<1200;i++) { X for (tmpsx=MD(-i,120); tmpsx<360; tmpsx+=120) X for (tmpsy=MD(-i,120);tmpsy<480;tmpsy+=120) { X if (DefaultDepth(mydisplay,myscreen) == 1) X XCopyArea(mydisplay, thepixmap, mywindow, X copygc, 0, 0, 120, 120, tmpsx, tmpsy); X else X XCopyPlane(mydisplay, thepixmap, mywindow, X copygc, 0, 0, 120, 120, tmpsx, tmpsy); X } X XFlush(mydisplay); X} Xprintf("finished tiling manually\n"); X X/* now manual tiling */ X XXFreeGC(mydisplay,copygc); XXFreeGC(mydisplay,tilegc); XXDestroyWindow(mydisplay,mywindow); XXCloseDisplay(mydisplay); Xexit(0); X X} END_OF_FILE if test 13968 -ne `wc -c <'prob2.c'`; then echo shar: \"'prob2.c'\" unpacked with wrong size! fi # end of 'prob2.c' fi echo shar: End of shell archive. exit 0 ------------------------------------------------------------------- Remember, if replying by email then reply to Afzal Ballim rather than to me. Regards, Ciaran. -- Ciaran McHale "An inappropiate joke for every occasion" Department of Computer Science, Trinity College, Dublin 2, Ireland. Telephone: +353-1-772941 ext 1538 FAX: +353-1-772204 Telex: 93782 TCD EI email: cjmchale@cs.tcd.ie or cjmchale%cs.tcd.ie@cunyvm.cuny.edu My opinions are.
uucp@vicorp.com (Unix to Unix Copy) (11/07/90)
(not sure if this got posted) Hi, I have a question regarding tiling rectangular areas of a drawable. In the course of writing a widget I have been considering the question of tiling a rectangular area of a drawable. I have tried the obvious way of doing this, i.e., setting the tile attribute of a gc, the ts_x_origin, ts_y_origin, and the fill style to FillTiled, and the not-so-obvious way, i.e., doing it yourself. In both cases I was using a Pixmap to tile a drawable. I found (much to my surprise) that the not-so-obvious way was MUCH faster (one my Sparcstation 1) with an area about twelve times the area of the tile. This seems bizzare to me, after all the obvious way requires one trip to the server, while the not-so-obvious way requires many trips. Has anyone else noticed such behaviour, or have I most likely overlooked something? The code is in a widget I am writing, so I do not include it here, however, I will go off now and try and reproduce this in straight Xlib calls. In the meantime, if anyone has advice, flames (:-), etc., I'll be happy to receive them, and will post a summary to the net if there is interest -Afzal Ballim (later....) I've written two raw Xlib programs to demonstrate the problem. (Compile with -lX11). +------------------------------cut here------------------------------+ #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: prob.c prob2.c # Wrapped by afzal@issun3 on Tue Nov 6 12:19:25 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'prob.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'prob.c'\" else echo shar: Extracting \"'prob.c'\" \(13428 characters\) sed "s/^X//" >'prob.c' <<'END_OF_FILE' X X#include <stdio.h> X#include <X11/Xlib.h> X#include <X11/Xutil.h> X Xstatic char pixbits[] = { X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xf4, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x00, 0xa0, 0xf6, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x3f, 0x00, 0x20, 0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x01, 0x00, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0xba, 0x4a, 0x08, X 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x02, 0x00, X 0x54, 0x25, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0x1f, 0x20, 0xa2, 0xd2, 0x02, 0x0a, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x88, 0x48, 0x00, 0x00, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0x02, 0x02, 0x00, X 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x92, X 0x10, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0x00, 0x20, 0xa4, 0x02, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x01, 0x88, 0x2a, 0x14, 0x80, 0x08, 0x00, 0x80, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x01, 0x5a, 0x04, 0x50, 0x82, X 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x50, 0xe0, 0x52, X 0x00, 0xa8, 0x08, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x13, X 0x00, 0x42, 0x05, 0x43, 0xb8, 0x24, 0x81, 0x00, 0xfc, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x03, 0x00, 0x48, 0xf1, 0x06, 0x05, 0x41, 0x0a, 0x00, 0xf8, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d, 0x09, 0x21, 0x5c, 0x01, 0x50, 0x2a, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0xc4, X 0x40, 0x85, 0x94, 0x0a, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, X 0x40, 0x04, 0x50, 0x91, 0x24, 0x14, 0x00, 0x08, 0xe0, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0x01, 0x04, 0x01, 0x10, 0x60, 0x09, 0xa1, 0x48, 0x00, 0xc0, X 0xff, 0xff, 0xff, 0xff, 0xdf, 0x00, 0x20, 0x10, 0x02, 0xa6, 0x42, 0x08, X 0x00, 0x88, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x09, 0x04, 0x40, X 0xae, 0x14, 0x20, 0x01, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x20, X 0x40, 0x88, 0x00, 0x57, 0x41, 0x15, 0x20, 0xa8, 0x11, 0xff, 0xff, 0xff, X 0xff, 0x37, 0x08, 0x20, 0x35, 0x10, 0x57, 0x2d, 0x52, 0x00, 0x09, 0x05, X 0xff, 0xff, 0xff, 0xff, 0x37, 0x40, 0xa2, 0x06, 0x44, 0xde, 0x4b, 0x15, X 0x00, 0x50, 0x01, 0xfe, 0xff, 0xff, 0xff, 0x3b, 0x02, 0xa0, 0xa5, 0x20, X 0xf4, 0xaa, 0x5a, 0x40, 0x04, 0x15, 0xfc, 0xff, 0xff, 0xff, 0x1b, 0x28, X 0x0d, 0x4a, 0x52, 0xed, 0xa8, 0x38, 0x04, 0x50, 0x25, 0xfc, 0xff, 0xff, X 0xff, 0x0d, 0x02, 0xae, 0xc3, 0x50, 0xea, 0xea, 0xe5, 0x00, 0x82, 0x0d, X 0xfc, 0xff, 0xff, 0xff, 0x1d, 0x11, 0x1d, 0xca, 0x05, 0xe1, 0xf8, 0xc1, X 0x01, 0x24, 0x83, 0xf0, 0xff, 0xff, 0xff, 0x8e, 0x54, 0x04, 0x41, 0x91, X 0xb4, 0x7b, 0x55, 0x4a, 0xc8, 0x13, 0xf8, 0xff, 0xff, 0xff, 0x1e, 0x11, X 0x29, 0xd0, 0x05, 0x2a, 0xff, 0x96, 0x05, 0x40, 0x83, 0xf8, 0xff, 0xff, X 0x7f, 0x7f, 0xad, 0x02, 0x00, 0x80, 0xfe, 0xd5, 0x77, 0x0f, 0xca, 0x15, X 0xf0, 0xff, 0xff, 0x7f, 0x5f, 0xa9, 0x0a, 0xe4, 0x20, 0xfe, 0xeb, 0xdb, X 0x97, 0xd0, 0x4b, 0xf1, 0xff, 0xff, 0x7f, 0xff, 0x82, 0x44, 0x13, 0xd2, X 0xfe, 0xe2, 0xad, 0x03, 0x2a, 0x84, 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x29, X 0x14, 0x21, 0xa0, 0xfe, 0xd1, 0x9b, 0xab, 0xf8, 0x14, 0xe0, 0xff, 0xff, X 0xbf, 0xff, 0xa8, 0x8a, 0x8a, 0x7c, 0x3f, 0xe5, 0x76, 0x28, 0xb4, 0x00, X 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x55, 0x0a, 0x21, 0xfa, 0x7f, 0xf1, 0x7a, X 0x55, 0x79, 0x25, 0xe0, 0xff, 0xff, 0xdf, 0xff, 0xab, 0x5c, 0x88, 0xfe, X 0x5f, 0xeb, 0x7e, 0x2c, 0xff, 0x10, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0x7f, X 0x03, 0x72, 0xff, 0xff, 0xf1, 0xbe, 0x1a, 0xfe, 0x01, 0xc0, 0xff, 0xff, X 0xdf, 0xff, 0xdf, 0x5a, 0xf4, 0xff, 0xff, 0x6a, 0x3f, 0x0c, 0xf7, 0x91, X 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x87, 0xfb, 0xff, 0xfd, 0xb7, 0x4e, X 0x1d, 0x7f, 0x01, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x25, 0xfe, 0xff, X 0xfd, 0x2e, 0x6e, 0x0c, 0xff, 0x50, 0x80, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xef, 0xbf, 0xb7, 0x47, 0xfc, 0xbf, 0x00, 0xa0, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xdf, 0x2b, 0xec, 0x7f, 0x04, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9b, 0x05, X 0xfe, 0xbf, 0x90, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xdf, 0xab, 0x21, 0xfc, 0x3f, 0xa0, 0xa2, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xbf, 0x09, 0x45, 0xfa, 0x1f, 0x80, 0x81, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xd7, 0x99, 0xde, 0x7f, 0x20, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xb0, X 0x97, 0xbf, 0x80, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf4, X 0x7f, 0xfe, 0xf5, 0x2b, 0x7a, 0x21, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xf8, 0xff, 0xf4, 0xf9, 0x57, 0xfe, 0x00, 0xa2, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfc, 0xff, 0xa3, 0xf8, 0x01, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfa, 0xff, X 0x0b, 0xfd, 0x85, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xbe, 0x7f, 0xa2, 0xfa, 0x15, 0xb0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xfe, 0x4f, 0xb4, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf4, 0x7f, 0x8b, X 0xb8, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0x2e, 0xba, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x08, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, X 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xbf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x7f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, X 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xf7, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, X 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf7, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, X 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, X 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xe3, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, X 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff X}; X X X/* border width */ X#define BDW 4 X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X/* declarations */ XDisplay *mydisplay; XWindow mywindow; XXGCValues gcvalues; XGC copygc,tilegc; XXSizeHints hints; Xint myscreen; Xunsigned long foreground,background; Xint i,j,k; /* :-) */ Xint done; X X/* Initialisation */ X Xmydisplay = XOpenDisplay(""); Xmyscreen = DefaultScreen(mydisplay); X X/* pixel values */ Xforeground = WhitePixel(mydisplay,myscreen); Xbackground = BlackPixel(mydisplay,myscreen); X X/* hints */ Xhints.x = 200; hints.y = 300; Xhints.width = 360; hints.height = 480; X Xhints.flags = PPosition | PSize; X X/* make a window */ X Xmywindow = XCreateSimpleWindow(mydisplay, X DefaultRootWindow(mydisplay), X hints.x,hints.y,hints.width,hints.height, X BDW,foreground,background); XXSetStandardProperties(mydisplay,mywindow,"Tile test","Tile test", X None,argv,argc,&hints); X X/* make the GCs */ X Xgcvalues.foreground= foreground; Xgcvalues.background= background; Xcopygc = XCreateGC(mydisplay,mywindow,GCBackground|GCForeground,&gcvalues); X Xgcvalues.fill_style = FillTiled; Xgcvalues.tile = XCreatePixmapFromBitmapData(mydisplay,mywindow, X pixbits,120,120,foreground,background, X DefaultDepth(mydisplay,myscreen)); Xtilegc = XXCreateGC(mydisplay,mywindow,GCBackground|GCForeground|GCTile|GCFillStyle, X &gcvalues); X X/* raise window */ XXMapRaised(mydisplay,mywindow); XXFlush(mydisplay); X X X/* main loop, don't care about events */ X X/* first tile the window twelve hundred times */ Xprintf("Tile the window twelve hundred times using XFillRectangle\n"); Xfor (i=0;i<1200;i++) { X /* set the TS origins here because in general what I want to X do requires this (scrolling over a pixmap) */ X gcvalues.ts_x_origin = i; X gcvalues.ts_y_origin = i; X XChangeGC(mydisplay,tilegc, X GCTileStipXOrigin|GCTileStipYOrigin,&gcvalues); X XFillRectangle(mydisplay,mywindow,tilegc, X 0,0,360,480); X XFlush(mydisplay); X} Xprintf("finished tiling with gc\n"); X X/* now manual tiling */ X XXFreeGC(mydisplay,copygc); XXFreeGC(mydisplay,tilegc); XXDestroyWindow(mydisplay,mywindow); XXCloseDisplay(mydisplay); Xexit(0); X X} END_OF_FILE if test 13428 -ne `wc -c <'prob.c'`; then echo shar: \"'prob.c'\" unpacked with wrong size! fi # end of 'prob.c' fi if test -f 'prob2.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'prob2.c'\" else echo shar: Extracting \"'prob2.c'\" \(13968 characters\) sed "s/^X//" >'prob2.c' <<'END_OF_FILE' X X#include <stdio.h> X#include <X11/Xlib.h> X#include <X11/Xutil.h> X Xstatic char pixbits[] = { X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xab, 0xf4, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x00, 0xa0, 0xf6, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x3f, 0x00, 0x20, 0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x01, 0x00, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x90, 0xba, 0x4a, 0x08, X 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x02, 0x00, X 0x54, 0x25, 0x01, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0x1f, 0x20, 0xa2, 0xd2, 0x02, 0x0a, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0x07, 0x00, 0x08, 0x88, 0x48, 0x00, 0x00, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x80, 0x02, 0x02, 0x00, X 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x92, X 0x10, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0x00, 0x20, 0xa4, 0x02, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x01, 0x88, 0x2a, 0x14, 0x80, 0x08, 0x00, 0x80, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x01, 0x5a, 0x04, 0x50, 0x82, X 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x50, 0xe0, 0x52, X 0x00, 0xa8, 0x08, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x13, X 0x00, 0x42, 0x05, 0x43, 0xb8, 0x24, 0x81, 0x00, 0xfc, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x03, 0x00, 0x48, 0xf1, 0x06, 0x05, 0x41, 0x0a, 0x00, 0xf8, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d, 0x09, 0x21, 0x5c, 0x01, 0x50, 0x2a, X 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0xc4, X 0x40, 0x85, 0x94, 0x0a, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, X 0x40, 0x04, 0x50, 0x91, 0x24, 0x14, 0x00, 0x08, 0xe0, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0x01, 0x04, 0x01, 0x10, 0x60, 0x09, 0xa1, 0x48, 0x00, 0xc0, X 0xff, 0xff, 0xff, 0xff, 0xdf, 0x00, 0x20, 0x10, 0x02, 0xa6, 0x42, 0x08, X 0x00, 0x88, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x09, 0x04, 0x40, X 0xae, 0x14, 0x20, 0x01, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x20, X 0x40, 0x88, 0x00, 0x57, 0x41, 0x15, 0x20, 0xa8, 0x11, 0xff, 0xff, 0xff, X 0xff, 0x37, 0x08, 0x20, 0x35, 0x10, 0x57, 0x2d, 0x52, 0x00, 0x09, 0x05, X 0xff, 0xff, 0xff, 0xff, 0x37, 0x40, 0xa2, 0x06, 0x44, 0xde, 0x4b, 0x15, X 0x00, 0x50, 0x01, 0xfe, 0xff, 0xff, 0xff, 0x3b, 0x02, 0xa0, 0xa5, 0x20, X 0xf4, 0xaa, 0x5a, 0x40, 0x04, 0x15, 0xfc, 0xff, 0xff, 0xff, 0x1b, 0x28, X 0x0d, 0x4a, 0x52, 0xed, 0xa8, 0x38, 0x04, 0x50, 0x25, 0xfc, 0xff, 0xff, X 0xff, 0x0d, 0x02, 0xae, 0xc3, 0x50, 0xea, 0xea, 0xe5, 0x00, 0x82, 0x0d, X 0xfc, 0xff, 0xff, 0xff, 0x1d, 0x11, 0x1d, 0xca, 0x05, 0xe1, 0xf8, 0xc1, X 0x01, 0x24, 0x83, 0xf0, 0xff, 0xff, 0xff, 0x8e, 0x54, 0x04, 0x41, 0x91, X 0xb4, 0x7b, 0x55, 0x4a, 0xc8, 0x13, 0xf8, 0xff, 0xff, 0xff, 0x1e, 0x11, X 0x29, 0xd0, 0x05, 0x2a, 0xff, 0x96, 0x05, 0x40, 0x83, 0xf8, 0xff, 0xff, X 0x7f, 0x7f, 0xad, 0x02, 0x00, 0x80, 0xfe, 0xd5, 0x77, 0x0f, 0xca, 0x15, X 0xf0, 0xff, 0xff, 0x7f, 0x5f, 0xa9, 0x0a, 0xe4, 0x20, 0xfe, 0xeb, 0xdb, X 0x97, 0xd0, 0x4b, 0xf1, 0xff, 0xff, 0x7f, 0xff, 0x82, 0x44, 0x13, 0xd2, X 0xfe, 0xe2, 0xad, 0x03, 0x2a, 0x84, 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x29, X 0x14, 0x21, 0xa0, 0xfe, 0xd1, 0x9b, 0xab, 0xf8, 0x14, 0xe0, 0xff, 0xff, X 0xbf, 0xff, 0xa8, 0x8a, 0x8a, 0x7c, 0x3f, 0xe5, 0x76, 0x28, 0xb4, 0x00, X 0xe0, 0xff, 0xff, 0xbf, 0xff, 0x55, 0x0a, 0x21, 0xfa, 0x7f, 0xf1, 0x7a, X 0x55, 0x79, 0x25, 0xe0, 0xff, 0xff, 0xdf, 0xff, 0xab, 0x5c, 0x88, 0xfe, X 0x5f, 0xeb, 0x7e, 0x2c, 0xff, 0x10, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0x7f, X 0x03, 0x72, 0xff, 0xff, 0xf1, 0xbe, 0x1a, 0xfe, 0x01, 0xc0, 0xff, 0xff, X 0xdf, 0xff, 0xdf, 0x5a, 0xf4, 0xff, 0xff, 0x6a, 0x3f, 0x0c, 0xf7, 0x91, X 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x87, 0xfb, 0xff, 0xfd, 0xb7, 0x4e, X 0x1d, 0x7f, 0x01, 0xc0, 0xff, 0xff, 0xdf, 0xff, 0xff, 0x25, 0xfe, 0xff, X 0xfd, 0x2e, 0x6e, 0x0c, 0xff, 0x50, 0x80, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xef, 0xbf, 0xb7, 0x47, 0xfc, 0xbf, 0x00, 0xa0, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xdf, 0x2b, 0xec, 0x7f, 0x04, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x9b, 0x05, X 0xfe, 0xbf, 0x90, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xdf, 0xab, 0x21, 0xfc, 0x3f, 0xa0, 0xa2, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xbf, 0x09, 0x45, 0xfa, 0x1f, 0x80, 0x81, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xd7, 0x99, 0xde, 0x7f, 0x20, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0xb0, X 0x97, 0xbf, 0x80, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf4, X 0x7f, 0xfe, 0xf5, 0x2b, 0x7a, 0x21, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xf8, 0xff, 0xf4, 0xf9, 0x57, 0xfe, 0x00, 0xa2, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xfc, 0xff, 0xa3, 0xf8, 0x01, X 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xfa, 0xff, X 0x0b, 0xfd, 0x85, 0xa0, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xbe, 0x7f, 0xa2, 0xfa, 0x15, 0xb0, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0xfe, 0x4f, 0xb4, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xf4, 0x7f, 0x8b, X 0xb8, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0x2e, 0xba, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x08, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, X 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaa, X 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xbf, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, X 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xef, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0x7f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, X 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xf7, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xfd, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, X 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfd, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf7, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, X 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, X 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, X 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xff, X 0xff, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0x1f, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xfe, 0xff, 0xff, 0xe3, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc1, X 0xff, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, X 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff X}; X X X/* define MD, a macro similar to REMAINDER but with X different semantics. If MD(x,y) = z then it should X always be the case that z <= 0, and z is the difference X between the greatest number evenly divisible by y X that is NO GREATER THAN x, and the number x itself. */ X X#define MD(x,y) ((x < 0) ? -((y+(x%y))%y) : -(x%y)) X X/* end MD definition */ X X X/* border width */ X#define BDW 4 X X X/* just to minimise differences, change nothing except the X printing loop. */ X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X/* declarations */ XDisplay *mydisplay; XWindow mywindow; XXGCValues gcvalues; XGC copygc,tilegc; XXSizeHints hints; Xint myscreen; Xunsigned long foreground,background; Xint i,j,k; /* :-) */ Xint done; X Xint tmpsx,tmpsy; XPixmap thepixmap; X X/* Initialisation */ X Xmydisplay = XOpenDisplay(""); Xmyscreen = DefaultScreen(mydisplay); X X/* pixel values */ Xforeground = WhitePixel(mydisplay,myscreen); Xbackground = BlackPixel(mydisplay,myscreen); X X/* hints */ Xhints.x = 200; hints.y = 300; Xhints.width = 360; hints.height = 480; X Xhints.flags = PPosition | PSize; X X/* make a window */ X Xmywindow = XCreateSimpleWindow(mydisplay, X DefaultRootWindow(mydisplay), X hints.x,hints.y,hints.width,hints.height, X BDW,foreground,background); XXSetStandardProperties(mydisplay,mywindow,"Tile test","Tile test", X None,argv,argc,&hints); X X/* make the GCs */ X Xgcvalues.foreground= foreground; Xgcvalues.background= background; Xcopygc = XCreateGC(mydisplay,mywindow,GCBackground|GCForeground,&gcvalues); X Xgcvalues.fill_style = FillTiled; Xthepixmap = gcvalues.tile = XCreatePixmapFromBitmapData(mydisplay,mywindow, X pixbits,120,120,foreground,background, X DefaultDepth(mydisplay,myscreen)); Xtilegc = XXCreateGC(mydisplay,mywindow,GCBackground|GCForeground|GCTile|GCFillStyle, X &gcvalues); X X/* raise window */ XXMapRaised(mydisplay,mywindow); XXFlush(mydisplay); X X X/* main loop, don't care about events */ X X/* first tile the window twelve hundred times */ Xprintf("Tile the window twelve hundred times using XCopyArea/Plane\n"); Xfor (i=0;i<1200;i++) { X for (tmpsx=MD(-i,120); tmpsx<360; tmpsx+=120) X for (tmpsy=MD(-i,120);tmpsy<480;tmpsy+=120) { X if (DefaultDepth(mydisplay,myscreen) == 1) X XCopyArea(mydisplay, thepixmap, mywindow, X copygc, 0, 0, 120, 120, tmpsx, tmpsy); X else X XCopyPlane(mydisplay, thepixmap, mywindow, X copygc, 0, 0, 120, 120, tmpsx, tmpsy); X } X XFlush(mydisplay); X} Xprintf("finished tiling manually\n"); X X/* now manual tiling */ X XXFreeGC(mydisplay,copygc); XXFreeGC(mydisplay,tilegc); XXDestroyWindow(mydisplay,mywindow); XXCloseDisplay(mydisplay); Xexit(0); X X} END_OF_FILE if test 13968 -ne `wc -c <'prob2.c'`; then echo shar: \"'prob2.c'\" unpacked with wrong size! fi # end of 'prob2.c' fi echo shar: End of shell archive. exit 0
mouse@LIGHTNING.MCRCIM.MCGILL.EDU (11/07/90)
> I have a question regarding tiling rectangular areas of a drawable. > In the course of writing a widget I have been considering the > question of tiling a rectangular area of a drawable. I have tried > the obvious way of doing this, i.e., setting the tile attribute of a > gc, the ts_x_origin, ts_y_origin, and the fill style to FillTiled, > and the not-so-obvious way, i.e., doing it yourself. > In both cases I was using a Pixmap to tile a drawable. I found (much > to my surprise) that the not-so-obvious way was MUCH faster (one my > Sparcstation 1) with an area about twelve times the area of the tile. > This seems bizzare to me, after all the obvious way requires one trip > to the server, while the not-so-obvious way requires many trips. > Has anyone else noticed such behaviour, or have I most likely > overlooked something? I see a similar difference, and find it rather astonishing. > I've written two raw Xlib programs to demonstrate the problem. [excerpted -dM] Xgcvalues.tile = XCreatePixmapFromBitmapData(mydisplay,mywindow, X pixbits,120,120,foreground,background, X DefaultDepth(mydisplay,myscreen)); ... Xfor (i=0;i<1200;i++) { X /* set the TS origins here because in general what I want to X do requires this (scrolling over a pixmap) */ X gcvalues.ts_x_origin = i; X gcvalues.ts_y_origin = i; X XChangeGC(mydisplay,tilegc, X GCTileStipXOrigin|GCTileStipYOrigin,&gcvalues); X XFillRectangle(mydisplay,mywindow,tilegc, X 0,0,360,480); X XFlush(mydisplay); X} [versus] Xthepixmap = gcvalues.tile = XCreatePixmapFromBitmapData(mydisplay,mywindow, X pixbits,120,120,foreground,background, X DefaultDepth(mydisplay,myscreen)); ... X/* first tile the window twelve hundred times */ Xprintf("Tile the window twelve hundred times using XCopyArea/Plane\n"); Xfor (i=0;i<1200;i++) { X for (tmpsx=MD(-i,120); tmpsx<360; tmpsx+=120) X for (tmpsy=MD(-i,120);tmpsy<480;tmpsy+=120) { X if (DefaultDepth(mydisplay,myscreen) == 1) X XCopyArea(mydisplay, thepixmap, mywindow, X copygc, 0, 0, 120, 120, tmpsx, tmpsy); X else X XCopyPlane(mydisplay, thepixmap, mywindow, X copygc, 0, 0, 120, 120, tmpsx, tmpsy); X } X XFlush(mydisplay); X} I see a similar speed difference. My environment is the MIT sample server on a Sun-3/60 with a "hi-res" (1600x1280) display. You don't say whether your SS1 is color or not, but I would guess not, because you're missing the last argument to XCopyPlane. (You also don't say whose server you're using, but I suspect it doesn't make much difference.) Also note that the semantics of FillTiled are such that you should always be using XCopyArea in the second program, to be fair. However, on a one-bit display, you are, and the speed difference is still present. In the interests of fairness, I also tried copying the XChangeGC call into the outer loop in the second program. It made no visible difference. Out of curiousity, I did delete the if and try it on a color machine, a color SPARCstation 1+. The speed difference is essentially gone. However, the XFillRectangle code doesn't even work! (It looks as though something is getting confused with negative values somewhere. I shall be submitting a bug report....) Aside from that, the XFillRectangle code is aesthetically much nicer; the fills proceed in a visually more even fashion. I'd say the FillTiled code in the server needs work. It really should never be slower than doing many individual copies.... der Mouse old: mcgill-vision!mouse new: mouse@larry.mcrcim.mcgill.edu
keith@EXPO.LCS.MIT.EDU (Keith Packard) (11/08/90)
> In both cases I was using a Pixmap to tile a drawable. I found (much to my > surprise) that the not-so-obvious way was MUCH faster (one my Sparcstation > 1) with an area about twelve times the area of the tile. This seems bizzare > to me, after all the obvious way requires one trip to the server, while the > not-so-obvious way requires many trips. This shouldn't seem so strange to you. Tiling operations are very complicated and cover a wide range of potential usages. The most common tiling operations use small tiles (< 32x32) to fill areas on the screen. The R4 server optimizes this case, and leaves the other cases to wither with pretty horrible code. The problem with other tile sizes is that the server needs to choose to either emulate bitblt code, and plop down repeated blocks of the tile, or to attempt something different. For smaller tiles, emulating bitblt is painfully slow; the frame buffer is repeatedly modified at the same addresses to lay down those bits. Larger tiles could make effective use of the bitblt code without the performance penalty So, while it may seem like the server should always choose the 'fastest' way of doing something, it is also the case that the time spent optimizing various of these algorithms is better spent doing something else. You could spend an arbitrary amount of time optimizing various potential combinations of client requests; this one has never reached the top of the heap. Yes, the R5 server will do the tiling case faster than the bitblt case on color frame buffers. I fixed your example which uses CopyArea to work correctly on CFB (removing the CopyPlane call and disabling GraphicsExpose events) and measured: 24 seconds Tiling code 34 seconds Bitblt code I sped this up several months ago so that xphoon would run reasonably fast on my display. Besides, if everything went as fast as it could, I'd be out of work, wouldn't I.