class And : public CItem {
public:
+ ///Constructor. Se puede definir la orientacion de la imagen de la compuerta.
And(int orientacion=0);
+
+ ///Destructor.
virtual ~And();
+
+ ///Evento invocado al presionar un boton del mouse.
virtual bool on_button_press_event(GdkEventButton *event);
+
+ ///Rota la imagen 90 grados en sentido horario
virtual void on_menu_popup_rotar();
+
+ ///La compuerta guarda su estado en el archivo en formato XML.
virtual void save(FILE *archivo);
+
+ ///Verifica con quien esta conectada.
virtual bool check_connection();
+
+ ///Devuelve IN si el click fue en la zona de entrada, o OUT si fue en la zona de salida logica.
virtual ConnectorType detect_click_position(int _a, int _b);
+
+ ///Actualiza las posiciones de los conectores logicos ante una rotacion.
virtual void update_logic_position();
+
+ ///Devuelve la posicion del conector de entrada en _a, _b.
virtual void get_in_logic_connect_position(int& _a, int& _b);
+
+ ///Devuelve la posicion del conector de salida en _a,_b.
virtual void get_out_logic_connect_position(int& _a, int& _b);
+
+ ///Devuelve el estado del conector logico.
+ virtual bool get_out_logic_connect();
+
+ ///Setea el estado del conector logico.
virtual void set_out_connected(bool _o);
+
+ ///Dibuja los conectores logicos segun su orientacion.
+ virtual void draw_connectors();
private:
+ ///posiciones de los conectores logicos.
int in_x, in_y, out_x, out_y;
+
+ ///Estado de los conectores logicos.
bool out_connected;
+
+ ///Vector de conectores utilizados para verificar con quien esta conectado.
std::vector<t_logic_connector> vec_connector;
+
+ ///imagenes de la compuerta en sus 4 posiciones.
Glib::RefPtr<Gdk::Pixbuf> imageN; // 0
Glib::RefPtr<Gdk::Pixbuf> imageS; // 1
Glib::RefPtr<Gdk::Pixbuf> imageE; // 2