00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __INTERFACES_FACIALEXPRESSIONINTERFACE_H_
00025 #define __INTERFACES_FACIALEXPRESSIONINTERFACE_H_
00026
00027 #include <interface/interface.h>
00028 #include <interface/message.h>
00029 #include <interface/field_iterator.h>
00030
00031 namespace fawkes {
00032
00033 class FacialExpressionInterface : public Interface
00034 {
00035
00036 INTERFACE_MGMT_FRIENDS(FacialExpressionInterface)
00037
00038 public:
00039
00040
00041
00042 typedef enum {
00043 BROWS_DEFAULT ,
00044 BROWS_FROWN ,
00045 BROWS_LIFT
00046 } brows_t;
00047 const char * tostring_brows_t(brows_t value) const;
00048
00049
00050 typedef enum {
00051 EYES_DEFAULT ,
00052 EYES_UP ,
00053 EYES_DOWN ,
00054 EYES_LEFT ,
00055 EYES_RIGHT ,
00056 EYES_COOL ,
00057 EYES_CROSS ,
00058 EYES_HEART ,
00059 EYES_DOLLAR
00060 } eyes_t;
00061 const char * tostring_eyes_t(eyes_t value) const;
00062
00063
00064 typedef enum {
00065 JOWL_DEFAULT ,
00066 JOWL_BLUSH ,
00067 JOWL_TEARS
00068 } jowl_t;
00069 const char * tostring_jowl_t(jowl_t value) const;
00070
00071
00072 typedef enum {
00073 MOUTH_DEFAULT ,
00074 MOUTH_OPEN ,
00075 MOUTH_CLOSE ,
00076 MOUTH_SMILE ,
00077 MOUTH_SCOWL
00078 } mouth_t;
00079 const char * tostring_mouth_t(mouth_t value) const;
00080
00081 private:
00082 #pragma pack(push,4)
00083
00084 typedef struct {
00085 int64_t timestamp_sec;
00086 int64_t timestamp_usec;
00087 brows_t brows_action;
00088 eyes_t eyes_action;
00089 jowl_t jowl_action;
00090 mouth_t mouth_action;
00091 } FacialExpressionInterface_data_t;
00092 #pragma pack(pop)
00093
00094 FacialExpressionInterface_data_t *data;
00095
00096 public:
00097
00098 class MoveBrowsMessage : public Message
00099 {
00100 private:
00101 #pragma pack(push,4)
00102
00103 typedef struct {
00104 int64_t timestamp_sec;
00105 int64_t timestamp_usec;
00106 brows_t brows_action;
00107 } MoveBrowsMessage_data_t;
00108 #pragma pack(pop)
00109
00110 MoveBrowsMessage_data_t *data;
00111
00112 public:
00113 MoveBrowsMessage(const brows_t ini_brows_action);
00114 MoveBrowsMessage();
00115 ~MoveBrowsMessage();
00116
00117 MoveBrowsMessage(const MoveBrowsMessage *m);
00118
00119 brows_t brows_action() const;
00120 void set_brows_action(const brows_t new_brows_action);
00121 size_t maxlenof_brows_action() const;
00122 virtual Message * clone() const;
00123 };
00124
00125 class MoveEyesMessage : public Message
00126 {
00127 private:
00128 #pragma pack(push,4)
00129
00130 typedef struct {
00131 int64_t timestamp_sec;
00132 int64_t timestamp_usec;
00133 eyes_t eyes_action;
00134 } MoveEyesMessage_data_t;
00135 #pragma pack(pop)
00136
00137 MoveEyesMessage_data_t *data;
00138
00139 public:
00140 MoveEyesMessage(const eyes_t ini_eyes_action);
00141 MoveEyesMessage();
00142 ~MoveEyesMessage();
00143
00144 MoveEyesMessage(const MoveEyesMessage *m);
00145
00146 eyes_t eyes_action() const;
00147 void set_eyes_action(const eyes_t new_eyes_action);
00148 size_t maxlenof_eyes_action() const;
00149 virtual Message * clone() const;
00150 };
00151
00152 class MoveJowlMessage : public Message
00153 {
00154 private:
00155 #pragma pack(push,4)
00156
00157 typedef struct {
00158 int64_t timestamp_sec;
00159 int64_t timestamp_usec;
00160 jowl_t jowl_action;
00161 } MoveJowlMessage_data_t;
00162 #pragma pack(pop)
00163
00164 MoveJowlMessage_data_t *data;
00165
00166 public:
00167 MoveJowlMessage(const jowl_t ini_jowl_action);
00168 MoveJowlMessage();
00169 ~MoveJowlMessage();
00170
00171 MoveJowlMessage(const MoveJowlMessage *m);
00172
00173 jowl_t jowl_action() const;
00174 void set_jowl_action(const jowl_t new_jowl_action);
00175 size_t maxlenof_jowl_action() const;
00176 virtual Message * clone() const;
00177 };
00178
00179 class MoveMouthMessage : public Message
00180 {
00181 private:
00182 #pragma pack(push,4)
00183
00184 typedef struct {
00185 int64_t timestamp_sec;
00186 int64_t timestamp_usec;
00187 mouth_t mouth_action;
00188 } MoveMouthMessage_data_t;
00189 #pragma pack(pop)
00190
00191 MoveMouthMessage_data_t *data;
00192
00193 public:
00194 MoveMouthMessage(const mouth_t ini_mouth_action);
00195 MoveMouthMessage();
00196 ~MoveMouthMessage();
00197
00198 MoveMouthMessage(const MoveMouthMessage *m);
00199
00200 mouth_t mouth_action() const;
00201 void set_mouth_action(const mouth_t new_mouth_action);
00202 size_t maxlenof_mouth_action() const;
00203 virtual Message * clone() const;
00204 };
00205
00206 virtual bool message_valid(const Message *message) const;
00207 private:
00208 FacialExpressionInterface();
00209 ~FacialExpressionInterface();
00210
00211 public:
00212
00213 brows_t brows_action() const;
00214 void set_brows_action(const brows_t new_brows_action);
00215 size_t maxlenof_brows_action() const;
00216 eyes_t eyes_action() const;
00217 void set_eyes_action(const eyes_t new_eyes_action);
00218 size_t maxlenof_eyes_action() const;
00219 jowl_t jowl_action() const;
00220 void set_jowl_action(const jowl_t new_jowl_action);
00221 size_t maxlenof_jowl_action() const;
00222 mouth_t mouth_action() const;
00223 void set_mouth_action(const mouth_t new_mouth_action);
00224 size_t maxlenof_mouth_action() const;
00225 virtual Message * create_message(const char *type) const;
00226
00227 virtual void copy_values(const Interface *other);
00228 virtual const char * enum_tostring(const char *enumtype, int val) const;
00229
00230 };
00231
00232 }
00233
00234 #endif