/////////////////////////////////////////////////////////////////////////////// //
// IMPORTANT NOTICE
//
// The following open source license statement does not apply to any
// entity in the Exception List published by FMSoft.
//
// For more information, please visit:
//
// https://www.fmsoft.cn/exception-list
//
//////////////////////////////////////////////////////////////////////////////
/**
\verbatim
This file is part of HiDOMLayout. hiDOMLayout is a library to
maintain a DOM tree, lay out and stylize the DOM nodes by
using CSS (Cascaded Style Sheets).
Copyright (C) 2021 Beijing FMSoft Technologies Co., Ltd.
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 .
Or,
As this program is a library, any link to this program must follow
GNU Lesser General License version 3 (LGPLv3). If you cannot accept
LGPLv3, you need to be licensed from FMSoft.
If you have got a commercial license of this program, please use it
under the terms and conditions of the commercial license.
For more information about the commercial license, please refer to
.
\endverbatim
*/
#ifndef _HL_SELECT_H_
#define _HL_SELECT_H_
#include
#include "hidomlayout.h"
#include "node.h"
typedef struct HLCSS_ {
css_stylesheet* sheet;
css_stylesheet* ua_sheet;
int done;
} HLCSS;
#ifdef __cplusplus
extern "C" {
#endif
css_stylesheet* _hilayout_css_stylesheet_create(const char *charset, const char *url, bool allow_quirks, bool inline_style);
css_stylesheet* _hilayout_css_stylesheet_inline_style_create(const uint8_t *data, size_t len);
css_stylesheet* _hilayout_css_stylesheet_create_ua_css();
int _hilayout_css_stylesheet_append_data(css_stylesheet* sheet, const uint8_t *data, size_t len);
int _hilayout_css_stylesheet_data_done(css_stylesheet* sheet);
int _hilayout_css_stylesheet_destroy(css_stylesheet* sheet);
css_select_ctx* _hilayout_css_select_ctx_create(HLCSS* css);
int _hilayout_css_select_ctx_destroy(css_select_ctx* ctx);
int _hilayout_select_node_style(const css_media* media, css_select_ctx* select_ctx, HLDomElementNode* node);
css_select_results* _hilayout_get_node_style(const css_media* media, css_select_ctx* select_ctx, HLDomElementNode* node);
css_select_results* _hilayout_css_select_style(const HLCSS* css, void *node,
const css_media *media, const css_stylesheet *inline_style, css_select_handler *handler);
int _hilayout_css_select_result_destroy(css_select_results *result);
#ifdef __cplusplus
}
#endif
#endif // _HL_SELECT_H_