X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/711815d393cddb271ec2ef19cca924ed654fdcf1..ea7708f0d91b00a54cc5f136a67e9f9bd272329d:/Constructor/src/item.cpp?ds=sidebyside diff --git a/Constructor/src/item.cpp b/Constructor/src/item.cpp index b4bf541..5f5ac15 100644 --- a/Constructor/src/item.cpp +++ b/Constructor/src/item.cpp @@ -4,10 +4,12 @@ bool CItem::logic_connect = false; int CItem::gate_id = -1; -CItem::CItem(const char *filename):Gtk::DrawingArea() +CItem::CItem(const char *filename) { image = Gdk::Pixbuf::create_from_file(filename); set_size_request(image->get_width(), image->get_height()); + + add_events(Gdk::EXPOSURE_MASK); } CItem::CItem() @@ -36,9 +38,24 @@ CItem::~CItem() std::cout << "Item Die" << std::endl; } +void CItem::on_realize() +{ + Gtk::DrawingArea::on_realize(); + Glib::RefPtr window = get_window(); + gc = Gdk::GC::create(window); + + Glib::RefPtr colormap = get_colormap(); + + red = Gdk::Color("red"); + blue = Gdk::Color("blue"); + + colormap->alloc_color(red); + colormap->alloc_color(blue); +} + bool CItem::on_expose_event(GdkEventExpose* event) { - image->render_to_drawable ( get_window(), get_style()->get_black_gc(), 0, 0, 0, 0, image->get_width() ,image->get_height() , + get_window()->draw_pixbuf(gc, image, 0, 0, 0, 0, image->get_width() ,image->get_height(), Gdk::RGB_DITHER_NONE, 0, 0); // XXX Esto no deberia ser necesario! en todo caso devolves false en @@ -172,3 +189,19 @@ void CItem::get_out_logic_connect_position(int& _a, int& _b) void CItem::update_logic_position() { } + +void CItem::draw_connectors() +{ + GdkEventExpose event; + if ( in_x != -1 ) { + CItem::on_expose_event(&event); + Glib::RefPtr window = get_window(); + + gc->set_foreground(red); + gc->set_background(red); + window->draw_rectangle(gc, 1, in_x-5-x, in_y-y, 10, 10); + gc->set_foreground(blue); + gc->set_background(blue); + window->draw_rectangle(gc, 1, out_x-5-x, out_y-y-10, 10, 10); + } +}