## cr-style

cr-style

## Synopsis

                        CRStyle;
    #define             BORDER_THIN
    #define             BORDER_MEDIUM
    #define             BORDER_THICK
                        CRNumPropVal;
                        CRRgbPropVal;
                        CRFontSizeVal;
    enum CRStatus       cr_style_white_space_type_to_string (enum CRWhiteSpaceType a_code,
                                                             GString *a_str,
                                                             guint a_nb_indent);
    enum CRStatus       cr_style_num_prop_val_to_string     (CRNumPropVal *a_prop_val,
                                                             GString *a_str,
                                                             guint a_nb_indent);
    enum CRStatus       cr_style_rgb_prop_val_to_string     (CRRgbPropVal *a_prop_val,
                                                             GString *a_str,
                                                             guint a_nb_indent);
    enum CRStatus       cr_style_border_style_to_string     (enum CRBorderStyle a_prop,
                                                             GString *a_str,
                                                             guint a_nb_indent);
    enum CRStatus       cr_style_display_type_to_string     (enum CRDisplayType a_code,
                                                             GString *a_str,
                                                             guint a_nb_indent);
    enum CRStatus       cr_style_position_type_to_string    (enum CRPositionType a_code,
                                                             GString *a_str,
                                                             guint a_nb_indent);
    enum CRStatus       cr_style_float_type_to_string       (enum CRFloatType a_code,
                                                             GString *a_str,
                                                             guint a_nb_indent);
    CRStyle *           cr_style_new                        (gboolean a_set_props_to_initial_values);
    enum CRStatus       cr_style_set_props_to_default_values
                                                            (CRStyle *a_this);
    enum CRStatus       cr_style_set_props_to_initial_values
                                                            (CRStyle *a_this);
    enum CRStatus       cr_style_resolve_inherited_properties
                                                            (CRStyle *a_this);
    enum CRStatus       cr_style_propagate_from_parent      (CRStyle *a_this);
    enum CRStatus       cr_style_set_style_from_decl        (CRStyle *a_this,
                                                             CRDeclaration *a_decl);
    enum CRStatus       cr_style_copy                       (CRStyle *a_dest,
                                                             CRStyle *a_src);
    enum CRStatus       cr_style_ref                        (CRStyle *a_this);
    gboolean            cr_style_unref                      (CRStyle *a_this);
    void                cr_style_destroy                    (CRStyle *a_this);
    CRStyle *           cr_style_dup                        (CRStyle *a_this);
    enum CRStatus       cr_style_to_string                  (CRStyle *a_this,
                                                             GString **a_str,
                                                             guint a_nb_indent);

## Description

## Details

### CRStyle

    typedef struct {
            /**
             *numerical properties.
             *the properties are indexed by
             *enum #CRNumProp.
             */
            CRNumPropVal num_props[NB_NUM_PROPS] ;

            /**
             *color properties.
             *They are indexed by enum #CRRgbProp .
             */
            CRRgbPropVal rgb_props[NB_RGB_PROPS] ;

            /**
             *border style properties.
             *They are indexed by enum #CRBorderStyleProp .
             */
            enum CRBorderStyle border_style_props[NB_BORDER_STYLE_PROPS] ;

            /**box display type*/
            enum CRDisplayType display ;

            /**the positioning scheme*/
            enum CRPositionType position ;

            /**the float property*/
            enum CRFloatType float_type ;

            /*
             *the 'font-family' property.
             */
            CRFontFamily *font_family ;

            /**
             *the 'font-size' property.
             */
            CRFontSizeVal font_size ;
            CRFontSizeAdjust *font_size_adjust ;
            enum CRFontStyle font_style ;
            enum CRFontVariant font_variant ;
            enum CRFontWeight font_weight ;
            enum CRFontStretch font_stretch ;

    	/**
    	 * the 'tex' properties
    	 */
    	enum CRWhiteSpaceType white_space;

            gboolean inherited_props_resolved ;
            CRStyle *parent_style ;
            gulong ref_count ;
    } CRStyle;

### BORDER_THIN

    #define BORDER_THIN 2

### BORDER_MEDIUM

    #define BORDER_MEDIUM 4

### BORDER_THICK

    #define BORDER_THICK 6

### CRNumPropVal

    typedef struct {
            /**specified value*/
            CRNum sv ;
            /**computed value*/
            CRNum cv ;
            /**actual value*/
            CRNum av ;
    } CRNumPropVal;

### CRRgbPropVal

    typedef struct {
            /**specified value*/
            CRRgb sv ;
            /**computed value*/
            CRRgb cv ;
            /**actual value*/
            CRRgb av ;
    } CRRgbPropVal;

### CRFontSizeVal

    typedef struct {
            /*specified value*/
            CRFontSize sv ;
            /*computed value*/
            CRFontSize cv ;
            /*actual value*/
            CRFontSize av ;
    } CRFontSizeVal;

### cr_style_white_space_type_to_string ()

    enum CRStatus       cr_style_white_space_type_to_string (enum CRWhiteSpaceType a_code,
                                                             GString *a_str,
                                                             guint a_nb_indent);

`a_code` : |
`a_str` : |
`a_nb_indent` : |
Returns : |

### cr_style_num_prop_val_to_string ()

    enum CRStatus       cr_style_num_prop_val_to_string     (CRNumPropVal *a_prop_val,
                                                             GString *a_str,
                                                             guint a_nb_indent);

`a_prop_val` : |
`a_str` : |
`a_nb_indent` : |
Returns : |

### cr_style_rgb_prop_val_to_string ()

    enum CRStatus       cr_style_rgb_prop_val_to_string     (CRRgbPropVal *a_prop_val,
                                                             GString *a_str,
                                                             guint a_nb_indent);

`a_prop_val` : |
`a_str` : |
`a_nb_indent` : |
Returns : |

### cr_style_border_style_to_string ()

    enum CRStatus       cr_style_border_style_to_string     (enum CRBorderStyle a_prop,
                                                             GString *a_str,
                                                             guint a_nb_indent);

`a_prop` : |
`a_str` : |
`a_nb_indent` : |
Returns : |

### cr_style_display_type_to_string ()

    enum CRStatus       cr_style_display_type_to_string     (enum CRDisplayType a_code,
                                                             GString *a_str,
                                                             guint a_nb_indent);

`a_code` : |
`a_str` : |
`a_nb_indent` : |
Returns : |

### cr_style_position_type_to_string ()

    enum CRStatus       cr_style_position_type_to_string    (enum CRPositionType a_code,
                                                             GString *a_str,
                                                             guint a_nb_indent);

`a_code` : |
`a_str` : |
`a_nb_indent` : |
Returns : |

### cr_style_float_type_to_string ()

    enum CRStatus       cr_style_float_type_to_string       (enum CRFloatType a_code,
                                                             GString *a_str,
                                                             guint a_nb_indent);

`a_code` : |
`a_str` : |
`a_nb_indent` : |
Returns : |

### cr_style_new ()

    CRStyle *           cr_style_new                        (gboolean a_set_props_to_initial_values);

`a_set_props_to_initial_values` : |
Returns : |

### cr_style_set_props_to_default_values ()

    enum CRStatus       cr_style_set_props_to_default_values
                                                            (CRStyle *a_this);

`a_this` : |
Returns : |

### cr_style_set_props_to_initial_values ()

    enum CRStatus       cr_style_set_props_to_initial_values
                                                            (CRStyle *a_this);

`a_this` : |
Returns : |

### cr_style_resolve_inherited_properties ()

    enum CRStatus       cr_style_resolve_inherited_properties
                                                            (CRStyle *a_this);

`a_this` : |
Returns : |

### cr_style_propagate_from_parent ()

    enum CRStatus       cr_style_propagate_from_parent      (CRStyle *a_this);

`a_this` : |
Returns : |

### cr_style_set_style_from_decl ()

    enum CRStatus       cr_style_set_style_from_decl        (CRStyle *a_this,
                                                             CRDeclaration *a_decl);

`a_this` : |
`a_decl` : |
Returns : |

### cr_style_copy ()

    enum CRStatus       cr_style_copy                       (CRStyle *a_dest,
                                                             CRStyle *a_src);

`a_dest` : |
`a_src` : |
Returns : |

### cr_style_ref ()

    enum CRStatus       cr_style_ref                        (CRStyle *a_this);

`a_this` : |
Returns : |

### cr_style_unref ()

    gboolean            cr_style_unref                      (CRStyle *a_this);

`a_this` : |
Returns : |

### cr_style_destroy ()

    void                cr_style_destroy                    (CRStyle *a_this);

`a_this` : |

### cr_style_dup ()

    CRStyle *           cr_style_dup                        (CRStyle *a_this);

`a_this` : |
Returns : |

### cr_style_to_string ()

    enum CRStatus       cr_style_to_string                  (CRStyle *a_this,
                                                             GString **a_str,
                                                             guint a_nb_indent);

`a_this` : |
`a_str` : |
`a_nb_indent` : |
Returns : |