diff include/mb_animate.h @ 186:530bb7728546 include_mb_test

Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'. This is the solution that I dicussed with FourDollars, last night.
author Thinker K.F. Li <thinker@branda.to>
date Wed, 05 Nov 2008 15:24:01 +0800
parents include/mb/animate.h@c7e5b8779bb5
children 54fdc2a65242
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/include/mb_animate.h	Wed Nov 05 15:24:01 2008 +0800
@@ -0,0 +1,89 @@
+#ifndef __ANIMATE_H_
+#define __ANIMATE_H_
+
+#include "mb_types.h"
+#include "mb_timer.h"
+#include "mb_paint.h"
+
+/*! \page def_action How to Define An Action?
+ *
+ * A action must implement following 4 functions.
+ * \li start,
+ * \li step,
+ * \li stop,
+ * \li free,
+ * \li *_new(), and
+ * \li add *_new() to \ref animate.h .
+ *
+ * *_new() must invokes mb_word_add_action() to add new object
+ * as one of actions in the word specified as an argument of it.
+ * It also means *_new() must have an argument with type of
+ * (mb_word_t *).
+ */
+
+/*! \defgroup anim Animation
+ * \brief Animation is a set of functions to make graph moving.
+ * @{
+ */
+typedef struct _mb_progm mb_progm_t;
+typedef struct _mb_word mb_word_t;
+typedef struct _mb_action mb_action_t;
+
+struct _mb_progm_complete {
+    event_t event;
+    mb_progm_t *progm;
+};
+typedef struct _mb_progm_complete mb_progm_complete_t;
+
+extern mb_progm_t *mb_progm_new(int max_words, redraw_man_t *rdman);
+extern void mb_progm_free(mb_progm_t *progm);
+extern mb_word_t *mb_progm_next_word(mb_progm_t *progm,
+				     const mb_timeval_t *start,
+				     const mb_timeval_t *playing);
+extern void mb_progm_start(mb_progm_t *progm, mb_tman_t *tman,
+			   mb_timeval_t *now);
+extern void mb_progm_abort(mb_progm_t *progm);
+extern subject_t *mb_progm_get_complete(mb_progm_t *progm);
+
+/*! \defgroup ani_actions Animation Actions
+ * @{
+ */
+extern mb_action_t *mb_shift_new(co_aix x, co_aix y, coord_t *coord,
+				 mb_word_t *word);
+extern mb_action_t *mb_chgcolor_new(co_comp_t r, co_comp_t g,
+				    co_comp_t b, co_comp_t a,
+				    paint_t *paint, mb_word_t *word);
+extern mb_action_t *mb_rotate_new(float angle1, float angle2,
+				  coord_t *coord, mb_word_t *word);
+
+enum { VIS_VISIBLE, VIS_HIDDEN };
+extern mb_action_t *mb_visibility_new(int visib, coord_t *coord,
+				      mb_word_t *word);
+/* @} */
+
+/*! \defgroup act_support Action Supports.
+ * @{
+ */
+/*! \brief Basic class of animation actions.
+ *
+ * \sa \ref def_action
+ */
+struct _mb_action {
+    void (*start)(mb_action_t *act,
+		  const mb_timeval_t *now,
+		  const mb_timeval_t *playing_time,
+		  redraw_man_t *rdman);
+    void (*step)(mb_action_t *act, const mb_timeval_t *now,
+		 redraw_man_t *rdman);
+    void (*stop)(mb_action_t *act, const mb_timeval_t *now,
+		 redraw_man_t *rdman);
+    void (*free)(mb_action_t *act);
+    mb_action_t *next;
+};
+
+extern void mb_word_add_action(mb_word_t *word, mb_action_t *act);
+/* @} */
+
+/* @} */
+
+#endif /* __ANIMATE_H_ */