]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Constructor/include/item.h
Se agregan mas propiedades svn:ignore.
[z.facultad/75.42/plaqui.git] / Constructor / include / item.h
index c7a4d4791b26786f8f1e9216bd1df9316f14f9a7..8ffd14e0e2f02b6a82ab50223b50844039c90c0d 100644 (file)
 #include "itemptywnd.h"
 #include "workplace.h"
 
 #include "itemptywnd.h"
 #include "workplace.h"
 
+/**Esta es la clase padre de todos los items que puedan aparecer
+  *Aca estan definidos todos los comportamientos en comun y en 
+  *algunos casos hay funciones abstractas para que cada item defina
+  * su propio comportamiento.
+*/
+
 ///Tipo de estado en el que pueden estar los conectores de un item
 typedef enum { UNDEF, IN, OUT } ConnectorType;
 
 ///Tipo de estado en el que pueden estar los conectores de un item
 typedef enum { UNDEF, IN, OUT } ConnectorType;
 
+///Tipo que indica que conector de alguna compuerta esta conectado con algun item. Usado para cargar el XML.
+typedef struct {
+       ConnectorType type;
+       Glib::ustring name_dest;
+}t_logic_connector;
+
 ///Clase que define un conector del item
 class Connector {
        public: 
 ///Clase que define un conector del item
 class Connector {
        public: 
@@ -94,7 +106,15 @@ public:
        ///TODO: hacer abstractas estas funciones... en item no hacen nada....
        virtual void set_default_connector();   
        virtual ConnectorType get_connector_type( int _a, int _b );
        ///TODO: hacer abstractas estas funciones... en item no hacen nada....
        virtual void set_default_connector();   
        virtual ConnectorType get_connector_type( int _a, int _b );
-       virtual void get_logic_connect_position(int& _a, int& _b);
+       
+       /**Devuelve en _a y _b la posicion de los conectores logicos del item segun su posicion.
+       */
+       virtual void get_in_logic_connect_position(int& _a, int& _b);
+       virtual void get_out_logic_connect_position(int& _a, int& _b);
+       
+       /**Actualiza las posiciones de los conectores ante un movimiento o rotacion del item.
+       */
+       virtual void update_logic_position();
        
        ///Puntero al area de trabajo de la ventana principal
        WorkPlace *workplace;
        
        ///Puntero al area de trabajo de la ventana principal
        WorkPlace *workplace;
@@ -119,7 +139,9 @@ public:
        
        ///Indica si puede realizarse la conexion logica con una compuerta
        static bool logic_connect;
        
        ///Indica si puede realizarse la conexion logica con una compuerta
        static bool logic_connect;
-       static int quien;
+       
+       ///Almacena el ID de la compuerta logica seleccionada
+       static int gate_id;
        
        /**Vector de connectores donde se mantiene la siguiente referencia:
         * indice 0 = "arriba/izquierda" para la exclusa, el tubo, el codo, el empalme y el tanque.
        
        /**Vector de connectores donde se mantiene la siguiente referencia:
         * indice 0 = "arriba/izquierda" para la exclusa, el tubo, el codo, el empalme y el tanque.