[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | DECWINDOWS 26-JAN-89 to 29-NOV-90 |
Notice: | See 1639.0 for VMS V5.3 kit; 2043.0 for 5.4 IFT kit |
Moderator: | STAR::VATNE |
|
Created: | Mon Oct 30 1989 |
Last Modified: | Mon Dec 31 1990 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 3726 |
Total number of notes: | 19516 |
1441.0. "font / pixmap => corrupted font" by MUHWSS::SCHMADERER () Thu Sep 14 1989 12:56
I ran into the following problem with fonts and pixmaps:
I use XloadFont to load a (big) font. Drawing with this font doesn't cause any
problems. Afterwards I create a pixmap (1000 x 800 pixels). No error occurs and
everything works fine with my font until I draw into the pixmap.
The result is that my font gets corrupted.
If I draw a filled rectangle into my pixmap some characters ('j' and '|') are
missing, if I draw a grid into the pixmap some characters ('j' and '|' again)
are xor'd with the grid.
I tried this out on different servers. The firefox and the pmax don't seem to
have that problem but on a GPX and a VS3100 you can see what I mean. This
problem occurs on VMS and (even !) on Ultrix, no matter whether you write
yor programs in C or Fortran.
So, is it a bug in the server or am I to stupid to write a simple program ?
I posted my program after this note. Please give me any hint you can offer.
The customer who pointed my to this (via outage) and I would be happy to get
rid of this problem.
#include <stdio.h>
#ifdef VMS
#include <decw$include/Xlib.h>
#else
#include <X11/Xlib.h>
#endif
#define FONT "-bitstream-terminal-bold-r-normal--*-*-*-*-c-22-iso8859-1"
char *string1 = "A B C D E F G H I J K L M";
char *string2 = "N O P Q R S T U V W X Y Z";
char *string3 = "a b c d e f g h i j k l m";
char *string4 = "n o p q r s t u v w x y z";
char *string5 = "{ | } [ ] ! @ # $ % ^ & *";
Display *display;
Window window;
Pixmap pixmap;
Screen *screen;
GC gc;
XEvent event;
Font font;
main()
{
do_init();
do_windcreate();
do_pixmapcreate();
do_gccreate();
do_loadfont();
do_eventsetup();
do_windmap();
do_handleevents();
}
do_init()
{
if ( !(display = XOpenDisplay("")) ) {
printf("Error: XOpenDisplay\n");
exit();
}
screen = DefaultScreenOfDisplay(display);
#ifdef DEBUG
XSynchronize(display, 1);
#endif
}
do_windcreate()
{
window = XCreateSimpleWindow(display, RootWindowOfScreen(screen),
10, 10, 1000, 800,
0,
BlackPixelOfScreen(screen),
WhitePixelOfScreen(screen)
);
}
do_pixmapcreate()
{
pixmap = XCreatePixmap(display, window, 1000, 800,
DefaultDepthOfScreen(screen));
}
do_gccreate()
{
gc = XCreateGC(display, window, 0L, 0L);
XSetForeground(display, gc, BlackPixelOfScreen(screen));
XSetBackground(display, gc, WhitePixelOfScreen(screen));
}
do_loadfont()
{
font = XLoadFont(display, FONT);
XSetFont(display, gc, font);
}
do_windmap()
{
XMapWindow(display, window);
XFlush(display);
}
do_eventsetup()
{
XSelectInput(display, window,
ExposureMask |
ButtonPressMask |
KeyPressMask
);
}
do_handleevents()
{
for(;;) {
XNextEvent(display, &event);
switch(event.type) {
case Expose: test_symbol_font();
break;
case ButtonPress: do_button();
break;
case KeyPress: do_exit();
break;
default: break;
}
}
}
test_symbol_font()
{
XClearWindow(display, window);
XDrawString(display, window, gc, 10, 50 ,
string1, strlen(string1));
XDrawString(display, window, gc, 10, 100 ,
string2, strlen(string2));
XDrawString(display, window, gc, 10, 150 ,
string3, strlen(string3));
XDrawString(display, window, gc, 10, 200 ,
string4, strlen(string4));
XDrawString(display, window, gc, 10, 250 ,
string5, strlen(string5));
}
do_button()
{
if (event.xbutton.button == Button2) {
copy_pixmap_to_window();
}
if (event.xbutton.button == Button1) {
test_symbol_font();
}
if (event.xbutton.button == Button3) {
fill_pixmap();
}
}
copy_pixmap_to_window()
{
XCopyArea(display, pixmap, window, gc, 0, 0, 1000, 800, 0, 0);
}
fill_pixmap()
{
XFillRectangle(display, pixmap, gc, 0, 0, 1000, 800);
}
do_exit()
{
XCloseDisplay(display);
}
T.R | Title | User | Personal Name | Date | Lines |
---|
1441.1 | | STAR::ORGOVAN | Vince Orgovan | Fri Sep 15 1989 20:11 | 2 |
| Please file a QAR on this problem.
|