Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * This file is part of libdom.
  3.  * Licensed under the MIT License,
  4.  *                http://www.opensource.org/licenses/mit-license.php
  5.  * Copyright 2009 Bo Yang <struggleyb.nku.com>
  6.  */
  7.  
  8. #include <stdlib.h>
  9.  
  10. #include "html/html_style_element.h"
  11.  
  12. #include "core/node.h"
  13. #include "utils/utils.h"
  14.  
  15. static struct dom_element_protected_vtable _protect_vtable = {
  16.         {
  17.                 DOM_NODE_PROTECT_VTABLE_HTML_STYLE_ELEMENT
  18.         },
  19.         DOM_HTML_STYLE_ELEMENT_PROTECT_VTABLE
  20. };
  21.  
  22. /**
  23.  * Create a dom_html_style_element object
  24.  *
  25.  * \param doc  The document object
  26.  * \param ele  The returned element object
  27.  * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
  28.  */
  29. dom_exception _dom_html_style_element_create(struct dom_html_document *doc,
  30.                 struct dom_html_style_element **ele)
  31. {
  32.         struct dom_node_internal *node;
  33.  
  34.         *ele = malloc(sizeof(dom_html_style_element));
  35.         if (*ele == NULL)
  36.                 return DOM_NO_MEM_ERR;
  37.        
  38.         /* Set up vtables */
  39.         node = (struct dom_node_internal *) *ele;
  40.         node->base.vtable = &_dom_html_element_vtable;
  41.         node->vtable = &_protect_vtable;
  42.  
  43.         return _dom_html_style_element_initialise(doc, *ele);
  44. }
  45.  
  46. /**
  47.  * Initialise a dom_html_style_element object
  48.  *
  49.  * \param doc  The document object
  50.  * \param ele  The dom_html_style_element object
  51.  * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
  52.  */
  53. dom_exception _dom_html_style_element_initialise(struct dom_html_document *doc,
  54.                 struct dom_html_style_element *ele)
  55. {
  56.         dom_string *name = NULL;
  57.         dom_exception err;
  58.  
  59.         err = dom_string_create((const uint8_t *) "STYLE", SLEN("STYLE"),
  60.                         &name);
  61.         if (err != DOM_NO_ERR)
  62.                 return err;
  63.        
  64.         err = _dom_html_element_initialise(doc, &ele->base, name, NULL, NULL);
  65.         dom_string_unref(name);
  66.  
  67.         return err;
  68. }
  69.  
  70. /**
  71.  * Finalise a dom_html_style_element object
  72.  *
  73.  * \param ele  The dom_html_style_element object
  74.  */
  75. void _dom_html_style_element_finalise(struct dom_html_style_element *ele)
  76. {
  77.         _dom_html_element_finalise(&ele->base);
  78. }
  79.  
  80. /**
  81.  * Destroy a dom_html_style_element object
  82.  *
  83.  * \param ele  The dom_html_style_element object
  84.  */
  85. void _dom_html_style_element_destroy(struct dom_html_style_element *ele)
  86. {
  87.         _dom_html_style_element_finalise(ele);
  88.         free(ele);
  89. }
  90.  
  91. /*------------------------------------------------------------------------*/
  92. /* The protected virtual functions */
  93.  
  94. /* The virtual function used to parse attribute value, see src/core/element.c
  95.  * for detail */
  96. dom_exception _dom_html_style_element_parse_attribute(dom_element *ele,
  97.                 dom_string *name, dom_string *value,
  98.                 dom_string **parsed)
  99. {
  100.         UNUSED(ele);
  101.         UNUSED(name);
  102.  
  103.         dom_string_ref(value);
  104.         *parsed = value;
  105.  
  106.         return DOM_NO_ERR;
  107. }
  108.  
  109. /* The virtual destroy function, see src/core/node.c for detail */
  110. void _dom_virtual_html_style_element_destroy(dom_node_internal *node)
  111. {
  112.         _dom_html_style_element_destroy((struct dom_html_style_element *) node);
  113. }
  114.  
  115. /* The virtual copy function, see src/core/node.c for detail */
  116. dom_exception _dom_html_style_element_copy(dom_node_internal *old,
  117.                 dom_node_internal **copy)
  118. {
  119.         return _dom_html_element_copy(old, copy);
  120. }
  121.  
  122. /*-----------------------------------------------------------------------*/
  123. /* Public APIs */
  124.  
  125. /**
  126.  * Get the disabled property
  127.  *
  128.  * \param ele       The dom_html_style_element object
  129.  * \param disabled  The returned status
  130.  * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
  131.  */
  132. dom_exception dom_html_style_element_get_disabled(dom_html_style_element *ele,
  133.                 bool *disabled)
  134. {
  135.         return dom_html_element_get_bool_property(&ele->base, "disabled",
  136.                         SLEN("disabled"), disabled);
  137. }
  138.  
  139. /**
  140.  * Set the disabled property
  141.  *
  142.  * \param ele       The dom_html_style_element object
  143.  * \param disabled  The status
  144.  * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
  145.  */
  146. dom_exception dom_html_style_element_set_disabled(dom_html_style_element *ele,
  147.                 bool disabled)
  148. {
  149.         return dom_html_element_set_bool_property(&ele->base, "disabled",
  150.                         SLEN("disabled"), disabled);
  151. }
  152.  
  153.