Exemplo n.º 1
0
WINDOW display_image(IMAGE *image,
                     const char *title,
                     INT32 x,
                     INT32 y,
                     BOOL8 wait) {
  WINDOW im_window;
  INT16 i;
  GRAPHICS_EVENT event;          //output event

                                 // xmin xmax ymin ymax
  im_window = create_window (title, SCROLLINGWIN, x, y, 10 * image->get_xsize (), 10 * image->get_ysize (), 0, image->get_xsize (), 0, image->get_ysize (),
    TRUE, FALSE, FALSE, TRUE);   // down event & key only

  clear_view_surface(im_window); 
  show_sub_image (image,
    0, 0,
    image->get_xsize (), image->get_ysize (), im_window, 0, 0);

  line_color_index(im_window, RED); 
  for (i = 1; i < image->get_xsize (); i++) {
    move2d (im_window, i, 0);
    draw2d (im_window, i, image->get_ysize ());
  }
  for (i = 1; i < image->get_ysize (); i++) {
    move2d (im_window, 0, i);
    draw2d (im_window, image->get_xsize (), i);
  }
  overlap_picture_ops(TRUE); 

  if (wait)
    await_event(im_window, TRUE, ANY_EVENT, &event); 

  return im_window;
}
Exemplo n.º 2
0
char window_wait(  /*move pen */
                 void *win) {
  WINDOW window = (WINDOW) win;
  GRAPHICS_EVENT event;

  await_event(window, TRUE, ANY_EVENT, &event); 
  if (event.type == KEYPRESS_EVENT)
    return event.key;
  else
    return '\0';
}
Exemplo n.º 3
0
void display_images(IMAGE &clip_image, IMAGE &scaled_image) { 
  WINDOW clip_im_window;         //window for debug
  WINDOW scale_im_window;        //window for debug
  INT16 i;
  GRAPHICS_EVENT event;          //                                                      c;

                                 // xmin xmax ymin ymax
  clip_im_window = create_window ("Clipped Blob", SCROLLINGWIN, editor_word_xpos - 20, editor_word_ypos - 100, 5 * clip_image.get_xsize (), 5 * clip_image.get_ysize (), 0, clip_image.get_xsize (), 0, clip_image.get_ysize (),
    TRUE, FALSE, FALSE, TRUE);   // down event & key only

  clear_view_surface(clip_im_window); 
  show_sub_image (&clip_image,
    0, 0,
    clip_image.get_xsize (), clip_image.get_ysize (),
    clip_im_window, 0, 0);

  line_color_index(clip_im_window, RED); 
  for (i = 1; i < clip_image.get_xsize (); i++) {
    move2d (clip_im_window, i, 0);
    draw2d (clip_im_window, i, clip_image.get_xsize ());
  }
  for (i = 1; i < clip_image.get_ysize (); i++) {
    move2d (clip_im_window, 0, i);
    draw2d (clip_im_window, clip_image.get_xsize (), i);
  }

                                 // xmin xmax ymin ymax
  scale_im_window = create_window ("Scaled Blob", SCROLLINGWIN, editor_word_xpos + 300, editor_word_ypos - 100, 5 * scaled_image.get_xsize (), 5 * scaled_image.get_ysize (), 0, scaled_image.get_xsize (), 0, scaled_image.get_ysize (),
    TRUE, FALSE, FALSE, TRUE);   // down event & key only

  clear_view_surface(scale_im_window); 
  show_sub_image (&scaled_image,
    0, 0,
    scaled_image.get_xsize (), scaled_image.get_ysize (),
    scale_im_window, 0, 0);

  line_color_index(scale_im_window, RED); 
  for (i = 1; i < scaled_image.get_xsize (); i++) {
    move2d (scale_im_window, i, 0);
    draw2d (scale_im_window, i, scaled_image.get_xsize ());
  }
  for (i = 1; i < scaled_image.get_ysize (); i++) {
    move2d (scale_im_window, 0, i);
    draw2d (scale_im_window, scaled_image.get_xsize (), i);
  }

  overlap_picture_ops(TRUE); 
  await_event(scale_im_window, TRUE, ANY_EVENT, &event); 
  destroy_window(clip_im_window); 
  destroy_window(scale_im_window); 
}
Exemplo n.º 4
0
DLLSYM WINDOW await_key(             /*wait for key */
                        WINDOW win,  /*window to wait on */
                        BOOL8 wait,  /*waiting flag */
                        char &c      /*return character */
                       ) {
  GRAPHICS_EVENT event;          /*return event */

  win = await_event (win, wait, KEYPRESS_EVENT, &event);
  if (event.type == DESTROY_EVENT)
    return NULL;                 //was destroyed
  if (win != NULL)
    c = event.key;               /*get keypress */
  return win;
}
Exemplo n.º 5
0
DLLSYM WINDOW await_click(             /*wait for click */
                          WINDOW win,  /*window to wait on */
                          BOOL8 wait,  /*waiting flag */
                          float &x,    /*coords of click */
                          float &y     /*coords of click */
                         ) {
  GRAPHICS_EVENT event;          /*return event */

  win = await_event (win, wait, DOWN_EVENT, &event);
  if (event.type == DESTROY_EVENT)
    return NULL;                 //was destroyed
  if (win != NULL) {
    x = event.x;                 /*get coords */
    y = event.y;
  }
  return win;
}
Exemplo n.º 6
0
DLLSYM WINDOW await_selection(              /*wait for selection */
                              WINDOW win,   /*window to wait on */
                              BOOL8 wait,   /*waiting flag */
                              float &xmin,  /*coords of selection */
                              float &ymin,  /*coords of selection */
                              float &xmax,  /*coords of selection */
                              float &ymax   /*coords of selection */
                             ) {
  GRAPHICS_EVENT event;          /*return event */

  win = await_event (win, wait, SELECT_EVENT, &event);
  if (event.type == DESTROY_EVENT)
    return NULL;                 //was destroyed
  if (win != NULL) {
    xmin = event.x;              /*get coords */
    ymin = event.y;
    xmax = event.xmax;           /*get coords */
    ymax = event.ymax;
  }
  return win;
}
Exemplo n.º 7
0
void display_images(IMAGE *image_w, IMAGE *image_n, IMAGE *match_image) { 
  WINDOW w_im_window;
  WINDOW n_im_window;
  WINDOW match_window;
  GRAPHICS_EVENT event;          //output event
  INT16 i;

                                 // xmin xmax ymin ymax
  w_im_window = create_window ("Image 1", SCROLLINGWIN, 20, 100, 10 * image_w->get_xsize (), 10 * image_w->get_ysize (), 0, image_w->get_xsize (), 0, image_w->get_ysize (),
    TRUE, FALSE, FALSE, TRUE);   // down event & key only

  clear_view_surface(w_im_window); 
  show_sub_image (image_w,
    0, 0,
    image_w->get_xsize (), image_w->get_ysize (),
    w_im_window, 0, 0);

  line_color_index(w_im_window, RED); 
  for (i = 1; i < image_w->get_xsize (); i++) {
    move2d (w_im_window, i, 0);
    draw2d (w_im_window, i, image_w->get_ysize ());
  }
  for (i = 1; i < image_w->get_ysize (); i++) {
    move2d (w_im_window, 0, i);
    draw2d (w_im_window, image_w->get_xsize (), i);
  }

                                 // xmin xmax ymin ymax
  n_im_window = create_window ("Image 2", SCROLLINGWIN, 240, 100, 10 * image_n->get_xsize (), 10 * image_n->get_ysize (), 0, image_n->get_xsize (), 0, image_n->get_ysize (),
    TRUE, FALSE, FALSE, TRUE);   // down event & key only

  clear_view_surface(n_im_window); 
  show_sub_image (image_n,
    0, 0,
    image_n->get_xsize (), image_n->get_ysize (),
    n_im_window, 0, 0);

  line_color_index(n_im_window, RED); 
  for (i = 1; i < image_n->get_xsize (); i++) {
    move2d (n_im_window, i, 0);
    draw2d (n_im_window, i, image_n->get_ysize ());
  }
  for (i = 1; i < image_n->get_ysize (); i++) {
    move2d (n_im_window, 0, i);
    draw2d (n_im_window, image_n->get_xsize (), i);
  }
  overlap_picture_ops(TRUE); 

                                 // xmin xmax ymin ymax
  match_window = create_window ("Match Result", SCROLLINGWIN, 460, 100, 10 * match_image->get_xsize (), 10 * match_image->get_ysize (), 0, match_image->get_xsize (), 0, match_image->get_ysize (),
    TRUE, FALSE, FALSE, TRUE);   // down event & key only

  clear_view_surface(match_window); 
  show_sub_image (match_image,
    0, 0,
    match_image->get_xsize (), match_image->get_ysize (),
    match_window, 0, 0);

  line_color_index(match_window, RED); 
  for (i = 1; i < match_image->get_xsize (); i++) {
    move2d (match_window, i, 0);
    draw2d (match_window, i, match_image->get_ysize ());
  }
  for (i = 1; i < match_image->get_ysize (); i++) {
    move2d (match_window, 0, i);
    draw2d (match_window, match_image->get_xsize (), i);
  }
  overlap_picture_ops(TRUE); 

  await_event(match_window, TRUE, ANY_EVENT, &event); 
  destroy_window(w_im_window); 
  destroy_window(n_im_window); 
  destroy_window(match_window); 
}
Exemplo n.º 8
0
Arquivo: main.c Projeto: rovaughn/calm
int main(void) {
    buffer_t buf = buf_new(1);
    screen_t fake, real;

    int rows, cols;
    read_dimensions(&rows, &cols);

    fake_screen_init(&fake, rows, cols);
    real_screen_init(&buf, &real, rows, cols);
    prepare_events();

    int x = 0,
        y = 0;
    char text[cols*rows];
    bool marks[cols*rows];

    memset(text, ' ', sizeof text);
    memset(marks, 0, sizeof marks);

await: {
    event_t e = await_event();

    switch (e.type) {
    case E_SIG:
        goto quit;
    break;
    case E_KEY:
        switch (e.key) {
        case '\b':
            if (x > 0) x -= 1;
        break;
        case '\n': x  = 0; y += 1; break;
        case '~':
            marks[x + y*cols] = !marks[x + y*cols];
            x++;
        break;
        default:
            text[x + y*cols] = e.key;
            x++;
        break;
        }
    break;
    case E_UP: y -= 1; break;
    case E_DOWN: y += 1; break;
    case E_LEFT: x -= 1; break;
    case E_RIGHT: x += 1; break;
    default:
    break;
    }

    int cx, cy;
    for (cx = 0; cx < cols; cx++) {
        for (cy = 0; cy < rows; cy++) {
            fake.cells[cx + cy*cols].codes[0] = text[cx + cy*cols];
        }
    }

    int j;
    for (j = 0; j < cols*rows; j++) {
        if (marks[j]) {
            fake.cells[j].style.back.rgb = 0xff0000;
        }
    }

    fake.cursor.x = x;
    fake.cursor.y = y;
    fake.cursor.visible = true;

    screen_flush(&buf, &fake, &real);
    write(STDOUT_FILENO, buf.data, buf.used);
    buf.used = 0;
    fake_screen_reset(&fake, 25, 80);

    goto await;
}

quit:
    cleanup_events();
    real_screen_cleanup(&buf, &real);
    write(STDOUT_FILENO, buf.data, buf.used);
    
    screen_free(&fake);
    screen_free(&real);
    buf_free(&buf);

    return 0;
}