Release synfigstudio_0_61_04
[synfig.git] / synfig-studio / tags / synfigstudio_0_61_04 / synfig-studio / src / synfigapp / editmode.h
diff --git a/synfig-studio/tags/synfigstudio_0_61_04/synfig-studio/src/synfigapp/editmode.h b/synfig-studio/tags/synfigstudio_0_61_04/synfig-studio/src/synfigapp/editmode.h
new file mode 100644 (file)
index 0000000..3509b10
--- /dev/null
@@ -0,0 +1,84 @@
+/* === S Y N F I G ========================================================= */
+/*!    \file editmode.h
+**     \brief Template Header
+**
+**     $Id: editmode.h,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $
+**
+**     \legal
+**     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**
+**     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.
+**
+**     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
+*/
+/* ========================================================================= */
+
+/* === S T A R T =========================================================== */
+
+#ifndef __SYNFIG_EDITMODE_H
+#define __SYNFIG_EDITMODE_H
+
+/* === H E A D E R S ======================================================= */
+
+/* === M A C R O S ========================================================= */
+
+/* === T Y P E D E F S ===================================================== */
+
+/* === C L A S S E S & S T R U C T S ======================================= */
+
+namespace synfigapp {
+       
+/*!    \enum EditMode
+**     \brief \writeme
+*/
+enum EditMode
+{
+       MODE_NORMAL                     =0,                     //!< Normal editing mode. Place holder.
+
+       MODE_ANIMATE            =(1<<0),        //!< Animated editing mode.
+       MODE_ANIMATE_FUTURE     =(1<<1),        //!< Respect <i>future</i> keyframes
+       MODE_ANIMATE_PAST       =(1<<2),        //!< Respect <i>past</i> keyframes
+       MODE_ANIMATE_ALL        =(3<<1),        //!< Respect <i>all</i> keyframes
+
+       MODE_UNDEFINED          =(~0)   //!< Undefined Mode
+}; // END of enum EditMode
+
+//! Combine Flags
+inline EditMode
+operator|(const EditMode& lhs, const EditMode& rhs)
+{ return static_cast<EditMode>(int(lhs)|int(rhs)); }
+
+//! Exclude Flags
+inline EditMode
+operator-(const EditMode& lhs, const EditMode& rhs)
+{ return static_cast<EditMode>(int(lhs)&~int(rhs)); }
+
+inline EditMode&
+operator|=(EditMode& lhs, const EditMode& rhs)
+{ *reinterpret_cast<int*>(&lhs)|=int(rhs); return lhs; }
+
+//!    Flag Comparison. THIS IS NOT LESS-THAN-OR-EQUAL-TO.
+/*!    This function will return true of all of the flags
+**     in the \a rhs are set in the \a lhs */
+inline EditMode
+operator&(const EditMode& lhs, const EditMode& rhs)
+{ return static_cast<EditMode>(int(lhs)&int(rhs)); }
+
+//!    Flag Comparison. THIS IS NOT LESS-THAN-OR-EQUAL-TO.
+/*!    This function will return true of all of the flags
+**     in the \a rhs are set in the \a lhs */
+inline bool
+operator<=(const EditMode& lhs, const EditMode& rhs)
+{ return lhs&rhs==int(rhs); }
+
+}; // END if namespace synfigapp
+/* === E N D =============================================================== */
+
+#endif