⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dw_style.h

📁 浏览器的源代码,可移植到嵌入式设备.
💻 H
字号:
#ifndef __DW_STYLE_H__#define __DW_STYLE_H__#include <gdk/gdktypes.h>#include "dw_tooltip.h"#define DW_STYLE_ALIGN_LEFT   1#define DW_STYLE_ALIGN_RIGHT  2typedef enum {   DW_STYLE_BORDER_NONE,   DW_STYLE_BORDER_HIDDEN,   DW_STYLE_BORDER_DOTTED,   DW_STYLE_BORDER_DASHED,   DW_STYLE_BORDER_SOLID,   DW_STYLE_BORDER_DOUBLE,   DW_STYLE_BORDER_GROOVE,   DW_STYLE_BORDER_RIDGE,   DW_STYLE_BORDER_INSET,   DW_STYLE_BORDER_OUTSET} DwStyleBorderStyle;typedef enum {   DW_STYLE_TEXT_ALIGN_LEFT,   DW_STYLE_TEXT_ALIGN_RIGHT,   DW_STYLE_TEXT_ALIGN_CENTER,   DW_STYLE_TEXT_ALIGN_JUSTIFY,   DW_STYLE_TEXT_ALIGN_STRING} DwStyleTextAlignType;typedef enum {   DW_STYLE_VALIGN_TOP,   DW_STYLE_VALIGN_BOTTOM,   DW_STYLE_VALIGN_MIDDLE,   DW_STYLE_VALIGN_BASELINE,   DW_STYLE_VALIGN_SUB,   DW_STYLE_VALIGN_SUPER} DwStyleVAlignType;typedef enum {   /* todo: incomplete */   DW_STYLE_DISPLAY_BLOCK,   DW_STYLE_DISPLAY_INLINE,   DW_STYLE_DISPLAY_LIST_ITEM,   DW_STYLE_DISPLAY_TABLE,   DW_STYLE_DISPLAY_TABLE_ROW_GROUP,   DW_STYLE_DISPLAY_TABLE_HEADER_GROUP,   DW_STYLE_DISPLAY_TABLE_FOOTER_GROUP,   DW_STYLE_DISPLAY_TABLE_ROW,   DW_STYLE_DISPLAY_TABLE_CELL,   DW_STYLE_DISPLAY_LAST} DwStyleDisplayType;typedef enum {   DW_STYLE_LIST_STYLE_TYPE_DISC,   DW_STYLE_LIST_STYLE_TYPE_CIRCLE,   DW_STYLE_LIST_STYLE_TYPE_SQUARE,   DW_STYLE_LIST_STYLE_TYPE_DECIMAL,   DW_STYLE_LIST_STYLE_TYPE_DECIMAL_LEADING_ZERO,   DW_STYLE_LIST_STYLE_TYPE_LOWER_ROMAN,   DW_STYLE_LIST_STYLE_TYPE_UPPER_ROMAN,   DW_STYLE_LIST_STYLE_TYPE_LOWER_GREEK,   DW_STYLE_LIST_STYLE_TYPE_LOWER_ALPHA,   DW_STYLE_LIST_STYLE_TYPE_LOWER_LATIN,   DW_STYLE_LIST_STYLE_TYPE_UPPER_ALPHA,   DW_STYLE_LIST_STYLE_TYPE_UPPER_LATIN,   DW_STYLE_LIST_STYLE_TYPE_HEBREW,   DW_STYLE_LIST_STYLE_TYPE_ARMENIAN,   DW_STYLE_LIST_STYLE_TYPE_GEORGIAN,   DW_STYLE_LIST_STYLE_TYPE_CJK_IDEOGRAPHIC,   DW_STYLE_LIST_STYLE_TYPE_HIRAGANA,   DW_STYLE_LIST_STYLE_TYPE_KATAKANA,   DW_STYLE_LIST_STYLE_TYPE_HIRAGANA_IROHA,   DW_STYLE_LIST_STYLE_TYPE_KATAKANA_IROHA,   DW_STYLE_LIST_STYLE_TYPE_NONE} DwStyleListStyleType;typedef enum {  DW_STYLE_FONT_STYLE_NORMAL,  DW_STYLE_FONT_STYLE_ITALIC,  DW_STYLE_FONT_STYLE_OBLIQUE} DwStyleFontStyle;typedef enum {   DW_STYLE_TEXT_DECORATION_UNDERLINE    = 1 << 0,   DW_STYLE_TEXT_DECORATION_OVERLINE     = 1 << 1,   DW_STYLE_TEXT_DECORATION_LINE_THROUGH = 1 << 2,   DW_STYLE_TEXT_DECORATION_BLINK        = 1 << 3} DwStyleTextDecoration;typedef enum {   DW_STYLE_WHITE_SPACE_NORMAL,   DW_STYLE_WHITE_SPACE_PRE,   DW_STYLE_WHITE_SPACE_NOWRAP} DwStyleWhiteSpace;typedef struct _DwStyle            DwStyle;typedef struct _DwStyleFont        DwStyleFont;typedef struct _DwStyleColor       DwStyleColor;typedef struct _DwStyleShadedColor DwStyleShadedColor;typedef struct _DwStyleBox         DwStyleBox;/* * Lengths are gint's. Absolute lengths are represented in the following way: * *    +---+ - - - - - - - - - -+---+---+ *    | pixel value (integer)  | 0 | 1 | *    +---+ - - - - - - - - - -+---+---+ * * Percentages: * *    +---+ - - - +---+---+- - - - - -+---+---+---+ *    | integer part  | decimal fraction  | 1 | 0 | *    +---+ - - - +---+---+- - - - - -+---+---+---+ *     n-1          18  17              2   1   0 * *    | <------ fixed point value ------> | * * Relative lengths (only used in HTML): * *    +---+ - - - +---+---+- - - - - -+---+---+---+ *    | integer part  | decimal fraction  | 1 | 1 | *    +---+ - - - +---+---+- - - - - -+---+---+---+ *     n-1          18  17              2   1   0 * *    | <------ fixed point value ------> | * * "auto" lenghths are represented as DW_STYLE_LENGTH_AUTO. */typedef gint DwStyleLength;#define DW_STYLE_CREATE_ABS_LENGTH(n)  (((n) << 2) | 1)#define DW_STYLE_CREATE_PER_LENGTH(v)  ( ( (gint)((v) * (1 << 18)) & ~3 ) | 2 )#define DW_STYLE_CREATE_REL_LENGTH(v)  ( ( (gint)((v) * (1 << 18)) & ~3 ) | 3 )#define DW_STYLE_IS_ABS_LENGTH(l)      (((l) & 3) == 1)#define DW_STYLE_IS_PER_LENGTH(l)      (((l) & 3) == 2)#define DW_STYLE_IS_REL_LENGTH(l)      (((l) & 3) == 3)#define DW_STYLE_ABS_LENGTH_VAL(l)     ((l) >> 2)#define DW_STYLE_PER_LENGTH_VAL(l)     ( ( (gfloat)((l) & ~3) ) / (1 << 18) )#define DW_STYLE_REL_LENGTH_VAL(l)     ( ( (gfloat)((l) & ~3) ) / (1 << 18) )#define DW_STYLE_LENGTH_AUTO           0struct _DwStyleBox{   /* in future also percentages */   gint32 top, right, bottom, left;};struct _DwStyle{   gint ref_count;   DwStyleFont *font;   DwStyleTextDecoration text_decoration;   DwStyleColor *color, *background_color;   DwStyleTextAlignType text_align;   DwStyleVAlignType valign;   gchar text_align_char; /* In future, strings will be supported. */   gint32 border_spacing;   DwStyleLength width, height;   DwStyleBox margin, border_width, padding;   struct { DwStyleShadedColor *top, *right, *bottom, *left; } border_color;   struct { DwStyleBorderStyle top, right, bottom, left; } border_style;   DwStyleDisplayType display;   DwStyleWhiteSpace white_space;   DwStyleListStyleType list_style_type;   gint x_link;   DwTooltip *x_tooltip;};struct _DwStyleFont{   gint ref_count;   char *name;   gint32 size;   gint weight;   DwStyleFontStyle style;#ifdef USE_TYPE1   gint t1fontid;#else   GdkFont *font;#endif   gint space_width;   gint x_height;};struct _DwStyleColor{   gint ref_count;   gint color_val;   GdkColor color, inverse_color;   GdkGC *gc, *inverse_gc;};struct _DwStyleShadedColor{   gint ref_count;   gint color_val;   GdkColor color, inverse_color, color_dark, color_light;   GdkGC *gc, *inverse_gc, *gc_dark, *gc_light;};void a_Dw_style_init    (void);void a_Dw_style_freeall (void);void                a_Dw_style_init_values        (DwStyle *style_attrs,                                                   GdkWindow *window);void                a_Dw_style_reset_values       (DwStyle *style_attrs,                                                   GdkWindow *window);DwStyle*            a_Dw_style_new                (DwStyle *style_attrs,                                                   GdkWindow *window);DwStyleFont*        a_Dw_style_font_new           (DwStyleFont *font_attrs);DwStyleFont*        a_Dw_style_font_new_from_list (DwStyleFont *font_attrs,                                                   gchar *default_family);DwStyleColor*       a_Dw_style_color_new          (gint color_val,                                                   GdkWindow *window);DwStyleShadedColor* a_Dw_style_shaded_color_new   (gint color_val,                                                   GdkWindow *window);gboolean            a_Dw_style_size_diffs         (DwStyle *style1,                                                   DwStyle *style2);#define a_Dw_style_ref(style)   ((style)->ref_count++)#define a_Dw_style_unref(style) if (--((style)->ref_count) == 0) \                                   Dw_style_remove (style)/* Don't use this function directly! */void Dw_style_remove (DwStyle *style);#define a_Dw_style_box_set_val(box, val) \   ((box)->top = (box)->right = (box)->bottom = (box)->left = (val))#define a_Dw_style_box_set_border_color(style, val) \   ((style)->border_color.top = (style)->border_color.right = \    (style)->border_color.bottom = (style)->border_color.left = (val))#define a_Dw_style_box_set_border_style(style, val) \   ((style)->border_style.top = (style)->border_style.right = \    (style)->border_style.bottom = (style)->border_style.left = (val))/* For use of widgets */#define DW_INFINITY 1000000 /* random */void p_Dw_style_draw_border     (GdkWindow *window,                                 GdkRectangle *area,                                 gint32 vx,                                 gint32 vy,                                 gint32 x,                                 gint32 y,                                 gint32 width,                                 gint32 height,                                 DwStyle *style,                                 gboolean inverse);void p_Dw_style_draw_background (GdkWindow *window,                                 GdkRectangle *area,                                 gint32 vx,                                 gint32 vy,                                 gint32 x,                                 gint32 y,                                 gint32 width,                                 gint32 height,                                 DwStyle *style,                                 gboolean inverse);void a_Dw_style_numtostr         (gint num,                                  gchar *buf,                                  gint buflen,                                  DwStyleListStyleType list_style_tyle);#define p_Dw_style_box_offset_x(style)    ((style)->margin.left + \                                           (style)->border_width.left + \                                           (style)->padding.left)#define p_Dw_style_box_rest_width(style)  ((style)->margin.right + \                                           (style)->border_width.right + \                                           (style)->padding.right)#define p_Dw_style_box_diff_width(style)  (p_Dw_style_box_offset_x(style) + \                                           p_Dw_style_box_rest_width(style))#define p_Dw_style_box_offset_y(style)    ((style)->margin.top + \                                           (style)->border_width.top + \                                           (style)->padding.top)#define p_Dw_style_box_rest_height(style) ((style)->margin.bottom + \                                           (style)->border_width.bottom + \                                           (style)->padding.bottom)#define p_Dw_style_box_diff_height(style) (p_Dw_style_box_offset_y(style) + \                                           p_Dw_style_box_rest_height(style))#endif /* __DW_STYLE_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -