📄 property.h
字号:
/* $Id: property.h,v 1.18 2004/11/19 17:46:05 zas Exp $ */#ifndef EL__DOCUMENT_CSS_PROPERTY_H#define EL__DOCUMENT_CSS_PROPERTY_H#include "document/html/parser.h"#include "util/color.h"#include "util/lists.h"/* The {struct css_property} describes one CSS declaration in a rule, therefore * being basically a parsed instance of {struct css_property_info}. One list of * these contains all the declarations contained in one rule. */struct css_property { LIST_HEAD(struct css_property); /* Declared property. The enum item name is derived from the property * name, just uppercase it and tr/-/_/. */ enum css_property_type { CSS_PT_NONE, CSS_PT_BACKGROUND, CSS_PT_BACKGROUND_COLOR, CSS_PT_COLOR, CSS_PT_FONT_STYLE, CSS_PT_FONT_WEIGHT, CSS_PT_TEXT_ALIGN, CSS_PT_TEXT_DECORATION, CSS_PT_WHITE_SPACE, CSS_PT_LAST, } type; /* Property value. If it is a pointer, it points always to a memory * to be free()d together with this structure. */ enum css_property_value_type { CSS_VT_NONE, CSS_VT_COLOR, CSS_VT_FONT_ATTRIBUTE, CSS_VT_TEXT_ALIGN, CSS_VT_LAST, } value_type; union css_property_value { void *none; color_t color; struct { enum format_attr add, rem; } font_attribute; enum format_align text_align; /* TODO: * Generic numbers * Percentages * URL * Align (struct format_align) */ /* TODO: The size units will be fun yet. --pasky */ } value;};/* The {struct css_property_info} describes what values the properties can * have and what internal type they have. */struct css_property_info;struct scanner;typedef int (*css_property_value_parser)(struct css_property_info *propinfo, union css_property_value *value, struct scanner *scanner);struct css_property_info { unsigned char *name; enum css_property_type type; /* This is the storage type, basically describing what to save to * css_property.value. Many properties can share the same valtype. * The value is basically output of the value parser. */ enum css_property_value_type value_type; /* This is the property value parser, processing the written form of a * property value. Its job is to take the value string (or scanner's * token list in the future) and transform it to a @value form * according to the property's @value_type. Although some properties * can share a parser, it is expected that most properties will either * use a custom one or use a generic parser with property-specific * backend specified in @parser_data. */ css_property_value_parser parser; /* In case you use a generic @parser, it can be useful to still give * it some specific data. You can do so through @parser_data. The * content is @parser-specific. */ void *parser_data;};/* This table contains info about all the known CSS properties. */extern struct css_property_info css_property_info[];#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -