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