cr-style.c File Reference

The definition of the CRStyle class. More...

#include <string.h>
#include "cr-style.h"

Go to the source code of this file.

Data Structures

struct  _CRPropertyDesc
struct  CRNumPropEnumDumpInfo
struct  CRRgbPropEnumDumpInfo
struct  CRBorderStylePropEnumDumpInfo
struct  CRPropDisplayValPair
struct  CRPropPositionValPair

Typedefs

typedef struct _CRPropertyDesc CRPropertyDesc

Enumerations

enum  CRPropertyID {
  PROP_ID_NOT_KNOWN = 0, PROP_ID_PADDING_TOP, PROP_ID_PADDING_RIGHT, PROP_ID_PADDING_BOTTOM,
  PROP_ID_PADDING_LEFT, PROP_ID_PADDING, PROP_ID_BORDER_TOP_WIDTH, PROP_ID_BORDER_RIGHT_WIDTH,
  PROP_ID_BORDER_BOTTOM_WIDTH, PROP_ID_BORDER_LEFT_WIDTH, PROP_ID_BORDER_WIDTH, PROP_ID_BORDER_TOP_STYLE,
  PROP_ID_BORDER_RIGHT_STYLE, PROP_ID_BORDER_BOTTOM_STYLE, PROP_ID_BORDER_LEFT_STYLE, PROP_ID_BORDER_STYLE,
  PROP_ID_BORDER_TOP_COLOR, PROP_ID_BORDER_RIGHT_COLOR, PROP_ID_BORDER_BOTTOM_COLOR, PROP_ID_BORDER_LEFT_COLOR,
  PROP_ID_BORDER_TOP, PROP_ID_BORDER_RIGHT, PROP_ID_BORDER_BOTTOM, PROP_ID_BORDER_LEFT,
  PROP_ID_BORDER, PROP_ID_MARGIN_TOP, PROP_ID_MARGIN_RIGHT, PROP_ID_MARGIN_BOTTOM,
  PROP_ID_MARGIN_LEFT, PROP_ID_MARGIN, PROP_ID_DISPLAY, PROP_ID_POSITION,
  PROP_ID_TOP, PROP_ID_RIGHT, PROP_ID_BOTTOM, PROP_ID_LEFT,
  PROP_ID_FLOAT, PROP_ID_WIDTH, PROP_ID_COLOR, PROP_ID_BACKGROUND_COLOR,
  PROP_ID_FONT_FAMILY, PROP_ID_FONT_SIZE, PROP_ID_FONT_STYLE, PROP_ID_FONT_WEIGHT,
  PROP_ID_WHITE_SPACE, NB_PROP_IDS
}
 A property ID. More...
enum  CRDirection {
  DIR_TOP = 0, DIR_RIGHT, DIR_BOTTOM, DIR_LEFT,
  NB_DIRS
}

Functions

CRStylecr_style_new (gboolean a_set_props_to_initial_values)
 Default constructor of CRStyle.
enum CRStatus cr_style_set_props_to_default_values (CRStyle *a_this)
 Sets the style properties to their default values according to the css2 spec i.e inherit if the property is inherited, its initial value otherwise.
enum CRStatus cr_style_set_props_to_initial_values (CRStyle *a_this)
 Sets the style properties to their initial value according to the css2 spec.
enum CRStatus cr_style_resolve_inherited_properties (CRStyle *a_this)
 Resolves the inherited properties.
enum CRStatus cr_style_set_style_from_decl (CRStyle *a_this, CRDeclaration *a_decl)
 Walks through a css2 property declaration, and populated the according field(s) in the CRStyle structure.
enum CRStatus cr_style_ref (CRStyle *a_this)
 Increases the reference count of the current instance of CRStyle.
gboolean cr_style_unref (CRStyle *a_this)
 Decreases the reference count of the current instance of CRStyle.
CRStylecr_style_dup (CRStyle *a_this)
 Duplicates the current instance of CRStyle .
enum CRStatus cr_style_copy (CRStyle *a_dest, CRStyle *a_src)
 Copies a style data structure into another.
enum CRStatus cr_style_num_prop_val_to_string (CRNumPropVal *a_prop_val, GString *a_str, guint a_nb_indent)
 dump a CRNumpPropVal in a string.
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)
enum CRStatus cr_style_white_space_type_to_string (enum CRWhiteSpaceType a_code, GString *a_str, guint a_nb_indent)
enum CRStatus cr_style_to_string (CRStyle *a_this, GString **a_str, guint a_nb_indent)
 Serializes in instance of CRStyle into a string.
void cr_style_destroy (CRStyle *a_this)
 Destructor of the CRStyle class.


Detailed Description

The definition of the CRStyle class.

Definition in file cr-style.c.


Typedef Documentation

Definition at line 92 of file cr-style.c.


Enumeration Type Documentation

Enumerator:
DIR_TOP 
DIR_RIGHT 
DIR_BOTTOM 
DIR_LEFT 
NB_DIRS 

Definition at line 224 of file cr-style.c.

A property ID.

Each supported css property has an ID which is an entry into a property "population" jump table. each entry of the property population jump table contains code to tranform the literal form of a property value into a strongly typed value.

Enumerator:
PROP_ID_NOT_KNOWN 
PROP_ID_PADDING_TOP 
PROP_ID_PADDING_RIGHT 
PROP_ID_PADDING_BOTTOM 
PROP_ID_PADDING_LEFT 
PROP_ID_PADDING 
PROP_ID_BORDER_TOP_WIDTH 
PROP_ID_BORDER_RIGHT_WIDTH 
PROP_ID_BORDER_BOTTOM_WIDTH 
PROP_ID_BORDER_LEFT_WIDTH 
PROP_ID_BORDER_WIDTH 
PROP_ID_BORDER_TOP_STYLE 
PROP_ID_BORDER_RIGHT_STYLE 
PROP_ID_BORDER_BOTTOM_STYLE 
PROP_ID_BORDER_LEFT_STYLE 
PROP_ID_BORDER_STYLE 
PROP_ID_BORDER_TOP_COLOR 
PROP_ID_BORDER_RIGHT_COLOR 
PROP_ID_BORDER_BOTTOM_COLOR 
PROP_ID_BORDER_LEFT_COLOR 
PROP_ID_BORDER_TOP 
PROP_ID_BORDER_RIGHT 
PROP_ID_BORDER_BOTTOM 
PROP_ID_BORDER_LEFT 
PROP_ID_BORDER 
PROP_ID_MARGIN_TOP 
PROP_ID_MARGIN_RIGHT 
PROP_ID_MARGIN_BOTTOM 
PROP_ID_MARGIN_LEFT 
PROP_ID_MARGIN 
PROP_ID_DISPLAY 
PROP_ID_POSITION 
PROP_ID_TOP 
PROP_ID_RIGHT 
PROP_ID_BOTTOM 
PROP_ID_LEFT 
PROP_ID_FLOAT 
PROP_ID_WIDTH 
PROP_ID_COLOR 
PROP_ID_BACKGROUND_COLOR 
PROP_ID_FONT_FAMILY 
PROP_ID_FONT_SIZE 
PROP_ID_FONT_STYLE 
PROP_ID_FONT_WEIGHT 
PROP_ID_WHITE_SPACE 
NB_PROP_IDS 

Definition at line 42 of file cr-style.c.


Function Documentation

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

enum CRStatus cr_style_copy ( CRStyle a_dest,
CRStyle a_src 
)

Copies a style data structure into another.

TODO: this is actually broken because it's based on memcpy although some data stuctures of CRStyle should be properly duplicated.

Parameters:
a_dest the destination style datastructure
a_src the source style datastructure.
Returns:
CR_OK upon succesfull completion, an error code otherwise

Definition at line 2312 of file cr-style.c.

References CR_BAD_PARAM_ERROR, and CR_OK.

Referenced by cr_style_dup().

void cr_style_destroy ( CRStyle a_this  ) 

Destructor of the CRStyle class.

Parameters:
a_this the instance to destroy.

Definition at line 2845 of file cr-style.c.

Referenced by cr_style_unref().

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

CRStyle* cr_style_dup ( CRStyle a_this  ) 

Duplicates the current instance of CRStyle .

The newly created instance of CRStyle must be freed using cr_style_destroy ().

Parameters:
a_this the current instance of CRStyle.
Returns:
the newly duplicated instance of CRStyle.

Definition at line 2287 of file cr-style.c.

References cr_style_copy(), cr_style_new(), and cr_utils_trace_info.

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  ) 

Default constructor of CRStyle.

Parameters:
a_set_props_to_initial_values if TRUE, the style properties will be set to the default values. Only the style properties of the root box should be set to their initial values. Otherwise, the style values are set to their default value. Read the CSS2 spec, chapters 6.1.1 to 6.2.

Definition at line 1712 of file cr-style.c.

References cr_style_set_props_to_default_values(), cr_style_set_props_to_initial_values(), and cr_utils_trace_info.

Referenced by cr_sel_eng_get_matched_style(), and cr_style_dup().

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

dump a CRNumpPropVal in a string.

Parameters:
a_prop_val the numerical property value to dump
a_str the string to dump the numerical propertie into. Note that the string value is appended to a_str.
a_nb_indent the number white chars of indentation.

Definition at line 2328 of file cr-style.c.

References _CRNumPropVal::av, CR_BAD_PARAM_ERROR, CR_ERROR, cr_num_to_string(), CR_OK, cr_utils_dump_n_chars2(), _CRNumPropVal::cv, and _CRNumPropVal::sv.

Referenced by cr_style_to_string().

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

enum CRStatus cr_style_ref ( CRStyle a_this  ) 

Increases the reference count of the current instance of CRStyle.

Parameters:
a_this the current instance of CRStyle.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 2246 of file cr-style.c.

References CR_BAD_PARAM_ERROR, and CR_OK.

enum CRStatus cr_style_resolve_inherited_properties ( CRStyle a_this  ) 

Resolves the inherited properties.

The function sets the "inherited" properties to either the value of their parent properties. This function is *NOT* recursive. So the inherited properties of the parent style must have been resolved prior to calling this function.

Parameters:
a_this the instance where
Returns:
CR_OK if a root node is found and the propagation is successful, an error code otherwise

Definition at line 1937 of file cr-style.c.

References BORDER_STYLE_INHERIT, CR_BAD_PARAM_ERROR, cr_font_size_copy(), cr_num_copy(), CR_OK, cr_rgb_copy(), cr_rgb_is_set_to_inherit(), DISPLAY_INHERIT, FLOAT_INHERIT, FONT_STRETCH_INHERIT, FONT_STYLE_INHERIT, FONT_VARIANT_INHERIT, FONT_WEIGHT_INHERIT, INHERITED_FONT_SIZE, NB_BORDER_STYLE_PROPS, NB_NUM_PROPS, NB_RGB_PROPS, NUM_INHERIT, and POSITION_INHERIT.

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

enum CRStatus cr_style_set_props_to_default_values ( CRStyle a_this  ) 

enum CRStatus cr_style_set_props_to_initial_values ( CRStyle a_this  ) 

Sets the style properties to their initial value according to the css2 spec.

This function should be used to initialize the style of the root element of an xml tree. Some properties are user agent dependant like font-family, and are not initialized, read the spec to make you renderer compliant.

Parameters:
a_this the current instance of CRStyle.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 1845 of file cr-style.c.

References BORDER_STYLE_NONE, CR_BAD_PARAM_ERROR, cr_font_size_set_predefined_absolute_font_size(), cr_num_set(), CR_OK, cr_rgb_set(), cr_rgb_set_to_transparent(), cr_utils_trace_info, DISPLAY_BLOCK, FLOAT_NONE, FONT_SIZE_MEDIUM, FONT_STRETCH_NORMAL, FONT_STYLE_NORMAL, FONT_VARIANT_NORMAL, FONT_WEIGHT_NORMAL, NB_BORDER_STYLE_PROPS, NB_NUM_PROPS, NB_RGB_PROPS, NUM_AUTO, NUM_LENGTH_PX, NUM_PROP_BORDER_BOTTOM, NUM_PROP_BORDER_LEFT, NUM_PROP_BORDER_RIGHT, NUM_PROP_BORDER_TOP, NUM_PROP_BOTTOM, NUM_PROP_LEFT, NUM_PROP_MARGIN_BOTTOM, NUM_PROP_MARGIN_LEFT, NUM_PROP_MARGIN_RIGHT, NUM_PROP_MARGIN_TOP, NUM_PROP_PADDING_BOTTOM, NUM_PROP_PADDING_LEFT, NUM_PROP_PADDING_RIGHT, NUM_PROP_PADDING_TOP, NUM_PROP_RIGHT, NUM_PROP_TOP, NUM_PROP_WIDTH, POSITION_STATIC, RGB_PROP_BACKGROUND_COLOR, RGB_PROP_COLOR, and WHITE_SPACE_NORMAL.

Referenced by cr_sel_eng_get_matched_style(), and cr_style_new().

enum CRStatus cr_style_set_style_from_decl ( CRStyle a_this,
CRDeclaration a_decl 
)

Walks through a css2 property declaration, and populated the according field(s) in the CRStyle structure.

If the properties or their value(s) are/is not known, sets the corresponding field(s) of CRStyle to its/their default value(s)

Parameters:
a_this the instance of CRStyle to set.
a_decl the declaration from which the CRStyle fields are set.
Returns:
CR_OK upon successfull completion, an error code otherwise.

Definition at line 2012 of file cr-style.c.

References CR_BAD_PARAM_ERROR, CR_OK, CR_UNKNOWN_TYPE_ERROR, DIR_BOTTOM, DIR_LEFT, DIR_RIGHT, DIR_TOP, PROP_ID_BACKGROUND_COLOR, PROP_ID_BORDER, PROP_ID_BORDER_BOTTOM, PROP_ID_BORDER_BOTTOM_COLOR, PROP_ID_BORDER_BOTTOM_STYLE, PROP_ID_BORDER_BOTTOM_WIDTH, PROP_ID_BORDER_LEFT, PROP_ID_BORDER_LEFT_COLOR, PROP_ID_BORDER_LEFT_STYLE, PROP_ID_BORDER_LEFT_WIDTH, PROP_ID_BORDER_RIGHT, PROP_ID_BORDER_RIGHT_COLOR, PROP_ID_BORDER_RIGHT_STYLE, PROP_ID_BORDER_RIGHT_WIDTH, PROP_ID_BORDER_STYLE, PROP_ID_BORDER_TOP, PROP_ID_BORDER_TOP_COLOR, PROP_ID_BORDER_TOP_STYLE, PROP_ID_BORDER_TOP_WIDTH, PROP_ID_BORDER_WIDTH, PROP_ID_BOTTOM, PROP_ID_COLOR, PROP_ID_DISPLAY, PROP_ID_FLOAT, PROP_ID_FONT_FAMILY, PROP_ID_FONT_SIZE, PROP_ID_FONT_STYLE, PROP_ID_FONT_WEIGHT, PROP_ID_LEFT, PROP_ID_MARGIN, PROP_ID_MARGIN_BOTTOM, PROP_ID_MARGIN_LEFT, PROP_ID_MARGIN_RIGHT, PROP_ID_MARGIN_TOP, PROP_ID_NOT_KNOWN, PROP_ID_PADDING, PROP_ID_PADDING_BOTTOM, PROP_ID_PADDING_LEFT, PROP_ID_PADDING_RIGHT, PROP_ID_PADDING_TOP, PROP_ID_POSITION, PROP_ID_RIGHT, PROP_ID_TOP, PROP_ID_WHITE_SPACE, PROP_ID_WIDTH, _CRDeclaration::property, and _CRDeclaration::value.

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

Serializes in instance of CRStyle into a string.

Parameters:
a_this the instance of CRStyle to serialize
a_str the string to serialise the style into. if *a_str is NULL, a new GString is instanciated, otherwise the style serialisation is appended to the existed *a_str
the number of white space char to use for indentation.
Returns:
CR_OK upon successful completion, an error code otherwise.

Definition at line 2659 of file cr-style.c.

References BORDER_STYLE_PROP_TOP, CR_BAD_PARAM_ERROR, cr_font_family_to_string(), cr_font_size_adjust_to_string(), cr_font_size_to_string(), cr_font_stretch_to_string(), cr_font_style_to_string(), cr_font_variant_to_string(), cr_font_weight_to_string(), CR_OK, cr_style_border_style_to_string(), cr_style_display_type_to_string(), cr_style_float_type_to_string(), cr_style_num_prop_val_to_string(), cr_style_position_type_to_string(), cr_style_rgb_prop_val_to_string(), cr_style_white_space_type_to_string(), cr_utils_dump_n_chars2(), NB_BORDER_STYLE_PROPS, NB_NUM_PROPS, NB_RGB_PROPS, NUM_PROP_TOP, and RGB_PROP_BORDER_TOP_COLOR.

gboolean cr_style_unref ( CRStyle a_this  ) 

Decreases the reference count of the current instance of CRStyle.

If the reference count reaches 0, the instance of CRStyle is destoyed.

Parameters:
a_this the current instance of CRStyle.
Returns:
TRUE if the instance has been destroyed, FALSE otherwise.

Definition at line 2264 of file cr-style.c.

References cr_style_destroy().

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


Generated on Wed Feb 4 16:36:55 2009 for Libcroco by  doxygen 1.5.5