summaryrefslogtreecommitdiffstats
path: root/m_property.h
blob: dc3e436cf6a7254a23a2fbb5373d4ad9d0f456bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

// 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);

void m_properties_print_help_list(m_option_t* list);

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);