X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/667418327423ba116d24751926a95a2f1235849c..ea3d0f30b8e44952b1b9ac3e2f5b2a08cd65ca48:/Constructor/include/or.h?ds=sidebyside diff --git a/Constructor/include/or.h b/Constructor/include/or.h index 9da1cd2..77d996f 100644 --- a/Constructor/include/or.h +++ b/Constructor/include/or.h @@ -5,13 +5,55 @@ class Or : public CItem { public: - Or(); + ///Constructor. Se puede definir la orientacion de la imagen de la compuerta. + Or(int orientacion=0); + + ///Destructor. virtual ~Or(); + + ///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 vec_connector; + + ///imagenes de la compuerta en sus 4 posiciones. Glib::RefPtr imageN; // 0 Glib::RefPtr imageS; // 1 Glib::RefPtr imageE; // 2