HiDomLayout API Reference  v1.0.0
hiDOMLayout is a library to maintain a DOM tree, lay out and stylize the DOM nodes by using CSS (Cascaded Style Sheets).


hiDOMLayout is a library to maintain a DOM tree, lay out and stylize the DOM nodes by using CSS (Cascaded Style Sheets). It integrates LibCSS (MIT licensed), LibParserUtils (MIT licensed) and LibWapcaplet (MIT licensed) from open source community.


hiDOMLayout depends on the following libraries:


We recommend that you use a latest Linux distribution with long term support, for example, Ubuntu Linux LTS 18.04 or 20.04.

On Ubuntu Linux LTS 18.04 or 20.04, you should run apt install <package_name> to install the following packages:

hiDOMLayout uses cmake to configure and build the project.

$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install


HLDomElementNode* hilayout_element_node_create(const char* tag_name);
// set common attribute
int hilayout_element_node_set_id (HLDomElementNode* node, const char* id);
int hilayout_element_node_set_class (HLDomElementNode* node, const char* class_name);
int hilayout_element_node_set_style (HLDomElementNode* node, const char* style);
int hilayout_element_node_set_name (HLDomElementNode* node, const char* name);
int hilayout_element_node_set_common_attr (HLDomElementNode* node, HLCommonAttribute attr_id, const char* value);
int hilayout_element_node_append_as_last_child(HLDomElementNode* node, HLDomElementNode* parent);
HLCSS* hilayout_css_create();
int hilayout_css_append_data(HLCSS* css, const char* data, size_t len);
int hilayout_do_layout(HLMedia* media, HLCSS* css, HLDomElementNode *root);
void hilayout_element_node_destroy(HLDomElementNode *node);
int hilayout_css_destroy(HLCSS* css);

CSS property support


Copyright (C) 2021 FMSoft https://www.fmsoft.cn

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General License for more details.

You should have received a copy of the GNU Lesser General License along with this program. If not, see http://www.gnu.org/licenses/.

Commercial License

If you cannot accept LGPLv3, you need to be licensed from FMSoft.

For more information about the commercial license, please refer to https://hybridos.fmsoft.cn/blog/hybridos-licensing-policy.

Special Statement

The above open source or free software license(s) does not apply to any entity in the Exception List published by Beijing FMSoft Technologies Co., Ltd.

If you are or the entity you represent is listed in the Exception List, the above open source or free software license does not apply to you or the entity you represent. Regardless of the purpose, you should not use the software in any way whatsoever, including but not limited to downloading, viewing, copying, distributing, compiling, and running. If you have already downloaded it, you MUST destroy all of its copies.

The Exception List is published by FMSoft and may be updated from time to time. For more information, please see https://www.fmsoft.cn/exception-list.