objmap_control_point.hpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Flexlay - A Generic 2D Game Editor
  2. // Copyright (C) 2002 Ingo Ruhnke <grumbel@gmail.com>
  3. //
  4. // This program is free software: you can redistribute it and/or modify
  5. // it under the terms of the GNU General Public License as published by
  6. // the Free Software Foundation, either version 3 of the License, or
  7. // (at your option) any later version.
  8. //
  9. // This program is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU General Public License
  15. // along with this program. If not, see <http://www.gnu.org/licenses/>.
  16. #ifndef HEADER_FLEXLAY_OBJMAP_CONTROL_POINT_HPP
  17. #define HEADER_FLEXLAY_OBJMAP_CONTROL_POINT_HPP
  18. #include <boost/signals2.hpp>
  19. #include "math/rect.hpp"
  20. #include "meta_data.hpp"
  21. #include "sprite.hpp"
  22. class GraphicContext;
  23. class ObjMapControlPointImpl;
  24. /** An ObjMapControlPoint is used to control a property of an object,
  25. such as size, rotation or scaling. ControlPoints get drawn around
  26. the object in a size which is independend of the current zoom
  27. level and can be draged around with the mous. */
  28. class ObjMapControlPoint
  29. {
  30. private:
  31. public:
  32. ObjMapControlPoint() : impl() {}
  33. ObjMapControlPoint(Sprite sprite_, Pointf pos_, MetaData data_);
  34. Pointf get_pos() const;
  35. void set_pos(const Pointf& p);
  36. void set_pos_raw(const Pointf& p);
  37. void draw(GraphicContext& gc);
  38. Rect get_bound_rect() const;
  39. boost::signals2::signal<void (Pointf)>& sig_set_pos();
  40. bool is_null() const { return !impl.get(); }
  41. private:
  42. std::shared_ptr<ObjMapControlPointImpl> impl;
  43. };
  44. #endif
  45. /* EOF */