From 0b6d7198f4fc46961c57530e654691b5a66b36f0 Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Tue, 23 Aug 2011 20:12:41 +0000 Subject: Add support for selecting page-break-{before, after, inside} Credit: James Montgomerie svn path=/trunk/libcss/; revision=12645 --- src/select/computed.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'src/select/computed.c') 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 * -- cgit v1.2.3