]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Constructor/include/cistern.h
no se pueden repetir los nombres de los items
[z.facultad/75.42/plaqui.git] / Constructor / include / cistern.h
1 #ifndef _CISTERN_H_
2 #define _CISTERN_H_
3
4 #include <iostream>
5 #include "item.h"
6
7 class CisternPtyWnd;
8
9 class Cistern : public CItem {
10         public:
11                 /**Constructor
12                 */
13                 Cistern(int orientacion=0);
14                 /**Destructor
15                 */
16                 virtual ~Cistern();
17                 /**Redefiniciones de las funciones de CItem
18                 */
19                 virtual bool on_button_press_event(GdkEventButton *event);
20                 virtual void on_menu_popup_rotar();
21                 virtual void on_menu_popup_propiedades();
22                 
23                 /** Funciones para obtener y setear los atributos del Tanque
24                 */
25                 void set_capacidad(double _cap);
26                 void set_contenido_inicial(double _ini);
27                 void set_liquid_color(Gdk::Color _color);
28                 double get_contenido_inicial();
29                 double get_capacidad();
30                 Gdk::Color get_liquid_color();
31                 /**El item se guarda en formato xml en el archivo pasado por parametro
32                 */
33                 virtual void save(FILE *archivo);
34                 /**Verifica si en sus conectores hay alguien conectado, y que tipo de conexion tiene para ver si es compatible con El. 
35                 */
36                 virtual bool check_connection();
37                 /**Pone sus conectores por defecto
38                 */
39                 virtual void set_default_connector();
40                 /**Devuelve el tipo de conector que posee en las coordenadas (_a, _b) segun su orientacion
41                 */
42                 virtual ConnectorType get_connector_type(int _a, int _b);       
43                 
44                 /**Setea las coordenadas _a, _b en la posicion donde se deben conectar los cables logicos a la entrada.
45                 */
46                 virtual void get_in_logic_connect_position(int& _a, int& _b);
47
48                 /**Setea las coordenadas _a, _b en la posicion donde se deben conectar los cables logicos a la salida.
49                 */              
50                 virtual void get_out_logic_connect_position(int& _a, int& _b);
51
52                 /**Actualiza la posicion de los conectores logicos ante un movimiento.
53                 */
54                 virtual void update_logic_position();
55                 
56                 /**Detecta si el click fue en el area de entrada o salida logica, devuelve UNDEF si no fue ninguna de las dos
57                 */
58                 ConnectorType detect_click_position(int _a, int _b);
59                 /**Dibuja los conectores logicos, que seran ambos azules pues son salidas.
60                 */
61                 virtual void draw_connectors();
62         protected:
63                 /**Atributos que definen su comportamiento
64                 */
65                 double capacidad, contenido_inicial;
66                 /**Color del liquido almacenado
67                 */
68                 Gdk::Color liquid_color;
69                 /**Imagenes en sus 2 posiciones
70                 */
71                 Glib::RefPtr<Gdk::Pixbuf> imageE; // 0 
72                 Glib::RefPtr<Gdk::Pixbuf> imageO; // 1
73                 Glib::RefPtr<Gdk::Pixbuf> null; 
74                 /**Puntero a la ventana de propiedades
75                 */
76                 CisternPtyWnd *cistern_pty_wnd;
77 };
78 #endif