litehtml_glue.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. #ifndef BB_LITEHTML_GLUE_H
  2. #define BB_LITEHTML_GLUE_H
  3. #include <bbmonkey.h>
  4. #include <litehtml.h>
  5. class bb_litehtml_document_container : public bbObject,public litehtml::document_container{
  6. protected:
  7. virtual bbObject* _create_font( bbString faceName,bbInt size,bbInt weight,litehtml::font_style style,bbUInt decoration,litehtml::font_metrics *fm )=0;
  8. virtual void _delete_font( bbObject *font )=0;
  9. virtual bbInt _text_width( bbString text,bbObject *font )=0;
  10. virtual void _draw_text( bbObject *hdc,bbString text,bbObject *font,litehtml::web_color *color,litehtml::position *pos )=0;
  11. virtual bbInt _pt_to_px( int pt )=0;
  12. virtual bbInt _get_default_font_size()=0;
  13. virtual bbString _get_default_font_name()=0;
  14. virtual void _draw_list_marker( bbObject *hdc,litehtml::list_marker *marker )=0;
  15. virtual void _load_image( bbString src,bbString baseurl,bbBool redraw_on_ready )=0;
  16. virtual void _get_image_size( bbString src,bbString baseurl,litehtml::size *sz )=0;
  17. virtual void _draw_background( bbObject *hdc,bbString img_src,bbString img_baseurl,litehtml::background_paint *bg )=0;
  18. virtual void _draw_borders( bbObject *hdc,litehtml::borders *borders,litehtml::position *draw_pos,bbBool root )=0;
  19. virtual void _set_caption( bbString caption )=0;
  20. virtual void _set_base_url( bbString base_url )=0;
  21. virtual void _on_anchor_click( bbString url )=0;
  22. virtual void _set_cursor( bbString cursor )=0;
  23. virtual bbString _import_css( bbString url,bbString baseurl )=0;
  24. virtual void _set_clip( litehtml::position *pos,litehtml::border_radiuses *bdr_radius )=0;
  25. virtual void _del_clip()=0;
  26. virtual void _get_client_rect( litehtml::position *client )=0;
  27. virtual void _get_media_features( litehtml::media_features *media )=0;
  28. virtual bbString _get_language()=0;
  29. virtual bbString _get_culture()=0;
  30. //**** *document_container ******
  31. 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 );
  32. void delete_font( litehtml::uint_ptr hFont );
  33. int text_width( const litehtml::tchar_t *text,litehtml::uint_ptr hFont );
  34. void draw_text( litehtml::uint_ptr hdc,const litehtml::tchar_t *text,litehtml::uint_ptr hFont,litehtml::web_color color,const litehtml::position &pos );
  35. int pt_to_px( int pt );
  36. int get_default_font_size()const;
  37. const litehtml::tchar_t *get_default_font_name()const;
  38. void draw_list_marker( litehtml::uint_ptr hdc,const litehtml::list_marker &marker );
  39. void load_image( const litehtml::tchar_t *src,const litehtml::tchar_t *baseurl,bool redraw_on_ready );
  40. void get_image_size( const litehtml::tchar_t *src,const litehtml::tchar_t *baseurl,litehtml::size &sz );
  41. void draw_background( litehtml::uint_ptr hdc,const litehtml::background_paint &bg );
  42. void draw_borders( litehtml::uint_ptr hdc,const litehtml::borders &borders,const litehtml::position &draw_pos,bool root );
  43. void set_caption( const litehtml::tchar_t *caption );
  44. void set_base_url( const litehtml::tchar_t *base_url );
  45. void link( const std::shared_ptr<litehtml::document> &doc,const litehtml::element::ptr &el );
  46. void on_anchor_click( const litehtml::tchar_t *url,const litehtml::element::ptr &el );
  47. void set_cursor( const litehtml::tchar_t *cursor );
  48. void transform_text( litehtml::tstring &text,litehtml::text_transform tt );
  49. void import_css( litehtml::tstring &text,const litehtml::tstring &url,litehtml::tstring &baseurl );
  50. void set_clip( const litehtml::position &pos,const litehtml::border_radiuses &bdr_radius,bool valid_x,bool valid_y );
  51. void del_clip();
  52. void get_client_rect( litehtml::position &client )const;
  53. std::shared_ptr<litehtml::element> create_element( const litehtml::tchar_t *tag_name,
  54. const litehtml::string_map &attributes,
  55. const std::shared_ptr<litehtml::document> &doc );
  56. void get_media_features( litehtml::media_features &media )const;
  57. void get_language( litehtml::tstring &language,litehtml::tstring &culture )const;
  58. };
  59. class bb_litehtml_context : public bbObject,public litehtml::context{
  60. public:
  61. bb_litehtml_context();
  62. void load_master_stylesheet( bbString master_css );
  63. };
  64. class bb_litehtml_document : public bbObject{
  65. public:
  66. bb_litehtml_document( bbString source,bb_litehtml_document_container *container,bb_litehtml_context *context );
  67. ~bb_litehtml_document();
  68. void render( int max_width );
  69. void draw( bbObject *hdc,int x,int y,litehtml::position *clip );
  70. int width();
  71. int height();
  72. void media_changed();
  73. void on_mouse_over( int x,int y,int client_x,int client_y );
  74. void on_lbutton_down( int x,int y,int client_x,int client_y );
  75. void on_lbutton_up( int x,int y,int client_x,int client_y );
  76. void on_mouse_leave();
  77. private:
  78. litehtml::document::ptr _document{};
  79. bb_litehtml_document_container *_container{};
  80. bb_litehtml_context *_context{};
  81. bbObject *_drawing{};
  82. void gcMark();
  83. };
  84. #endif