## FoProperty

FoProperty — Abstract FO property type

## Synopsis

                        FoProperty;
                        FoPropertyClass;
    #define             FO_PROPERTY_ERROR
    GQuark              fo_property_error_quark             (void);
    enum                FoPropertyError;
    FoProperty*         fo_property_new_from_expr           (FoPropertyClass *property_class,
                                                             const gchar *expr,
                                                             FoContext *context,
                                                             FoProperty *current_font_size,
                                                             FoFo *fo_node,
                                                             GError **error);
    FoDatatype*         fo_property_get_value               (FoProperty *property);
    void                fo_property_set_value               (FoProperty *property,
                                                             FoDatatype *new_value);
    gboolean            fo_property_class_is_inherited      (FoPropertyClass *property_class);
    gboolean            fo_property_is_inherited            (FoProperty *property);
    gboolean            fo_property_class_is_shorthand      (FoPropertyClass *property_class);
    gboolean            fo_property_is_shorthand            (FoProperty *property);
    FoDatatype*         (*FoResolveEnumFunc)                (const gchar *token,
                                                             FoContext *context,
                                                             GError **err);
    FoDatatype*         (*FoResolvePercentFunc)             (gdouble percentage,
                                                             const FoDatatype *font_size,
                                                             const FoFo *fo_node,
                                                             const FoContext *context,
                                                             GError **err);

## Object Hierarchy

      GObject
       +----FoObject
             +----FoProperty
                   +----FoPropertyBorderLeftWidth

## Known Derived Interfaces

FoProperty is required by FoPropertyTextPropertyIface.

## Properties

      "is-inherited"             gboolean              : Read
      "is-shorthand"             gboolean              : Read
      "value"                    FoDatatype*           : Read / Write

## Description

Every property is a subtype of FoProperty.

## Details

### FoProperty

    typedef struct _FoProperty FoProperty;

### FoPropertyClass

    typedef struct _FoPropertyClass FoPropertyClass;

### FO_PROPERTY_ERROR

    #define FO_PROPERTY_ERROR fo_property_error_quark ()

### fo_property_error_quark ()

    GQuark              fo_property_error_quark             (void);

Returns : |

### enum FoPropertyError

    typedef enum
    {
      FO_PROPERTY_ERROR_FAILED,
      FO_PROPERTY_ERROR_EXPRESSION,
      FO_PROPERTY_ERROR_NO_ENUMERATION,
      FO_PROPERTY_ERROR_ILLEGAL_NEGATIVE,
      FO_PROPERTY_ERROR_ZERO_LENGTH,
      FO_PROPERTY_ERROR_LAST
    } FoPropertyError;

### fo_property_new_from_expr ()

    FoProperty*         fo_property_new_from_expr           (FoPropertyClass *property_class,
                                                             const gchar *expr,
                                                             FoContext *context,
                                                             FoProperty *current_font_size,
                                                             FoFo *fo_node,
                                                             GError **error);

Evaluates `expr` as a value of an instance of `property_class`. The other parameters provide the context for evaluating `expr`.

`property_class` : | Class of property for which to evaluate expression.
`expr` : | Expression to evaluate.
`context` : | Current FoContext.
`current_font_size` : | Current "font-size" value
`fo_node` : | Current FO
`error` : | Indication of any error that occurred
Returns : | New instance of `property_class`, or `NULL` if an error ocurred.

### fo_property_get_value ()

    FoDatatype*         fo_property_get_value               (FoProperty *property);

Returns the current value property value of `property`.

`property` : | FoProperty object whose value is to be retrieved.
Returns : | The current 'value' property value.

### fo_property_set_value ()

    void                fo_property_set_value               (FoProperty *property,
                                                             FoDatatype *new_value);

Sets the 'value' property of `property`.

`property` : | FoProperty object whose value is to be set.
`new_value` : | New value for the property.

### fo_property_class_is_inherited ()

    gboolean            fo_property_class_is_inherited      (FoPropertyClass *property_class);

Indicates whether the XSL property represented by `property_class` is defined in the XSL 1.0 Recommendation as an inherited property.

`property_class` : | FoPropertyClass or a subclass of FoPropertyClass.
Returns : | TRUE if `property_class` is inherited, FALSE if not.

### fo_property_is_inherited ()

    gboolean            fo_property_is_inherited            (FoProperty *property);

Indicates whether the XSL property represented by `property` is defined in the XSL 1.0 Recommendation as an inherited property.

`property` : | FoProperty or subclass of FoProperty
Returns : | TRUE if `property` is inherited, FALSE otherwise

### fo_property_class_is_shorthand ()

    gboolean            fo_property_class_is_shorthand      (FoPropertyClass *property_class);

Indicates whether the XSL property represented by `property_class` is defined in the XSL 1.0 Recommendation as a shorthand property.

`property_class` : | FoPropertyClass or a subclass of FoPropertyClass.
Returns : | TRUE if `property_class` is a shorthand, FALSE if not.

### fo_property_is_shorthand ()

    gboolean            fo_property_is_shorthand            (FoProperty *property);

Indicates whether the XSL property represented by `property` is defined in the XSL 1.0 Recommendation as a shorthand property.

`property` : | FoProperty or a subclass of FoProperty.
Returns : | TRUE if `property` is a shorthand, FALSE otherwise

### FoResolveEnumFunc ()

    FoDatatype*         (*FoResolveEnumFunc)                (const gchar *token,
                                                             FoContext *context,
                                                             GError **err);

`token` : |
`context` : |
`err` : |
Returns : |

### FoResolvePercentFunc ()

    FoDatatype*         (*FoResolvePercentFunc)             (gdouble percentage,
                                                             const FoDatatype *font_size,
                                                             const FoFo *fo_node,
                                                             const FoContext *context,
                                                             GError **err);

`percentage` : |
`font_size` : |
`fo_node` : |
`context` : |
`err` : |
Returns : |

## Property Details

### The `"is-inherited"` property

      "is-inherited"             gboolean              : Read

Is this an inherited property?.

Default value: TRUE

### The `"is-shorthand"` property

      "is-shorthand"             gboolean              : Read

Is this a shorthand property?.

Default value: TRUE

### The `"value"` property

      "value"                    FoDatatype*           : Read / Write

Property value.