summaryrefslogtreecommitdiff
path: root/src/select/computed.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2011-08-23 20:12:41 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2011-08-23 20:12:41 +0000
commit0b6d7198f4fc46961c57530e654691b5a66b36f0 (patch)
tree3e2a25ec514b4d9c34ea92dd79c4eafdc6008b76 /src/select/computed.c
parentda47188a8369bb79884d37f3222c8bf8fabb7ea4 (diff)
downloadlibcss-0b6d7198f4fc46961c57530e654691b5a66b36f0.tar.gz
libcss-0b6d7198f4fc46961c57530e654691b5a66b36f0.tar.bz2
Add support for selecting page-break-{before, after, inside}
Credit: James Montgomerie svn path=/trunk/libcss/; revision=12645
Diffstat (limited to 'src/select/computed.c')
-rw-r--r--src/select/computed.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/select/computed.c b/src/select/computed.c
index 198b243..991a9a8 100644
--- a/src/select/computed.c
+++ b/src/select/computed.c
@@ -2160,6 +2160,70 @@ uint8_t css_computed_text_align(
#undef CSS_TEXT_ALIGN_SHIFT
#undef CSS_TEXT_ALIGN_INDEX
+#define CSS_PAGE_BREAK_AFTER_INDEX 0
+#define CSS_PAGE_BREAK_AFTER_SHIFT 0
+#define CSS_PAGE_BREAK_AFTER_MASK 0x7
+uint8_t css_computed_page_break_after(
+ const css_computed_style *style)
+{
+ if (style->page != NULL) {
+ uint8_t bits = style->page->bits[CSS_PAGE_BREAK_AFTER_INDEX];
+ bits &= CSS_PAGE_BREAK_AFTER_MASK;
+ bits >>= CSS_PAGE_BREAK_AFTER_SHIFT;
+
+ /* 3bits: type */
+ return bits;
+ }
+
+ return CSS_PAGE_BREAK_AFTER_AUTO;
+}
+#undef CSS_PAGE_BREAK_AFTER_MASK
+#undef CSS_PAGE_BREAK_AFTER_SHIFT
+#undef CSS_PAGE_BREAK_AFTER_INDEX
+
+#define CSS_PAGE_BREAK_BEFORE_INDEX 0
+#define CSS_PAGE_BREAK_BEFORE_SHIFT 3
+#define CSS_PAGE_BREAK_BEFORE_MASK 0x38
+uint8_t css_computed_page_break_before(
+ const css_computed_style *style)
+{
+ if (style->page != NULL) {
+ uint8_t bits = style->page->bits[CSS_PAGE_BREAK_BEFORE_INDEX];
+ bits &= CSS_PAGE_BREAK_BEFORE_MASK;
+ bits >>= CSS_PAGE_BREAK_BEFORE_SHIFT;
+
+ /* 3bits: type */
+ return bits;
+ }
+
+ return CSS_PAGE_BREAK_BEFORE_AUTO;
+}
+#undef CSS_PAGE_BREAK_BEFORE_MASK
+#undef CSS_PAGE_BREAK_BEFORE_SHIFT
+#undef CSS_PAGE_BREAK_BEFORE_INDEX
+
+#define CSS_PAGE_BREAK_INSIDE_INDEX 0
+#define CSS_PAGE_BREAK_INSIDE_SHIFT 6
+#define CSS_PAGE_BREAK_INSIDE_MASK 0xc0
+uint8_t css_computed_page_break_inside(
+ const css_computed_style *style)
+{
+ if (style->page != NULL) {
+ uint8_t bits = style->page->bits[CSS_PAGE_BREAK_INSIDE_INDEX];
+ bits &= CSS_PAGE_BREAK_INSIDE_MASK;
+ bits >>= CSS_PAGE_BREAK_INSIDE_SHIFT;
+
+ /* 2bits: type */
+ return bits;
+ }
+
+ return CSS_PAGE_BREAK_INSIDE_AUTO;
+}
+#undef CSS_PAGE_BREAK_INSIDE_MASK
+#undef CSS_PAGE_BREAK_INSIDE_SHIFT
+#undef CSS_PAGE_BREAK_INSIDE_INDEX
+
+
/******************************************************************************
* Library internals *