litehtml_glue.cpp 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. #include "litehtml_glue.h"
  2. //**** *bb_litehtml_document_container *****
  3. litehtml::uint_ptr bb_litehtml_document_container::create_font( const litehtml::tchar_t *faceName,int size,int weight,litehtml::font_style style,unsigned int decoration,litehtml::font_metrics *fm ){
  4. bbObject *font=_create_font( faceName,size,weight,style,decoration,fm );
  5. return font;
  6. }
  7. void bb_litehtml_document_container::delete_font( litehtml::uint_ptr hFont ){
  8. bbObject *font=(bbObject*)hFont;
  9. _delete_font( font );
  10. }
  11. int bb_litehtml_document_container::text_width( const litehtml::tchar_t *text,litehtml::uint_ptr hFont ){
  12. bbObject *font=(bbObject*)hFont;
  13. return _text_width( text,font );
  14. }
  15. void bb_litehtml_document_container::draw_text( litehtml::uint_ptr hHdc,const litehtml::tchar_t *text,litehtml::uint_ptr hFont,litehtml::web_color color,const litehtml::position &pos ){
  16. bbObject *hdc=(bbObject*)hHdc;
  17. bbObject *font=(bbObject*)hFont;
  18. _draw_text( hdc,text,font,&color,(litehtml::position*)&pos );
  19. }
  20. int bb_litehtml_document_container::pt_to_px( int pt ){
  21. return _pt_to_px( pt );
  22. }
  23. int bb_litehtml_document_container::get_default_font_size()const{
  24. return ((bb_litehtml_document_container*)this)->_get_default_font_size();
  25. }
  26. const litehtml::tchar_t *bb_litehtml_document_container::get_default_font_name()const{
  27. bbString name=((bb_litehtml_document_container*)this)->_get_default_font_name();
  28. return name.c_str();//<litehtml::tchar_t>();
  29. }
  30. void bb_litehtml_document_container::draw_list_marker( litehtml::uint_ptr hHdc,const litehtml::list_marker &marker ){
  31. bbObject *hdc=(bbObject*)hHdc;
  32. _draw_list_marker( hdc,(litehtml::list_marker*)&marker );
  33. }
  34. void bb_litehtml_document_container::load_image( const litehtml::tchar_t *src,const litehtml::tchar_t *baseurl,bool redraw_on_ready ){
  35. _load_image( src,"",redraw_on_ready );//baseurl,redraw_on_ready );
  36. }
  37. void bb_litehtml_document_container::get_image_size( const litehtml::tchar_t *src,const litehtml::tchar_t *baseurl,litehtml::size &sz ){
  38. _get_image_size( src,"",&sz );//baseurl,&sz );
  39. }
  40. void bb_litehtml_document_container::draw_background( litehtml::uint_ptr hHdc,const litehtml::background_paint &bg ){
  41. bbObject *hdc=(bbObject*)hHdc;
  42. _draw_background( hdc,bg.image.c_str(),"",(litehtml::background_paint*)&bg );
  43. }
  44. void bb_litehtml_document_container::draw_borders( litehtml::uint_ptr hHdc,const litehtml::borders &borders,const litehtml::position &draw_pos,bool root ){
  45. bbObject *hdc=(bbObject*)hHdc;
  46. _draw_borders( hdc,(litehtml::borders*)&borders,(litehtml::position*)&draw_pos,root );
  47. }
  48. void bb_litehtml_document_container::set_caption( const litehtml::tchar_t *caption ){
  49. _set_caption( caption );
  50. }
  51. void bb_litehtml_document_container::set_base_url( const litehtml::tchar_t *base_url ){
  52. _set_base_url( base_url );
  53. }
  54. void bb_litehtml_document_container::link( const std::shared_ptr<litehtml::document> &doc,const litehtml::element::ptr &el ){
  55. }
  56. void bb_litehtml_document_container::on_anchor_click( const litehtml::tchar_t *url,const litehtml::element::ptr &el ){
  57. _on_anchor_click( url );
  58. }
  59. void bb_litehtml_document_container::set_cursor( const litehtml::tchar_t *cursor ){
  60. _set_cursor( cursor );
  61. }
  62. void bb_litehtml_document_container::transform_text( litehtml::tstring &text,litehtml::text_transform tt ){
  63. // _transform_text( text,tt );
  64. }
  65. void bb_litehtml_document_container::import_css( litehtml::tstring &text,const litehtml::tstring &url,litehtml::tstring &baseurl ){
  66. bbString css=_import_css( url.c_str(),"" );
  67. text=css.c_str();
  68. // text=static_cast<const litehtml::tchar_t*>( css );
  69. baseurl="";
  70. }
  71. void bb_litehtml_document_container::set_clip( const litehtml::position &pos,const litehtml::border_radiuses &bdr_radius,bool valid_x,bool valid_y ){
  72. _set_clip( (litehtml::position*)&pos,(litehtml::border_radiuses*)&bdr_radius );
  73. }
  74. void bb_litehtml_document_container::del_clip(){
  75. _del_clip();
  76. }
  77. void bb_litehtml_document_container::get_client_rect( litehtml::position &client )const{
  78. ((bb_litehtml_document_container*)this)->_get_client_rect( &client );
  79. }
  80. std::shared_ptr<litehtml::element> bb_litehtml_document_container::create_element(
  81. const litehtml::tchar_t *tag_name,
  82. const litehtml::string_map &attributes,
  83. const std::shared_ptr<litehtml::document> &doc ){
  84. return nullptr;
  85. }
  86. void bb_litehtml_document_container::get_media_features( litehtml::media_features &media )const{
  87. ((bb_litehtml_document_container*)this)->_get_media_features( &media );
  88. }
  89. void bb_litehtml_document_container::get_language( litehtml::tstring &language,litehtml::tstring &culture )const{
  90. ((bb_litehtml_document_container*)this)->_get_language();
  91. ((bb_litehtml_document_container*)this)->_get_culture();
  92. }
  93. //**** *bb_litehtml_context ****
  94. bb_litehtml_context::bb_litehtml_context(){
  95. }
  96. void bb_litehtml_context::load_master_stylesheet( bbString master_css ){
  97. litehtml::context::load_master_stylesheet( bbCString( master_css ) );
  98. }
  99. //**** *bb_litehtml_document *****
  100. bb_litehtml_document::bb_litehtml_document( bbString source,bb_litehtml_document_container *container,bb_litehtml_context *context ){
  101. _document=litehtml::document::createFromUTF8( bbCString( source ),container,context );
  102. _container=container;
  103. _context=context;
  104. }
  105. bb_litehtml_document::~bb_litehtml_document(){
  106. }
  107. void bb_litehtml_document::render( int max_width ){
  108. _document->render( max_width );
  109. }
  110. void bb_litehtml_document::draw( bbObject *hdc,int x,int y,litehtml::position *clip ){
  111. _drawing=hdc;
  112. _document->draw( (litehtml::uint_ptr)hdc,x,y,clip );
  113. _drawing=nullptr;
  114. }
  115. int bb_litehtml_document::width(){
  116. return _document->width();
  117. }
  118. int bb_litehtml_document::height(){
  119. return _document->height();
  120. }
  121. void bb_litehtml_document::gcMark(){
  122. bbGCMark( _container );
  123. bbGCMark( _context );
  124. bbGCMark( _drawing );
  125. }
  126. void bb_litehtml_document::media_changed(){
  127. _document->media_changed();
  128. }
  129. void bb_litehtml_document::on_mouse_over( int x,int y,int client_x,int client_y ){
  130. litehtml::position::vector redraw_boxes;
  131. _document->on_mouse_over( x,y,client_x,client_y,redraw_boxes );
  132. }
  133. void bb_litehtml_document::on_lbutton_down( int x,int y,int client_x,int client_y ){
  134. litehtml::position::vector redraw_boxes;
  135. _document->on_lbutton_down( x,y,client_x,client_y,redraw_boxes );
  136. }
  137. void bb_litehtml_document::on_lbutton_up( int x,int y,int client_x,int client_y ){
  138. litehtml::position::vector redraw_boxes;
  139. _document->on_lbutton_up( x,y,client_x,client_y,redraw_boxes );
  140. }
  141. void bb_litehtml_document::on_mouse_leave(){
  142. litehtml::position::vector redraw_boxes;
  143. _document->on_mouse_leave( redraw_boxes );
  144. }