123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- /* PEG Markdown Highlight
- * Copyright 2011-2016 Ali Rantakari -- http://hasseg.org
- * Licensed under the GPL2+ and MIT licenses (see LICENSE for more info).
- *
- * pmh_styleparser.h
- *
- * Public interface of a parser for custom syntax highlighting stylesheets.
- */
- /** \file
- * \brief Style parser public interface.
- */
- #include "pmh_definitions.h"
- #include <stdbool.h>
- /**
- * \brief Color (ARGB) attribute value.
- *
- * All values are 0-255.
- */
- typedef struct
- {
- int red; /**< Red color component (0-255) */
- int green; /**< Green color component (0-255) */
- int blue; /**< Blue color component (0-255) */
- int alpha; /**< Alpha (opacity) color component (0-255) */
- } pmh_attr_argb_color;
- /** \brief Font style attribute value. */
- typedef struct
- {
- bool italic;
- bool bold;
- bool underlined;
- bool strikeout;
- } pmh_attr_font_styles;
- /** \brief Font size attribute value. */
- typedef struct
- {
- int size_pt; /**< The font point size */
- bool is_relative; /**< Whether the size is relative (i.e. size_pt points
- larger than the default font) */
- } pmh_attr_font_size;
- /** \brief Style attribute types. */
- typedef enum
- {
- pmh_attr_type_foreground_color, /**< Foreground color */
- pmh_attr_type_background_color, /**< Background color */
- pmh_attr_type_caret_color, /**< Caret (insertion point) color */
- pmh_attr_type_font_size_pt, /**< Font size (in points) */
- pmh_attr_type_font_family, /**< Font family */
- pmh_attr_type_font_style, /**< Font style */
- pmh_attr_type_strike_color, /**< Strike-through color */
- pmh_attr_type_other /**< Arbitrary custom attribute */
- } pmh_attr_type;
- /**
- * \brief Style attribute value.
- *
- * Determine which member to access in this union based on the
- * 'type' value of the pmh_style_attribute.
- *
- * \sa pmh_style_attribute
- */
- typedef union
- {
- pmh_attr_argb_color *argb_color; /**< ARGB color */
- pmh_attr_font_styles *font_styles; /**< Font styles */
- pmh_attr_font_size *font_size; /**< Font size */
- char *font_family; /**< Font family */
- char *string; /**< Arbitrary custom string value
- (use this if the attribute's type
- is pmh_attr_type_other) */
- } pmh_attr_value;
- /** \brief Style attribute. */
- typedef struct pmh_style_attribute
- {
- pmh_element_type lang_element_type; /**< The Markdown language element this
- style applies to */
- pmh_attr_type type; /**< The type of the attribute */
- char *name; /**< The name of the attribute (if type
- is pmh_attr_type_other, you can
- use this value to determine what
- the attribute is) */
- pmh_attr_value *value; /**< The value of the attribute */
- struct pmh_style_attribute *next; /**< Next attribute in linked list */
- } pmh_style_attribute;
- /** \brief Collection of styles. */
- typedef struct
- {
- /** Styles that apply to the editor in general */
- pmh_style_attribute *editor_styles;
-
- /** Styles that apply to the line in the editor where the caret (insertion
- point) resides */
- pmh_style_attribute *editor_current_line_styles;
-
- /** Styles that apply to the range of selected text in the editor */
- pmh_style_attribute *editor_selection_styles;
-
- /** Styles that apply to specific Markdown language elements */
- pmh_style_attribute **element_styles;
- } pmh_style_collection;
- /**
- * \brief Parse stylesheet string, return style collection
- *
- * \param[in] input The stylesheet string to parse.
- * \param[in] error_callback Callback function to be called when errors
- * occur during parsing. The first argument
- * to the callback function is the error
- * message and the second one the line number
- * in the original input where the error
- * occurred. The last argument will always
- * get the value you pass in for the
- * error_callback_context argument to this
- * function.
- * Pass in NULL to suppress error reporting.
- * \param[in] error_callback_context Arbitrary context pointer for the error
- * callback function; will be passed in as
- * the last argument to error_callback.
- *
- * \return A pmh_style_collection. You must pass this value to
- * pmh_free_style_collection() when it's not needed anymore.
- */
- pmh_style_collection *pmh_parse_styles(char *input,
- void(*error_callback)(char*,int,void*),
- void *error_callback_context);
- /**
- * \brief Free a pmh_style_collection.
- *
- * Frees a pmh_style_collection value returned by pmh_parse_styles().
- *
- * \param[in] collection The collection to free.
- */
- void pmh_free_style_collection(pmh_style_collection *collection);
- char *pmh_attr_name_from_type(pmh_attr_type type);
- pmh_attr_type pmh_attr_type_from_name(char *name);
|