summaryrefslogtreecommitdiff
path: root/include/libcss
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2009-03-22 00:23:55 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2009-03-22 00:23:55 +0000
commitc58f7a4ff983d282488b7b3413dd3dd572a84ad1 (patch)
treef28580f30fc8ea91190f1af032bf90372e17479b /include/libcss
parent2caf5a7505210eadd95cd35ad34600275aafcd65 (diff)
downloadlibcss-c58f7a4ff983d282488b7b3413dd3dd572a84ad1.tar.gz
libcss-c58f7a4ff983d282488b7b3413dd3dd572a84ad1.tar.bz2
Sketch out something for presentational hints.
The client will have to maintain some state to be able to calculate this struct for every node selection, but that shouldn't be overly onerous. Also, the mess surrounding centering can only be sensibly solved through the addition of a new, prefixed, property. svn path=/trunk/libcss/; revision=6816
Diffstat (limited to 'include/libcss')
-rw-r--r--include/libcss/hint.h118
-rw-r--r--include/libcss/select.h3
2 files changed, 120 insertions, 1 deletions
diff --git a/include/libcss/hint.h b/include/libcss/hint.h
new file mode 100644
index 0000000..366b254
--- /dev/null
+++ b/include/libcss/hint.h
@@ -0,0 +1,118 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2009 John-Mark Bell <jmb@netsurf-browser.org>
+ */
+
+#ifndef libcss_hint_h_
+#define libcss_hint_h_
+
+#include <libwapcaplet/libwapcaplet.h>
+
+#include <libcss/errors.h>
+#include <libcss/functypes.h>
+#include <libcss/types.h>
+
+/**
+ * Length object for use in presentational hints
+ */
+typedef struct css_hint_length {
+ css_fixed value;
+ css_unit unit;
+} css_hint_length;
+
+/**
+ * Typed colour object for use in presentational hints
+ */
+typedef struct css_hint_typed_colour {
+ uint8_t type;
+ css_colour color;
+} css_hint_typed_colour;
+
+/**
+ * Typed length object for use in presentational hints
+ */
+typedef struct css_hint_typed_length {
+ uint8_t type;
+ css_hint_length length;
+} css_hint_typed_length;
+
+/**
+ * Typed string object for use in presentational hints
+ */
+typedef struct css_hint_typed_string {
+ uint8_t type;
+ lwc_string *string;
+} css_hint_typed_string;
+
+/**
+ * Presentational hint border
+ */
+typedef struct css_hint_border {
+ css_hint_typed_length width;
+ css_hint_typed_colour color;
+ uint8_t style;
+} css_hint_border;
+
+/**
+ * Presentational hints
+ *
+ * \todo There's no way to flag that a property isn't set here.
+ */
+typedef struct css_hint {
+ css_hint_typed_colour background_color;
+
+ css_hint_typed_string background_image;
+
+ uint8_t border_collapse;
+
+ css_hint_border border_bottom;
+ css_hint_border border_left;
+ css_hint_border border_right;
+ css_hint_border border_top;
+
+ struct {
+ uint8_t type;
+ css_hint_length h;
+ css_hint_length v;
+ } border_spacing;
+
+ uint8_t caption_side;
+
+ uint8_t clear;
+
+ css_hint_typed_colour color;
+
+ uint8_t _float;
+
+ css_hint_typed_string font_family;
+
+ css_hint_typed_length font_size;
+
+ css_hint_typed_length height;
+
+ uint8_t list_style_type;
+
+ css_hint_typed_length margin_bottom;
+ css_hint_typed_length margin_left;
+ css_hint_typed_length margin_right;
+ css_hint_typed_length margin_top;
+
+ uint8_t overflow;
+
+ css_hint_typed_length padding_bottom;
+ css_hint_typed_length padding_left;
+ css_hint_typed_length padding_right;
+ css_hint_typed_length padding_top;
+
+ uint8_t text_align;
+
+ css_hint_typed_length vertical_align;
+
+ uint8_t white_space;
+
+ css_hint_typed_length width;
+} css_hint;
+
+#endif
diff --git a/include/libcss/select.h b/include/libcss/select.h
index 6d774ec..44befcd 100644
--- a/include/libcss/select.h
+++ b/include/libcss/select.h
@@ -12,6 +12,7 @@
#include <libcss/errors.h>
#include <libcss/functypes.h>
+#include <libcss/hint.h>
#include <libcss/types.h>
enum css_pseudo_element {
@@ -79,7 +80,7 @@ css_error css_select_ctx_get_sheet(css_select_ctx *ctx, uint32_t index,
css_error css_select_style(css_select_ctx *ctx, void *node,
uint32_t pseudo_element, uint64_t media,
- css_computed_style *result,
+ const css_hint *hints, css_computed_style *result,
css_select_handler *handler, void *pw);
#endif