[cairo] X11 v. XQuartz
Jennifer Adams
jma at cola.iges.org
Thu Aug 8 11:00:55 PDT 2013
Follow up:
I wrote a short C program to demonstrate the problem. It works with X11, and reliably fails with XQuartz (the rendering is incomplete). I realize this is probably an issue for the XQuartz folks, but before I go there, it would be nice to rule out incorrect Cairo code. The results are the same whether I compile and run my demo on my laptop or on a remote linux server that I connect to using ssh. I updated the images in the links given in my first message.
--Jennifer
/*
xdemo.c
for compiling on a mac:
gcc -Wall -g xdemo.c -o xdemo -I/opt/local/include/cairo -L/opt/local/lib -lcairo -lX11
for compiling on linux server (CentOS 5.9):
gcc -Wall -g xdemo.c -o xdemo -I/usr/include/cairo -L/usr/lib64 -lcairo -lX11
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <cairo.h>
#include <cairo-xlib.h>
int main () {
Display *display = (Display *)NULL;
XEvent xev;
KeyCode quit;
Window win;
Visual *visual;
cairo_surface_t *surface;
cairo_t *cr;
int snum,flag,r,a;
double x,y,x0,y0,c;
/* Create X window */
display = XOpenDisplay(0);
snum = DefaultScreen(display);
win = XCreateSimpleWindow(display, RootWindow(display,snum),100, 0, 500, 500, 4,
BlackPixel(display,snum), WhitePixel(display,snum));
/* Set event type 'Q' for quit */
quit = XKeysymToKeycode(display, XStringToKeysym("Q"));
XSelectInput(display, win, KeyPressMask|StructureNotifyMask|ExposureMask);
/* Display Window */
XMapWindow(display, win);
/* Wait for the expose event that indicates window is up */
flag=1;
while (flag) {
XNextEvent(display,&xev);
switch (xev.type) {
case Expose:
if (xev.xexpose.count != 0) break;
else flag = 0;
break;
}
}
/* create the cairo surface */
visual = DefaultVisual(display,snum);
surface = cairo_xlib_surface_create (display, win, visual, 500, 500);
cr = cairo_create(surface);
/* say hello */
cairo_set_source_rgb(cr, 0, 0, 0);
cairo_select_font_face (cr, "sans-serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size (cr, 32);
cairo_move_to (cr, 10, 42);
cairo_show_text (cr, "Hello!");
/* draw concentric circles made up of tiny line segments */
for (r=10; r<=240; r+=10) {
c=(double)r/255.0;
cairo_set_source_rgb(cr, c, c, c);
for (a=0; a<360; a++) {
x = 250 + r*cos((double)(a)*3.14159/180.0);
y = 250 + r*sin((double)(a)*3.14159/180.0);
if (a==0) {
x0 = x;
y0 = y;
cairo_move_to(cr, x, y);
}
else
cairo_line_to(cr, x, y);
}
cairo_line_to(cr,x0,y0);
cairo_stroke(cr);
}
/* wait for user to hit 'Q' ... */
while (1) {
XNextEvent(display, &xev);
switch(xev.type) {
case KeyPress:
{
XKeyEvent *kev = &xev.xkey;
if (kev->keycode == quit) return 0;
}
break;
}
}
return 0;
}
On Aug 6, 2013, at 5:13 PM, Jennifer Adams wrote:
> Dear Experts,
> I am a developer of GrADS, a visualization tool for meteorological data. GrADS uses X11 for its interactive display window, but it also has a batch mode, so you can create graphics without the use of X. We have developed an interface for Cairo to do the rendering, not only to the X window, but also to create png, ps, eps, pdf, and svg output.
>
> The problem I am having is with the X rendering when using XQuartz. Everything looks right when I use the old (deprecated) X11 application on my Mac, but if I use XQuartz, I get an incomplete rendering, illustrated by two screen shots (links are given below.) The graphical elements are very basic, these plots contain nothing but line segments and filled rectangles.
>
> http://iges.org/jma/x11.png
> http://iges.org/jma/xquartz.png
>
> The batch-mode renderings by Cairo are correct, and the non-Cairo version of GrADS does not exhibit the problem with the X window display, so I am pretty sure that Cairo and XQuartz are not playing well together.
>
> I am running Mac OS X 10.7.5. When running the old X11 application, the version information in the "About X11" window says: XQuartz 2.6.5 (xorg-server 1.10.6). When running XQuartz, the version numbers are more recent: XQuartz 2.7.4 (xorg-server 1.13.0). The Cairo version is 1.12.8.
>
> I searched through my 2-yr archive of forum emails and found nothing related to rendering problems with XQuartz. Any suggestions or ideas about what might be going wrong would be most welcome.
>
> --Jennifer
>
>
> --
> Jennifer M. Adams
> Center for Ocean-Land-Atmosphere Studies (COLA)
> 111 Research Hall, Mail Stop 2B3
> George Mason University
> 4400 University Drive
> Fairfax, VA 22030
>
>
>
>
>
> --
> cairo mailing list
> cairo at cairographics.org
> http://lists.cairographics.org/mailman/listinfo/cairo
--
Jennifer M. Adams
Center for Ocean-Land-Atmosphere Studies (COLA)
111 Research Hall, Mail Stop 2B3
George Mason University
4400 University Drive
Fairfax, VA 22030
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20130808/d0f87745/attachment-0001.html>
More information about the cairo
mailing list