Photon 1.0.0
Loading...
Searching...
No Matches
container_haiku.h
Go to the documentation of this file.
1/*
2 * Copyright 2019-2020 Haiku Inc.
3 * All rights reserved. Distributed under the terms of the BSD 3-clause license.
4 * Constributors
5 * 2019-2020 Adam Fowler <adamfowleruk@gmail.com>
6 */
7#ifndef LITEHTMLVIEW_H
8#define LITEHTMLVIEW_H
9
10#include "../../include/litehtml.h"
11
12#include <map>
13#include <string>
14
15#include <View.h>
16
17class BBitmap;
18
19
20enum {
21 M_HTML_RENDERED = 'hrnd'
22};
23
24class LiteHtmlView : public BView, public litehtml::document_container
25{
26public:
27 //LiteHtmlView(BMessage *archive);
28 LiteHtmlView(BRect frame, const char *name);
29 //LiteHtmlView(const char *name, uint32 flags, BLayout *layout=NULL);
30
31 virtual ~LiteHtmlView();
32
33 void SetContext(litehtml::context* ctx);
34 void RenderFile(const char* localFilePath);
35 void RenderHTML(const std::string& htmlText);
36
37
38 virtual litehtml::uint_ptr create_font(const litehtml::tchar_t* faceName, int size, int weight, litehtml::font_style italic, unsigned int decoration, litehtml::font_metrics* fm) override;
39 virtual void delete_font(litehtml::uint_ptr hFont) override;
40 virtual int text_width(const litehtml::tchar_t* text, litehtml::uint_ptr hFont) override;
41 virtual void draw_text(litehtml::uint_ptr hdc, const litehtml::tchar_t* text, litehtml::uint_ptr hFont, litehtml::web_color color, const litehtml::position& pos) override;
42 virtual int pt_to_px(int pt) override;
43 virtual int get_default_font_size() const override;
44 virtual const litehtml::tchar_t* get_default_font_name() const override;
45 virtual void load_image(const litehtml::tchar_t* src, const litehtml::tchar_t* baseurl, bool redraw_on_ready) override;
46 virtual void get_image_size(const litehtml::tchar_t* src, const litehtml::tchar_t* baseurl, litehtml::size& sz) override;
47 virtual void draw_background(litehtml::uint_ptr hdc, const litehtml::background_paint& bg) override;
48 virtual void draw_borders(litehtml::uint_ptr hdc, const litehtml::borders& borders, const litehtml::position& draw_pos, bool root) override;
49 virtual void draw_list_marker(litehtml::uint_ptr hdc, const litehtml::list_marker& marker) override;
50 virtual std::shared_ptr<litehtml::element> create_element(const litehtml::tchar_t *tag_name,
51 const litehtml::string_map &attributes,
52 const std::shared_ptr<litehtml::document> &doc) override;
53 virtual void get_media_features(litehtml::media_features& media) const override;
54 //virtual void get_language(litehtml::tstring& language, litehtml::tstring & culture) const override;
55 virtual void link(const std::shared_ptr<litehtml::document> &ptr, const litehtml::element::ptr& el) override;
56
57
58 virtual void transform_text(litehtml::tstring& text, litehtml::text_transform tt) override;
59 virtual void set_clip(const litehtml::position& pos, const litehtml::border_radiuses& bdr_radius) override;
60 virtual void del_clip() override;
61
62 // unimplemented
63 virtual void set_caption(const char*);
64 virtual void get_client_rect(litehtml::position& client) const;
65 virtual void set_base_url(const char*);
66 virtual void on_anchor_click(const char*, const litehtml::element::ptr&);
67 virtual void set_cursor(const char*);
68 virtual void import_css(litehtml::tstring&, const litehtml::tstring&, litehtml::tstring&);
69 virtual void get_language(litehtml::tstring&, litehtml::tstring&) const;
70
71 //BView
72 virtual void Draw(BRect updateRect) override;
73 virtual void GetPreferredSize(float* width, float* height) override;
74
75protected:
76 void make_url(const litehtml::tchar_t* url, const litehtml::tchar_t* basepath, litehtml::tstring& out);
77 virtual void draw_image( litehtml::uint_ptr hdc, const litehtml::tchar_t* src, const litehtml::tchar_t* baseurl, const litehtml::position& pos );
78
79private:
80 litehtml::context* fContext;
82 std::map<const std::string,BBitmap*> m_images;
83 litehtml::tstring m_base_url;
84 litehtml::tstring m_url;
85};
86
87#endif
Definition container_haiku.h:25
virtual void set_clip(const litehtml::position &pos, const litehtml::border_radiuses &bdr_radius) override
Definition container_haiku.cpp:482
virtual ~LiteHtmlView()
Definition container_haiku.cpp:45
void SetContext(litehtml::context *ctx)
Definition container_haiku.cpp:50
virtual void draw_image(litehtml::uint_ptr hdc, const litehtml::tchar_t *src, const litehtml::tchar_t *baseurl, const litehtml::position &pos)
Definition container_haiku.cpp:401
virtual void set_cursor(const char *)
Definition container_haiku.cpp:553
virtual void get_image_size(const litehtml::tchar_t *src, const litehtml::tchar_t *baseurl, litehtml::size &sz) override
Definition container_haiku.cpp:383
virtual const litehtml::tchar_t * get_default_font_name() const override
Definition container_haiku.cpp:294
virtual std::shared_ptr< litehtml::element > create_element(const litehtml::tchar_t *tag_name, const litehtml::string_map &attributes, const std::shared_ptr< litehtml::document > &doc) override
Definition container_haiku.cpp:496
litehtml::tstring m_url
Definition container_haiku.h:84
virtual void get_client_rect(litehtml::position &client) const
Definition container_haiku.cpp:535
virtual void draw_borders(litehtml::uint_ptr hdc, const litehtml::borders &borders, const litehtml::position &draw_pos, bool root) override
Definition container_haiku.cpp:430
virtual int get_default_font_size() const override
Definition container_haiku.cpp:287
virtual litehtml::uint_ptr create_font(const litehtml::tchar_t *faceName, int size, int weight, litehtml::font_style italic, unsigned int decoration, litehtml::font_metrics *fm) override
Definition container_haiku.cpp:135
virtual int pt_to_px(int pt) override
Definition container_haiku.cpp:280
void RenderHTML(const std::string &htmlText)
Definition container_haiku.cpp:80
virtual void draw_list_marker(litehtml::uint_ptr hdc, const litehtml::list_marker &marker) override
Definition container_haiku.cpp:305
virtual void transform_text(litehtml::tstring &text, litehtml::text_transform tt) override
Definition container_haiku.cpp:476
virtual void set_base_url(const char *)
Definition container_haiku.cpp:366
virtual void on_anchor_click(const char *, const litehtml::element::ptr &)
Definition container_haiku.cpp:547
virtual void draw_text(litehtml::uint_ptr hdc, const litehtml::tchar_t *text, litehtml::uint_ptr hFont, litehtml::web_color color, const litehtml::position &pos) override
Definition container_haiku.cpp:230
virtual void get_media_features(litehtml::media_features &media) const override
Definition container_haiku.cpp:505
virtual void Draw(BRect updateRect) override
Definition container_haiku.cpp:101
virtual void import_css(litehtml::tstring &, const litehtml::tstring &, litehtml::tstring &)
Definition container_haiku.cpp:559
std::map< const std::string, BBitmap * > m_images
Definition container_haiku.h:82
litehtml::tstring m_base_url
Definition container_haiku.h:83
litehtml::document::ptr m_html
Definition container_haiku.h:81
virtual void del_clip() override
Definition container_haiku.cpp:488
virtual void get_language(litehtml::tstring &, litehtml::tstring &) const
Definition container_haiku.cpp:565
void make_url(const litehtml::tchar_t *url, const litehtml::tchar_t *basepath, litehtml::tstring &out)
Definition container_haiku.cpp:335
virtual void load_image(const litehtml::tchar_t *src, const litehtml::tchar_t *baseurl, bool redraw_on_ready) override
Definition container_haiku.cpp:316
litehtml::context * fContext
Definition container_haiku.h:80
virtual void draw_background(litehtml::uint_ptr hdc, const litehtml::background_paint &bg) override
Definition container_haiku.cpp:418
virtual void set_caption(const char *)
Definition container_haiku.cpp:529
void RenderFile(const char *localFilePath)
Definition container_haiku.cpp:56
virtual void delete_font(litehtml::uint_ptr hFont) override
Definition container_haiku.cpp:213
virtual void GetPreferredSize(float *width, float *height) override
Definition container_haiku.cpp:121
virtual int text_width(const litehtml::tchar_t *text, litehtml::uint_ptr hFont) override
Definition container_haiku.cpp:219
Definition document_container.h:34
std::shared_ptr< document > ptr
Definition document.h:47
std::shared_ptr< element > ptr
Definition element.h:25
FMT_CONSTEXPR text_style bg(detail::color_type background) noexcept
Definition color.h:363
@ M_HTML_RENDERED
Definition container_haiku.h:21
#define out
Definition encodings.cpp:5
auto ptr(T p) -> const void *
Definition format.h:4568
text_transform
Definition types.h:582
std::uintptr_t uint_ptr
Definition types.h:17
font_style
Definition types.h:374
std::map< string, string > string_map
Definition types.h:31
Definition Bitmap.h:10
Definition borders.h:67
Definition borders.h:250
Definition types.h:197
Definition document_container.h:16
Definition types.h:878
Definition types.h:103
Definition types.h:89
Definition web_color.h:9
annotation tt
Definition tag_strings.h:155
link
Definition tag_strings.h:8
annotation frame
Definition tag_strings.h:133