noren@dinl.uucp (Charles Noren) (04/13/89)
(I realize this should be posted under comp.sys.sun, but I am having trouble sending this to the moderated Sun group). I am running a DataViews (VI Corp) application and need to perform a screen dump to a laser printer. I have a function that almosts works, however, it has the undesired side effect of changing the background color of the screen from black to white. It happens when I call win_grabio. I'm not much of Sun View expert (ignorant is the word). Is there anything I can do to prevent the background color change? Thanks, Chuck Damaged code fragment follows: ----------------cut here------------------------ #include <stdio.h> #include <fcntl.h> #include <sunwindow/window_hs.h> int screen_dump() { int sunview_status; char parent_name[WIN_NAMESIZE]; int root_window_fd; Cursor old_cursor; Cursor null_cursor; sunview_status = we_getparentwindow(parent_name); if(sunview_status == 0) { root_window_fd = open(parent_name, O_RDWR, 0); if(root_window_fd >= 0) { old_cursor = cursor_create(0); win_getcursor(root_window_fd, old_cursor); null_cursor = cursor_create(0); win_setcursor(root_window_fd, null_cursor); /* * Executing win_grabio, the background color * of the window turns from black to white. */ win_grabio(root_window_fd); } else { sunview_status = -1; } } system("screendump | rasfilter8to1 | lpr -Plw -v"); if(sunview_status == 0) { win_releaseio(root_window_fd); win_setcursor(root_window_fd, old_cursor); close(root_window_fd); } return(0); } ----------------cut here------------------------ -- Chuck Noren NET: ncar!dinl!noren US-MAIL: Martin Marietta I&CS, MS XL8058, P.O. Box 1260, Denver, CO 80201-1260 Phone: (303) 971-7930