#pragma once #include #include #include "lib_begin.h" namespace cgv { namespace gui { // abstract class to define an element that can change its size // and position class CGV_API resizable { public: // get the position of the element virtual void get_position(int &pos_x, int &pos_y) = 0; // get the extents of an element virtual void get_extents(int &width, int &height) = 0; // set the position void set_position(int pos_x, int pos_y); // set the dimensions void set_extents(int width, int height); // signal other elements can connect to if they are // interested in size or position changes that come // from the outside cgv::signal::signal extents_position_change; protected: // method for changing the size of the element virtual void set_extents_request(int width, int height) = 0; // method for changing the position of the element virtual void set_position_request(int pos_x, int pos_y) = 0; }; } } #include