nanogui: No BLACK with True Types?


Previous by date: 29 Jan 2002 17:08:33 -0000 No BLACK with True Types?, Olaf Winne
Next by date: 29 Jan 2002 17:08:33 -0000 Re: Newbie question--passing events between program s, Greg Haerr
Previous in thread: 29 Jan 2002 17:08:33 -0000 No BLACK with True Types?, Olaf Winne
Next in thread:

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: ####@####.####
: 


Previous by date: 29 Jan 2002 17:08:33 -0000 No BLACK with True Types?, Olaf Winne
Next by date: 29 Jan 2002 17:08:33 -0000 Re: Newbie question--passing events between program s, Greg Haerr
Previous in thread: 29 Jan 2002 17:08:33 -0000 No BLACK with True Types?, Olaf Winne
Next in thread:


Powered by ezmlm-browse 0.20.