summaryrefslogtreecommitdiff
path: root/src/select/computed.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2009-02-07 02:08:15 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2009-02-07 02:08:15 +0000
commit3f5ac6a18b13034f14c7f9261f57887a52e454e3 (patch)
treea00df47421276213a980aa57612a643bbca3d607 /src/select/computed.c
parent9ed557ba18facc04fd9d9b35a5dac15844f161c3 (diff)
downloadlibcss-3f5ac6a18b13034f14c7f9261f57887a52e454e3.tar.gz
libcss-3f5ac6a18b13034f14c7f9261f57887a52e454e3.tar.bz2
More API changes.
Make css_computed_style_create() private. Implement css_computed_style_[create,destroy](). svn path=/trunk/libcss/; revision=6389
Diffstat (limited to 'src/select/computed.c')
-rw-r--r--src/select/computed.c130
1 files changed, 130 insertions, 0 deletions
diff --git a/src/select/computed.c b/src/select/computed.c
new file mode 100644
index 0000000..6a6808b
--- /dev/null
+++ b/src/select/computed.c
@@ -0,0 +1,130 @@
+/*
+ * 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>
+ */
+
+#include <string.h>
+
+#include "select/computed.h"
+#include "utils/utils.h"
+
+/**
+ * Create a computed style
+ *
+ * \param alloc Memory (de)allocation function
+ * \param pw Pointer to client-specific data
+ * \param result Pointer to location to receive result
+ * \return CSS_OK on success,
+ * CSS_NOMEM on memory exhaustion,
+ * CSS_BADPARM on bad parameters.
+ */
+css_error css_computed_style_create(css_alloc alloc, void *pw,
+ css_computed_style **result)
+{
+ css_computed_style *s;
+
+ if (alloc == NULL || result == NULL)
+ return CSS_BADPARM;
+
+ s = alloc(NULL, sizeof(css_computed_style), pw);
+ if (s == NULL)
+ return CSS_NOMEM;
+
+ memset(s, 0, sizeof(css_computed_style));
+
+ *result = s;
+
+ return CSS_OK;
+}
+
+/**
+ * Destroy a computed style
+ *
+ * \param style Style to destroy
+ * \return CSS_OK on success, appropriate error otherwise
+ */
+css_error css_computed_style_destroy(css_computed_style *style)
+{
+ if (style == NULL)
+ return CSS_BADPARM;
+
+ if (style->uncommon != NULL) {
+ if (style->uncommon->counter_increment != NULL) {
+ css_computed_counter **c =
+ style->uncommon->counter_increment;
+
+ while (*c != NULL) {
+ style->alloc(*c, 0, style->pw);
+ c++;
+ }
+
+ style->alloc(style->uncommon->counter_increment, 0,
+ style->pw);
+ }
+
+ if (style->uncommon->counter_reset != NULL) {
+ css_computed_counter **c =
+ style->uncommon->counter_reset;
+
+ while (*c != NULL) {
+ style->alloc(*c, 0, style->pw);
+ c++;
+ }
+
+ style->alloc(style->uncommon->counter_reset, 0,
+ style->pw);
+ }
+
+ if (style->uncommon->quotes != NULL)
+ style->alloc(style->uncommon->quotes, 0, style->pw);
+
+ if (style->uncommon->cursor != NULL)
+ style->alloc(style->uncommon->cursor, 0, style->pw);
+
+ style->alloc(style->uncommon, 0, style->pw);
+ }
+
+ if (style->page != NULL) {
+ /** \todo clean up members */
+ style->alloc(style->page, 0, style->pw);
+ }
+
+ if (style->aural != NULL) {
+ /** \todo clean up members */
+ style->alloc(style->aural, 0, style->pw);
+ }
+
+ if (style->font_family != NULL)
+ style->alloc(style->font_family, 0, style->pw);
+
+ style->alloc(style, 0, style->pw);
+
+ return CSS_OK;
+}
+
+/**
+ * Compose two computed styles
+ *
+ * \param parent Parent style
+ * \param child Child style
+ * \param result Pointer to location to receive composed style
+ * \return CSS_OK on success, appropriate error otherwise.
+ *
+ * Precondition: Parent is a fully composed style (thus has no properties
+ * marked as inherited)
+ */
+css_error css_computed_style_compose(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style **result)
+{
+ UNUSED(parent);
+ UNUSED(child);
+ UNUSED(result);
+
+ /** \todo implement */
+
+ return CSS_OK;
+}
+