diff m_property.h @ 17911:52f95509cd05

Add the new property API and implement a couple properties. Move the volume and mute command to the command to property bridge.
author albeu
date Wed, 22 Mar 2006 00:19:02 +0000
parents
children f9cb6fc1608a
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/m_property.h	Wed Mar 22 00:19:02 2006 +0000
@@ -0,0 +1,78 @@
+
+// Get the current value                                                   
+#define M_PROPERTY_GET         0                                           
+// Get a string representing the current value                             
+#define M_PROPERTY_PRINT       1                                           
+// Set a new value                                                         
+#define M_PROPERTY_SET         2                                           
+// Set a new value from a string                                           
+#define M_PROPERTY_PARSE       3                                           
+// Increment the property                                                  
+#define M_PROPERTY_STEP_UP     4                                           
+// Decrement the property                                                  
+#define M_PROPERTY_STEP_DOWN   5                                           
+
+// Return values for the control function
+#define M_PROPERTY_OK                1
+#define M_PROPERTY_ERROR             0
+// Returned when the property can't be used, for ex something about
+// the subs while playing audio only
+#define M_PROPERTY_UNAVAILABLE      -1
+// Returned if the requested action is not implemented
+#define M_PROPERTY_NOT_IMPLEMENTED  -2
+// Returned when asking for a property that doesn't exist
+#define M_PROPERTY_UNKNOWN          -3
+// Returned when the action can't be done (like setting the volume when edl mute)
+#define M_PROPERTY_DISABLED         -4
+
+typedef int(*m_property_ctrl_f)(m_option_t* prop,int action,void* arg);
+
+int m_property_do(m_option_t* prop, int action, void* arg);
+
+char* m_property_print(m_option_t* prop);
+
+int m_property_parse(m_option_t* prop, char* txt);
+
+char* m_properties_expand_string(m_option_t* prop_list,char* str);
+
+#define M_PROPERTY_CLAMP(prop,val) do {                                 \
+        if(((prop)->flags & M_OPT_MIN) && (val) < (prop)->min)          \
+            (val) = (prop)->min;                                        \
+        else if(((prop)->flags & M_OPT_MAX) && (val) > (prop)->max)     \
+            (val) = (prop)->max;                                        \
+    } while(0)
+
+// Implement get
+int m_property_int_ro(m_option_t* prop,int action,
+                      void* arg,int var);
+
+// Implement set, get and step up/down
+int m_property_int_range(m_option_t* prop,int action,
+                         void* arg,int* var);
+
+// Same but cycle
+int m_property_choice(m_option_t* prop,int action,
+                      void* arg,int* var);
+
+// Switch betwen min and max
+int m_property_flag(m_option_t* prop,int action,
+                    void* arg,int* var);
+
+// Implement get, print
+int m_property_float_ro(m_option_t* prop,int action,
+                        void* arg,float var);
+
+// Implement set, get and step up/down
+int m_property_float_range(m_option_t* prop,int action,
+                           void* arg,float* var);
+
+// float with a print function which print the time in ms
+int m_property_delay(m_option_t* prop,int action,
+                     void* arg,float* var);
+
+// Implement get, print
+int m_property_double_ro(m_option_t* prop,int action,
+                         void* arg,double var);
+
+// get/print the string
+int m_property_string_ro(m_option_t* prop,int action,void* arg, char* str);