1 #pragma once 2 #include <Windows.h> 3 4 namespace litehtml 5 { 6 class win32_container : public document_container 7 { 8 public: 9 typedef std::map<std::wstring, litehtml::uint_ptr> images_map; 10 11 protected: 12 13 images_map m_images; 14 litehtml::position::vector m_clips; 15 HRGN m_hClipRgn; 16 17 public: 18 win32_container(); 19 virtual ~win32_container(); 20 21 // litehtml::document_container members 22 virtual uint_ptr create_font(const wchar_t* faceName, int size, int weight, font_style italic, unsigned int decoration); 23 virtual void delete_font(uint_ptr hFont); 24 virtual int line_height(uint_ptr hdc, uint_ptr hFont); 25 virtual int get_text_base_line(uint_ptr hdc, uint_ptr hFont); 26 virtual int text_width(uint_ptr hdc, const wchar_t* text, uint_ptr hFont); 27 virtual void draw_text(uint_ptr hdc, const wchar_t* text, uint_ptr hFont, litehtml::web_color color, const litehtml::position& pos); 28 virtual void fill_rect(uint_ptr hdc, const litehtml::position& pos, const litehtml::web_color color, const litehtml::css_border_radius& radius); 29 virtual uint_ptr get_temp_dc(); 30 virtual void release_temp_dc(uint_ptr hdc); 31 virtual int pt_to_px(int pt); 32 virtual void draw_list_marker(uint_ptr hdc, const litehtml::list_marker& marker); 33 virtual void load_image(const wchar_t* src, const wchar_t* baseurl, bool redraw_on_ready); 34 virtual void get_image_size(const wchar_t* src, const wchar_t* baseurl, litehtml::size& sz); 35 virtual void draw_image(uint_ptr hdc, const wchar_t* src, const wchar_t* baseurl, const litehtml::position& pos); 36 virtual void draw_background(uint_ptr hdc, 37 const wchar_t* image, 38 const wchar_t* baseurl, 39 const litehtml::position& draw_pos, 40 const litehtml::css_position& bg_pos, 41 litehtml::background_repeat repeat, 42 litehtml::background_attachment attachment); 43 44 virtual int get_default_font_size() const; 45 virtual wchar_t toupper(const wchar_t c); 46 virtual wchar_t tolower(const wchar_t c); 47 virtual void set_clip(const litehtml::position& pos, bool valid_x, bool valid_y); 48 virtual void del_clip(); 49 50 protected: 51 void apply_clip(HDC hdc); 52 void release_clip(HDC hdc); 53 void clear_images(); 54 virtual void make_url( LPCWSTR url, LPCWSTR basepath, std::wstring& out ) = 0; 55 virtual uint_ptr get_image(LPCWSTR url) = 0; 56 virtual void free_image(uint_ptr img) = 0; 57 virtual void get_client_rect(litehtml::position& client) = 0; 58 virtual void draw_ellipse(HDC hdc, int x, int y, int width, int height, const web_color& color, int line_width) = 0; 59 virtual void fill_ellipse(HDC hdc, int x, int y, int width, int height, const web_color& color) = 0; 60 virtual void fill_rect(HDC hdc, int x, int y, int width, int height, const web_color& color, const litehtml::css_border_radius& radius) = 0; 61 virtual void get_img_size(litehtml::uint_ptr img, litehtml::size& sz) = 0; 62 virtual void draw_img(HDC hdc, litehtml::uint_ptr img, const litehtml::position& pos) = 0; 63 virtual void draw_img_bg(HDC hdc, litehtml::uint_ptr img, const litehtml::position& draw_pos, const litehtml::position& pos, litehtml::background_repeat repeat, litehtml::background_attachment attachment) = 0; 64 }; 65 }