Пример #1
0
static gboolean
preview_expose(GtkWidget *widget, GdkEventExpose *event)
{
   cairo_t *cr;
   gint width = preview_get_width (widget);
   gint height = preview_get_height (widget);

   cr = gdk_cairo_create (event->window);
   gdk_cairo_region (cr, event->region);
   cairo_clip (cr);
   cairo_set_line_width (cr, 1.);
   draw_grid (cr, width, height);
   
   draw_shapes (cr);

   if (_tmp_obj)
   {
      /* this is a bit of a hack */
      gdouble dash = 4.;
      _tmp_obj->selected |= 4;
      cairo_set_source_rgb (cr, 1., 0., 1.);
      cairo_set_dash (cr, &dash, 1, dash);
      object_draw (_tmp_obj, cr);
   }

   cairo_destroy (cr);
   return FALSE;
}
Пример #2
0
internal void 
render_all(SDL_Renderer *renderer, 
          SDL_Texture *screen, 
          PT_Console *console) 
{
    PT_ConsoleClear(console);

    // Render the map
    for (u32 y = 0; y < MAP_HEIGHT; y++) {
        for (u32 x = 0; x < MAP_WIDTH; x++) {
            if (map[x][y].blockSight) {
                PT_ConsolePutCharAt(console, '#', x, y, COLOR_DARK_WALL, 0x000000ff);
            } else {
                PT_ConsolePutCharAt(console, '.', x, y, COLOR_DARK_FLOOR, 0x000000ff);
            }
        }
    }

    object_list_item *item = gameObjects.first;
    while (item != NULL) {
        object_draw(console, item->object);
        item = item->next;
    }

    SDL_UpdateTexture(screen, NULL, console->pixels, console->width * sizeof(u32));
    SDL_RenderClear(renderer);
    SDL_RenderCopy(renderer, screen, NULL, NULL);
    SDL_RenderPresent(renderer);
}