Skip to content

Commit ebb69c3

Browse files
committed
Fixed windows_container not working
1 parent 30e5f5e commit ebb69c3

File tree

5 files changed

+23
-14
lines changed

5 files changed

+23
-14
lines changed

containers/windows/cairo/cairo_font.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,13 +282,17 @@ void cairo_font::get_metrics(cairo_t* cr, cairo_font_metrics* fm )
282282
cairo_font_extents_t ext;
283283
cairo_font_extents(cr, &ext);
284284

285-
cairo_text_extents_t tex;
286-
cairo_text_extents(cr, "x", &tex);
285+
cairo_text_extents_t tex_x;
286+
cairo_text_extents(cr, "x", &tex_x);
287+
288+
cairo_text_extents_t tex_0;
289+
cairo_text_extents(cr, "0", &tex_0);
287290

288291
fm->ascent = (int) ext.ascent;
289292
fm->descent = (int) ext.descent;
290293
fm->height = (int) (ext.ascent + ext.descent);
291-
fm->x_height = (int) tex.height;
294+
fm->x_height = (int) tex_x.height;
295+
fm->ch_width = (int) tex_0.width;
292296
unlock();
293297
}
294298

containers/windows/cairo/cairo_font.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ struct cairo_font_metrics
4545
int ascent;
4646
int descent;
4747
int x_height;
48+
int ch_width;
4849
};
4950

5051

containers/windows/cairo/windows_container.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ windows_container::~windows_container(void)
2323
cairo_destroy(m_temp_cr);
2424
}
2525

26-
litehtml::uint_ptr windows_container::create_font( const char* faceName, int size, int weight, litehtml::font_style italic, unsigned int decoration, litehtml::font_metrics* fm )
26+
litehtml::uint_ptr windows_container::create_font(const litehtml::font_description& descr, const litehtml::document* doc, litehtml::font_metrics* fm)
2727
{
2828
std::wstring fnt_name = L"sans-serif";
2929

3030
litehtml::string_vector fonts;
31-
litehtml::split_string(faceName, fonts, ",");
31+
litehtml::split_string(descr.family, fonts, ",");
3232
if(!fonts.empty())
3333
{
3434
litehtml::trim(fonts[0]);
@@ -45,28 +45,32 @@ litehtml::uint_ptr windows_container::create_font( const char* faceName, int siz
4545

4646
cairo_font* fnt = new cairo_font( m_font_link,
4747
fnt_name.c_str(),
48-
size,
49-
weight,
50-
(italic == litehtml::font_style_italic) ? TRUE : FALSE,
51-
(decoration & litehtml::font_decoration_linethrough) ? TRUE : FALSE,
52-
(decoration & litehtml::font_decoration_underline) ? TRUE : FALSE);
48+
descr.size,
49+
descr.weight,
50+
(descr.style == litehtml::font_style_italic) ? TRUE : FALSE,
51+
(descr.decoration_line & litehtml::text_decoration_line_line_through) ? TRUE : FALSE,
52+
(descr.decoration_line & litehtml::text_decoration_line_underline) ? TRUE : FALSE);
5353

5454
cairo_save(m_temp_cr);
5555
fnt->load_metrics(m_temp_cr);
5656

5757
if(fm)
5858
{
59+
fm->font_size = descr.size;
5960
fm->ascent = fnt->metrics().ascent;
6061
fm->descent = fnt->metrics().descent;
6162
fm->height = fnt->metrics().height;
6263
fm->x_height = fnt->metrics().x_height;
63-
if(italic == litehtml::font_style_italic || decoration)
64+
fm->ch_width = fnt->metrics().ch_width;
65+
if(descr.style == litehtml::font_style_italic || descr.decoration_line != litehtml::text_decoration_line_none)
6466
{
6567
fm->draw_spaces = true;
6668
} else
6769
{
6870
fm->draw_spaces = false;
6971
}
72+
fm->sub_shift = descr.size / 5;
73+
fm->super_shift = descr.size / 3;
7074
}
7175

7276
cairo_restore(m_temp_cr);

containers/windows/cairo/windows_container.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#include <litehtml.h>
1515
#include <dib.h>
1616
#include <txdib.h>
17-
#include "../../libs/litehtml/containers/cairo/container_cairo.h"
17+
#include "../../cairo/container_cairo.h"
1818

1919
class windows_container : public container_cairo
2020
{
@@ -26,7 +26,7 @@ class windows_container : public container_cairo
2626
windows_container(void);
2727
virtual ~windows_container(void);
2828

29-
litehtml::uint_ptr create_font(const char* faceName, int size, int weight, litehtml::font_style italic, unsigned int decoration, litehtml::font_metrics* fm) override;
29+
litehtml::uint_ptr create_font(const litehtml::font_description& descr, const litehtml::document* doc, litehtml::font_metrics* fm) override;
3030
void delete_font(litehtml::uint_ptr hFont) override;
3131
int text_width(const char* text, litehtml::uint_ptr hFont) override;
3232
void draw_text(litehtml::uint_ptr hdc, const char* text, litehtml::uint_ptr hFont, litehtml::web_color color, const litehtml::position& pos) override;

include/litehtml/element.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#include <memory>
66
#include <tuple>
77
#include <list>
8-
#include "litehtml/types.h"
8+
#include "types.h"
99
#include "stylesheet.h"
1010
#include "css_properties.h"
1111

0 commit comments

Comments
 (0)