[comp.windows.x] Bitmap inverted somehow?

jstravis@athena.mit.edu (John S. Travis) (11/03/89)

I have a graphics program where lines, circles, boxes are draw
on widget. I can also save these objects to a Pixmap/Bitmap
by looping though the graphics buffer and drawing onto the Pixmap
instead of the widget. However, everything ends up inverted in
the bitmap. A white-filled rectangle is black, black lines don't
show up b/c they are white, yet the background is not all black.
To restate the image on my widget compared to the one shown by using
bitmap "saved-file" & are opposite. Any ideas? I set foreground
and background in the gc early in my program. Here's my save_bitmap function.

jstravis@athena.mit.edu

void save_bitmap(w, data,call_data)
     Widget  w;
     graphics_data  *data;
     caddr_t  call_data;
{
  Dimension canvas_width, canvas_height;
  Arg  wargs[2];
  Pixmap  draw_map;

  XtSetArg(wargs[0],XtNwidth, &canvas_width);
  XtSetArg(wargs[1],XtNheight, &canvas_height);
  XtGetValues(data->canvas,wargs,2);

/* depth = 1 means bitmap */
  draw_map = XCreatePixmap(data->dpy,data->win,canvas_width,canvas_height,1);

  /* make Window = to pixmap*/
  data->win = draw_map;

  refresh(w,data,NULL); /* draws all data in graphics buffer to the Pixmap */

  if (XWriteBitmapFile(data->dpy,"draw.bitmap",draw_map,canvas_width,canvas_height,
                       -1,-1)!=BitmapSuccess)
    printf("cannot write bitmap\n");

  printf("done writing to bitmap\n");

/*   return  win to normal */
   data->win = XtWindow(data->canvas);

}