margaret@cs.utah.edu (Malgorzata Sturgill) (08/14/90)
Hi,
	I am trying to draw in subwindows ( open with swinopen ). I finally 
managed to persuade my code to draw, but unfortunately it does not draw where 
I expect. I have included a piece of code to ilustrate. All this program does 
it opens a 300x300 parent window (black) and then opens a white 200x200 white 
subwindow. the program is then supposed to draw the diagonals of the subwindow 
in red. Well it does not. It does draw a cross, but it does not fill the whole
window. Am I just doing something stupid?
					Any help would be great,
							m.
------------------ Code Follows ---------------------------------------------
#include <stdio.h>
#include <gl.h>
#include <device.h>
long parent, child;
main(argc, argv)
int argc;
char *argv[];
{
short data;
	foreground();
	prefposition(500,800,500,800);
	parent = winopen("parent") ;
	gconfig();
	reshapeviewport();
	color(BLACK);
	clear();
	child = swinopen(parent);
	winposition(50,250,50,250);
	gconfig();
	color(WHITE);
	clear();
	qenter(REDRAW,(short)child);
	while (TRUE){
		while (qtest()){
			switch(qread(&data)){
				case REDRAW:
					if ((long)data == parent){
						winset(parent);
						reshapeviewport();
						color(BLACK);
						clear();
						break;
					}
					if ((long)data == child){
						redr();
						printf("child redrawn\n");
					}
					break;
				default:
					break;
			}
		}
	}
}
redr(){
	winset(child);
	reshapeviewport();
	color(WHITE);
	clear();
	color(RED);
	move2(0,0);
	draw2(199,199);
	move2(0,199);
	draw2(199,0);
}
Malgorzata Marek Sturgill		margaret@cs.utah.edu
					margaret@ms.uky.edu
"A sphere isn't that simple when you get into higher dimensions
 - it's a bit non-flat."
			- Annonymous
Malgorzata Marek Sturgill		margaret@cs.utah.edu
					margaret@ms.uky.edu
"A sphere isn't that simple when you get into higher dimensionsbennett@sgi.com (Jim Bennett) (08/15/90)
margaret@cs.utah.edu (Malgorzata Sturgill) writes: > Hi, > I am trying to draw in subwindows ( open with swinopen ). I finally > managed to persuade my code to draw, but unfortunately it does not draw where > I expect. I have included a piece of code to ilustrate. > > ... You just need to set the projection, for example: ortho2 (-0.5, 199.5, -0.5, 199.5); after the call to reshapeviewport() in your redraw routine. Then it works like you would expect. Jim
thant@horus.esd.sgi.com (Thant Tessman) (08/16/90)
In article <1990Aug14.100020.5096@hellgate.utah.edu>, margaret@cs.utah.edu (Malgorzata Sturgill) writes: > > Hi, > I am trying to draw in subwindows ( open with swinopen ). I finally > managed to persuade my code to draw, but unfortunately it does not draw where > I expect. I have included a piece of code to ilustrate. All this program does > it opens a 300x300 parent window (black) and then opens a white 200x200 white > subwindow. the program is then supposed to draw the diagonals of the subwindow > in red. Well it does not. It does draw a cross, but it does not fill the whole > window. Am I just doing something stupid? > #include <device.h> I'm not sure what the default behavior of subwindows is supposed to be, but you could just add an ortho2 to your redr to get what you want: redr(){ winset(child); reshapeviewport(); ortho2(0.0, 200.0, 0.0, 200.0); /* like this */ color(WHITE); clear(); color(RED); move2(0,0); draw2(199,199); move2(0,199); draw2(199,0); } > Malgorzata Marek Sturgill margaret@cs.utah.edu > margaret@ms.uky.edu > thant