void
ObjectSelectorList::draw(DrawingContext& parent_gc)
{
  DrawingContext& gc = *drawing_context;
  gc.clear();
  gc.fill_screen(Color(100, 100, 100));

  if (set)
  {
    gc.push_modelview();
    gc.translate(0, static_cast<int>(offset));

    for(Objects::const_iterator i = set->get_objects().begin(); i != set->get_objects().end(); ++i)
    {
      int x = (i - set->get_objects().begin()) % 5;
      int y = (i - set->get_objects().begin()) / 5;

      gc.draw((*i)->thumbnail, Vector2i(x * 48, y * 48));

      gc.draw_rect(Rect(x * 48,      y * 48, 
                        x * 48 + 48, y * 48 + 48), 
                   Color(155,155,155));

      if (has_mouse_over() && current_object != -1 && (i - set->get_objects().begin()) == current_object)
      {
        gc.draw_fillrect(Rect(x * 48,      y * 48, 
                              x * 48 + 48, y * 48 + 48), 
                         Color(255,255,255, 100));

        gc.draw_rect(Rect(x * 48,      y * 48, 
                          x * 48 + 48, y * 48 + 48), 
                     Color(255,255,255));
      }
    }
  
    gc.pop_modelview();
  }
  parent_gc.draw(gc);

  if (set && mode == OBJECT_DRAG)
  {
    Sprite sprite = set->get_objects()[current_object]->sprite;
    parent_gc.draw(sprite,
                   real_mouse_pos
                   - Vector2i(sprite.get_width()/2, sprite.get_height()/2)
                   + sprite.get_offset(), 
                   2000.0f);
  }
}
void
TileEditor::draw()
{
  CL_Display::push_translate(get_screen_x(), get_screen_x());

  //no_tile.draw(0, 0);
  CL_Display::fill_rect(CL_Rect(0, 0, 32, 32), CL_Color(155, 0, 155));

  if (tile)
  {
    tile->get_sprite().draw(0, 0);
    CL_Display::flush();
    for(int tile_y = 0; tile_y < 8; ++tile_y)
      for(int tile_x = 0; tile_x < 8; ++tile_x)
      {
        if (tile->get_col(tile_x, tile_y))
        {
          CL_Display::fill_rect(CL_Rect(tile_x*16, tile_y*16,
                                        tile_x*16 + 16, tile_y*16 + 16),
                                CL_Color(255, 0, 0, 128));
        }
      }
    CL_Display::flush();
    if (has_mouse_over())
    {
      CL_Display::fill_rect(CL_Rect(CL_Point(int(mouse_pos.x)/16 * 16, 
                                             int(mouse_pos.y)/16 * 16),
                                    CL_Size(16, 16)),
                            CL_Color(255, 255, 255, 128));
    }
  }
  else
  {
  }

  CL_Display::pop_modelview();
}