[<<] [<] Page 1 of 1 [>] [>>] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
No BLACK with True Types?
From: Olaf Winne ####@####.#### Date: 29 Jan 2002 17:00:58 -0000 Message-Id: <02012917573600.12417@o6v9n4> Hi all, now we are using the nano-X app... Almost everything works fine!!! Thanks to the developers. One problem: I'm using True Types, but I can't use the defined color BLACK (with GrSetForeground) to write. With all other colors it works. BLACK also works fine with the nano-X system fonts. I use the framebuffer device (Linux 2.4.3.) 8bpp. regards Olaf Am Dienstag, 29. Januar 2002 17:32 schrieb Alex Holden: > Henry Chea wrote: > > Maybe point me to examples, docs, or perhaps edit my source code below to > > show how to solve the problem? > > One way is to use a pipe to send events to the slave. > > Something along these lines (completely untested): > > //control.c > #include <unistd.h> > #include <stdio.h> > #define MWINCLUDECOLORS > #include "microwin/nano-X.h" > > GR_WINDOW_ID control_wid; > GR_GC_ID gc; > > int control_fd; > int pipefds[2]; > > void event_handler (GR_EVENT *event); > > int main (void) > { > pid_t pid; > > if(pipe(pipefds) < 0) { > fprintf(stderr, "pipe() failed\n"); > exit(1); > } > > if((pid = fork()) < 0) { > fprintf(stderr, "fork() failed\n"); > exit(1); > } else if(pid > 0) { > close(pipefds[0]); /* parent closes the output side */ > } else { > close(pipefds[1]); /* child closes the input side */ > /* Set stdin to the output of the pipe: */ > if(dup2(pipefds[0], STDIN_FILENO) != STDIN_FILENO) { > fprintf(stderr, "dup2() failed\n"); > exit(1); > } > close(pipefds[0]); > if(execl("/usr/local/bin/SLAVE", "SLAVE", NULL) < 0) { > fprintf(stderr, "execl() failed\n"); > exit(1); > } > } > > if ((control_fd = GrOpen()) < 0) > { > fprintf (stderr, "GrOpen failed"); > exit (1); > } > > > gc = GrNewGC(); > GrSetGCUseBackground (gc, GR_FALSE); > GrSetGCForeground (gc, BLUE); > > control_wid = GrNewWindowEx (GR_WM_PROPS_NOMOVE | > GR_WM_PROPS_BORDER | > GR_WM_PROPS_NOAUTOMOVE | > GR_WM_PROPS_NOAUTORESIZE, > "Control Window", > GR_ROOT_WINDOW_ID, > 0, 0, 150, 478, YELLOW); > > GrSelectEvents (control_wid, GR_EVENT_MASK_EXPOSURE | > GR_EVENT_MASK_BUTTON_DOWN); > > GrMapWindow (control_wid); > GrMainLoop (event_handler); > } > > void event_handler (GR_EVENT *event) > { > switch (event->type) > { > case GR_EVENT_TYPE_EXPOSURE: > GrText (control_wid, gc, 20, 20, > "Click me", -1, GR_TFASCII); > break; > > case GR_EVENT_TYPE_BUTTON_DOWN: > GrClearWindow (control_wid , GR_TRUE); > if(write(pipe_fds[1], "1", 1) != 1) { > fprintf(stderr, "Couldn't write message to child\n"); > exit(1); > } > break; > } > } > > ****************************** > //SLAVE.C > #include <stdio.h> > #define MWINCLUDECOLORS > #include "microwin/nano-X.h" > > GR_WINDOW_ID slave_wid; > GR_GC_ID gc; > > void event_handler (GR_EVENT *event); > > int slave_fd; > > int main (void) > { > if ((slave_fd = GrOpen()) < 0) > { > fprintf (stderr, "GrOpen failed"); > exit (1); > } > > gc = GrNewGC(); > GrSetGCUseBackground (gc, GR_FALSE); > GrSetGCForeground (gc, RED); > > > slave_wid = GrNewWindowEx (GR_WM_PROPS_APPFRAME | > GR_WM_PROPS_CAPTION | > GR_WM_PROPS_CLOSEBOX, > "slave Window", > GR_ROOT_WINDOW_ID, > 150, 150, 200, 100, WHITE); > > GrRegisterInput(STDIN_FILENO); > > > GrSelectEvents (slave_wid, GR_EVENT_MASK_CLOSE_REQ| > GR_EVENT_TYPE_FDINPUT); > > GrMapWindow (slave_wid); > GrMainLoop (event_handler); > } > > void event_handler (GR_EVENT *event) > { > char in; > > switch (event->type) > { > case GR_EVENT_TYPE_CLOSE_REQ: > GrClose(); > exit (0); > > case GR_EVENT_TYPE_FDINPUT: > if(read(STDIN_FILENO, &in, 1) != 1) { > fprintf(stderr, "couldn't read event from parent\n"); > exit(1); > } > if(in == '1') { > GrText (slave_wid, gc, 50, 50, > "Button 1 pressed", -1, GR_TFASCII); > } else if(in == '2') { > GrText (slave_wid, gc, 50, 50, > "Button 2 pressed", -1, GR_TFASCII); > } else { > GrText (slave_wid, gc, 50, 50, > "Unknown button pressed", -1, GR_TFASCII); > } > break; > } > } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Re: [nanogui] No BLACK with True Types?
From: "Greg Haerr" ####@####.#### Date: 29 Jan 2002 17:08:33 -0000 Message-Id: <00e901c1a8e5$bba95b20$3aba46a6@xmission.com> : One problem: I'm using True Types, but I can't use the defined color BLACK : (with GrSetForeground) to write. With all other colors it works. BLACK also : works fine with the nano-X system fonts. I think this has to do with a kluge in engine/devfonts.c. Look for the GrArea() call and inspect. This will be fixed when we use the new blitters to draw the font cells. Regards, Greg : : I use the framebuffer device (Linux 2.4.3.) 8bpp. : : regards : Olaf : : : : Am Dienstag, 29. Januar 2002 17:32 schrieb Alex Holden: : > Henry Chea wrote: : > > Maybe point me to examples, docs, or perhaps edit my source code below to : > > show how to solve the problem? : > : > One way is to use a pipe to send events to the slave. : > : > Something along these lines (completely untested): : > : > file://control.c : > #include <unistd.h> : > #include <stdio.h> : > #define MWINCLUDECOLORS : > #include "microwin/nano-X.h" : > : > GR_WINDOW_ID control_wid; : > GR_GC_ID gc; : > : > int control_fd; : > int pipefds[2]; : > : > void event_handler (GR_EVENT *event); : > : > int main (void) : > { : > pid_t pid; : > : > if(pipe(pipefds) < 0) { : > fprintf(stderr, "pipe() failed\n"); : > exit(1); : > } : > : > if((pid = fork()) < 0) { : > fprintf(stderr, "fork() failed\n"); : > exit(1); : > } else if(pid > 0) { : > close(pipefds[0]); /* parent closes the output side */ : > } else { : > close(pipefds[1]); /* child closes the input side */ : > /* Set stdin to the output of the pipe: */ : > if(dup2(pipefds[0], STDIN_FILENO) != STDIN_FILENO) { : > fprintf(stderr, "dup2() failed\n"); : > exit(1); : > } : > close(pipefds[0]); : > if(execl("/usr/local/bin/SLAVE", "SLAVE", NULL) < 0) { : > fprintf(stderr, "execl() failed\n"); : > exit(1); : > } : > } : > : > if ((control_fd = GrOpen()) < 0) : > { : > fprintf (stderr, "GrOpen failed"); : > exit (1); : > } : > : > : > gc = GrNewGC(); : > GrSetGCUseBackground (gc, GR_FALSE); : > GrSetGCForeground (gc, BLUE); : > : > control_wid = GrNewWindowEx (GR_WM_PROPS_NOMOVE | : > GR_WM_PROPS_BORDER | : > GR_WM_PROPS_NOAUTOMOVE | : > GR_WM_PROPS_NOAUTORESIZE, : > "Control Window", : > GR_ROOT_WINDOW_ID, : > 0, 0, 150, 478, YELLOW); : > : > GrSelectEvents (control_wid, GR_EVENT_MASK_EXPOSURE | : > GR_EVENT_MASK_BUTTON_DOWN); : > : > GrMapWindow (control_wid); : > GrMainLoop (event_handler); : > } : > : > void event_handler (GR_EVENT *event) : > { : > switch (event->type) : > { : > case GR_EVENT_TYPE_EXPOSURE: : > GrText (control_wid, gc, 20, 20, : > "Click me", -1, GR_TFASCII); : > break; : > : > case GR_EVENT_TYPE_BUTTON_DOWN: : > GrClearWindow (control_wid , GR_TRUE); : > if(write(pipe_fds[1], "1", 1) != 1) { : > fprintf(stderr, "Couldn't write message to child\n"); : > exit(1); : > } : > break; : > } : > } : > : > ****************************** : > file://SLAVE.C : > #include <stdio.h> : > #define MWINCLUDECOLORS : > #include "microwin/nano-X.h" : > : > GR_WINDOW_ID slave_wid; : > GR_GC_ID gc; : > : > void event_handler (GR_EVENT *event); : > : > int slave_fd; : > : > int main (void) : > { : > if ((slave_fd = GrOpen()) < 0) : > { : > fprintf (stderr, "GrOpen failed"); : > exit (1); : > } : > : > gc = GrNewGC(); : > GrSetGCUseBackground (gc, GR_FALSE); : > GrSetGCForeground (gc, RED); : > : > : > slave_wid = GrNewWindowEx (GR_WM_PROPS_APPFRAME | : > GR_WM_PROPS_CAPTION | : > GR_WM_PROPS_CLOSEBOX, : > "slave Window", : > GR_ROOT_WINDOW_ID, : > 150, 150, 200, 100, WHITE); : > : > GrRegisterInput(STDIN_FILENO); : > : > : > GrSelectEvents (slave_wid, GR_EVENT_MASK_CLOSE_REQ| : > GR_EVENT_TYPE_FDINPUT); : > : > GrMapWindow (slave_wid); : > GrMainLoop (event_handler); : > } : > : > void event_handler (GR_EVENT *event) : > { : > char in; : > : > switch (event->type) : > { : > case GR_EVENT_TYPE_CLOSE_REQ: : > GrClose(); : > exit (0); : > : > case GR_EVENT_TYPE_FDINPUT: : > if(read(STDIN_FILENO, &in, 1) != 1) { : > fprintf(stderr, "couldn't read event from parent\n"); : > exit(1); : > } : > if(in == '1') { : > GrText (slave_wid, gc, 50, 50, : > "Button 1 pressed", -1, GR_TFASCII); : > } else if(in == '2') { : > GrText (slave_wid, gc, 50, 50, : > "Button 2 pressed", -1, GR_TFASCII); : > } else { : > GrText (slave_wid, gc, 50, 50, : > "Unknown button pressed", -1, GR_TFASCII); : > } : > break; : > } : > } : : --------------------------------------------------------------------- : To unsubscribe, e-mail: ####@####.#### : For additional commands, e-mail: ####@####.#### : | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[<<] [<] Page 1 of 1 [>] [>>] |