X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fduckmatic.h;h=68cad6165d05f4d4e868369197c48f11a3690715;hb=c34eaa5441242b3e9a7b7645e9ee4983d14eae85;hp=d7680db66bd24d03c156ddf9e29a66b4e3a1f98e;hpb=02252941b29de64037116f4d37991a38d9ff0d94;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/duckmatic.h b/synfig-studio/trunk/src/gtkmm/duckmatic.h index d7680db..68cad61 100644 --- a/synfig-studio/trunk/src/gtkmm/duckmatic.h +++ b/synfig-studio/trunk/src/gtkmm/duckmatic.h @@ -5,16 +5,17 @@ ** $Id: duckmatic.h,v 1.1.1.1 2005/01/07 03:34:36 darco Exp $ ** ** \legal -** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley ** -** This software and associated documentation -** are CONFIDENTIAL and PROPRIETARY property of -** the above-mentioned copyright holder. +** This package is free software; you can redistribute it and/or +** modify it under the terms of the GNU General Public License as +** published by the Free Software Foundation; either version 2 of +** the License, or (at your option) any later version. ** -** You may not copy, print, publish, or in any -** other way distribute this software without -** a prior written agreement with -** the copyright holder. +** This package is distributed in the hope that it will be useful, +** but WITHOUT ANY WARRANTY; without even the implied warranty of +** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +** General Public License for more details. ** \endlegal */ /* ========================================================================= */ @@ -80,7 +81,7 @@ namespace studio class CanvasView; class Duckmatic; - + class DuckDrag_Base : public etl::shared_object { public: @@ -114,11 +115,11 @@ class Duckmatic { friend class DuckDrag_Base; friend class DuckDrag_Translate; - + /* -- ** -- P U B L I C T Y P E S --------------------------------------------- */ - + public: #ifdef HASH_MAP_H @@ -136,13 +137,13 @@ typedef std::map > DuckDataMap; struct Bezier; class Push; - + friend class Push; - + typedef Duck::Type Type; - + typedef std::list GuideList; - + /* -- ** -- P R I V A T E D A T A --------------------------------------------- */ @@ -163,7 +164,7 @@ private: synfig::GUID last_duck_guid; - std::list > bezier_list_; + std::list > bezier_list_; //! I cannot recall what this is for //synfig::Vector snap; @@ -177,12 +178,12 @@ private: sigc::signal signal_grid_changed_; mutable sigc::signal signal_sketch_saved_; - + GuideList guide_list_x_; GuideList guide_list_y_; mutable synfig::String sketch_filename_; - + /* -- ** -- P R O T E C T E D D A T A ----------------------------------------- */ @@ -207,16 +208,16 @@ protected: bool show_persistant_strokes; bool axis_lock; - + /* -- ** -- P R I V A T E M E T H O D S --------------------------------------- */ private: - + synfig::Vector last_translate_; synfig::Vector drag_offset_; - + //etl::handle selected_duck; @@ -225,7 +226,7 @@ private: */ public: - + Duckmatic(); virtual ~Duckmatic(); @@ -242,13 +243,13 @@ public: void set_guide_snap(bool x=true); bool get_guide_snap()const { return guide_snap; } void toggle_guide_snap() { set_guide_snap(!get_guide_snap()); } - + //! Sets the state of the grid snap flag void set_grid_snap(bool x=true); - + //! Gets the state of the grid snap flag bool get_grid_snap()const { return grid_snap; } - + void enable_grid_snap() { set_grid_snap(true); } void disable_grid_snap() { set_grid_snap(false); } @@ -256,30 +257,30 @@ public: void toggle_grid_snap() { set_grid_snap(!grid_snap); } synfig::Point snap_point_to_grid(const synfig::Point& x, float radius=0.1)const; - + bool get_show_persistant_strokes()const { return show_persistant_strokes; } void set_show_persistant_strokes(bool x); //! Sets the size of the grid void set_grid_size(const synfig::Vector &s); - + //! Returns the size of the grid const synfig::Vector &get_grid_size()const { return grid_size; } - - + + const synfig::Time &get_time()const { return cur_time; } bool get_axis_lock()const { return axis_lock; } void set_axis_lock(bool x) { axis_lock=x; } - + void set_time(synfig::Time x) { cur_time=x; } bool is_duck_group_selectable(const etl::handle& x)const; - - //const DuckMap& duck_map()const { return duck_map; } + + //const DuckMap& duck_map()const { return duck_map; } DuckList get_duck_list()const; - - const std::list >& bezier_list()const { return bezier_list_; } + + const std::list >& bezier_list()const { return bezier_list_; } const std::list >& stroke_list()const { return stroke_list_; } @@ -291,13 +292,13 @@ public: etl::handle get_selected_duck()const; DuckList get_selected_ducks()const; - + //! Returns \a true if the given duck is currently selected bool duck_is_selected(const etl::handle &duck)const; void refresh_selected_ducks(); - + void clear_selected_ducks(); int count_selected_ducks()const; @@ -305,23 +306,23 @@ public: void toggle_select_duck(const etl::handle &duck); void select_duck(const etl::handle &duck); - + void select_ducks_in_box(const synfig::Vector& tl,const synfig::Vector& br); void unselect_duck(const etl::handle &duck); void start_duck_drag(const synfig::Vector& offset); - void translate_selected_ducks(const synfig::Vector& vector); + void translate_selected_ducks(const synfig::Vector& vector); bool end_duck_drag(); - void signal_edited_selected_ducks(); + void signal_edited_selected_ducks(); + + void signal_user_click_selected_ducks(int button); - void signal_user_click_selected_ducks(int button); - etl::handle find_similar_duck(etl::handle duck); etl::handle add_similar_duck(etl::handle duck); - + void add_stroke(etl::smart_ptr > stroke_point_list, const synfig::Color& color=synfig::Color(0,0,0)); void add_persistant_stroke(etl::smart_ptr > stroke_point_list, const synfig::Color& color=synfig::Color(0,0,0)); @@ -340,7 +341,7 @@ public: etl::handle last_duck()const; etl::handle last_bezier()const; - + //! \note parameter is in canvas coordinates /*! A radius of "zero" will have an unlimited radius */ etl::handle find_duck(synfig::Point pos, synfig::Real radius=0, Duck::Type type=Duck::TYPE_DEFAULT); @@ -349,7 +350,7 @@ public: GuideList::iterator find_guide_y(synfig::Point pos, float radius=0.1); GuideList::const_iterator find_guide_x(synfig::Point pos, float radius=0.1)const { return const_cast(this)->find_guide_x(pos,radius); } GuideList::const_iterator find_guide_y(synfig::Point pos, float radius=0.1)const { return const_cast(this)->find_guide_y(pos,radius); } - + //! \note parameter is in canvas coordinates /*! A radius of "zero" will have an unlimited radius */ //etl::handle find_bezier(synfig::Point pos, synfig::Real radius=0); @@ -357,9 +358,9 @@ public: //! \note parameter is in canvas coordinates /*! A radius of "zero" will have an unlimited radius */ etl::handle find_bezier(synfig::Point pos, synfig::Real radius=0, float* location=0); - + etl::handle find_bezier(synfig::Point pos, synfig::Real scale, synfig::Real radius, float* location=0); - + bool add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handle canvas_view, const synfig::TransformStack& transform_stack_, synfig::ParamDesc *param_desc=0, int multiple=0); //! \writeme @@ -371,7 +372,7 @@ public: void select_all_ducks(); void clear_ducks(); - + bool save_sketch(const synfig::String& filename)const; bool load_sketch(const synfig::String& filename); const synfig::String& get_sketch_filename()const { return sketch_filename_; } @@ -387,14 +388,14 @@ public: class Duckmatic::Push { Duckmatic *duckmatic_; - DuckMap duck_map; + DuckMap duck_map; std::list > bezier_list_; std::list > stroke_list_; DuckDataMap duck_data_share_map; etl::handle duck_dragger_; - + bool needs_restore; - + public: Push(Duckmatic *duckmatic_); ~Push(); @@ -408,7 +409,7 @@ struct Duckmatic::Bezier : public etl::shared_object private: sigc::signal signal_user_click_[5]; public: - + etl::handle p1,p2,c1,c2; bool is_valid()const { return p1 && p2 && c1 && c2; } @@ -422,7 +423,7 @@ struct Duckmatic::Stroke : public etl::shared_object private: sigc::signal signal_user_click_[5]; public: - + etl::smart_ptr > stroke_data; synfig::Color color;