summaryrefslogtreecommitdiff
path: root/libs/litehtml/containers/test/test_container.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/litehtml/containers/test/test_container.cpp')
-rw-r--r--libs/litehtml/containers/test/test_container.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/libs/litehtml/containers/test/test_container.cpp b/libs/litehtml/containers/test/test_container.cpp
new file mode 100644
index 0000000000..9522b577e3
--- /dev/null
+++ b/libs/litehtml/containers/test/test_container.cpp
@@ -0,0 +1,94 @@
+#include "test_container.h"
+#include "Font.h"
+string readfile(string filename);
+
+// note: font is selected only by size, name and style are not used
+uint_ptr test_container::create_font(const char* /*faceName*/, int size, int /*weight*/, font_style /*italic*/, unsigned int /*decoration*/, font_metrics* fm)
+{
+ Font* font = new Font(size);
+
+ if (fm)
+ {
+ fm->ascent = font->ascent;
+ fm->descent = font->descent;
+ fm->height = font->height;
+ fm->x_height = font->x_height;
+ }
+ return (uint_ptr)font;
+}
+
+int test_container::text_width(const char* text, uint_ptr hFont)
+{
+ Font* font = (Font*)hFont;
+ return (int)strlen(text) * font->width;
+}
+
+void test_container::draw_text(uint_ptr hdc, const char* text, uint_ptr hFont, web_color color, const position& pos)
+{
+ auto bmp = (Bitmap*)hdc;
+ Font* font = (Font*)hFont;
+
+ int x = pos.x;
+ for (auto p = text; *p; p++)
+ {
+ Bitmap glyph = font->get_glyph(*p, color);
+ bmp->draw_bitmap(x, pos.y, glyph);
+ x += glyph.width;
+ }
+}
+
+int test_container::pt_to_px(int pt) const { return pt * 96 / 72; }
+int test_container::get_default_font_size() const { return 16; }
+const char* test_container::get_default_font_name() const { return ""; }
+
+void test_container::draw_background(uint_ptr hdc, const std::vector<background_paint>& bg)
+{
+ auto bmp = (Bitmap*)hdc;
+ bmp->fill_rect(bg.back().border_box, bg.back().color);
+}
+
+void test_container::draw_borders(uint_ptr hdc, const borders& borders, const position& pos, bool /*root*/)
+{
+ auto bmp = (Bitmap*)hdc;
+
+ // left border
+ for (int x = 0; x < borders.left.width; x++)
+ bmp->draw_line(
+ pos.left() + x, pos.top(),
+ pos.left() + x, pos.bottom(), borders.left.color);
+
+ // right border
+ for (int x = 0; x < borders.right.width; x++)
+ bmp->draw_line(
+ pos.right() - x - 1, pos.top(),
+ pos.right() - x - 1, pos.bottom(), borders.right.color);
+
+ // top border
+ for (int y = 0; y < borders.top.width; y++)
+ bmp->draw_line(
+ pos.left(), pos.top() + y,
+ pos.right(), pos.top() + y, borders.top.color);
+
+ // bottom border
+ for (int y = 0; y < borders.bottom.width; y++)
+ bmp->draw_line(
+ pos.left(), pos.bottom() - y - 1,
+ pos.right(), pos.bottom() - y - 1, borders.bottom.color);
+}
+
+void test_container::draw_list_marker(uint_ptr hdc, const list_marker& marker)
+{
+ auto bmp = (Bitmap*)hdc;
+ bmp->fill_rect(marker.pos, marker.color);
+}
+
+void test_container::import_css(string& text, const string& url, string& baseurl)
+{
+ baseurl = basedir + "/" + url;
+ text = readfile(baseurl);
+}
+
+void test_container::get_client_rect(position& client) const
+{
+ client = position(0, 0, width, height);
+}