Beispiel #1
0
float android_font_measure_text(void *p_font, const char *p_text, uint32_t p_text_length, bool p_is_unicode)
{
	MCAndroidFont *t_font = (MCAndroidFont*)p_font;
    
	SkPaint t_paint;
	t_paint.setTypeface(t_font->sk_typeface);
	t_paint.setTextSize(t_font->size);
    
	if (p_is_unicode)
	{
		t_paint.setTextEncoding(SkPaint::kUTF16_TextEncoding);
		return t_paint.measureText(p_text, p_text_length);
	}
	else
	{
		MCExecPoint ep;
		ep.setsvalue(MCString(p_text, p_text_length));
        
		ep.nativetoutf8();
        
		const MCString &t_utf_string = ep.getsvalue();
        
		t_paint.setTextEncoding(SkPaint::kUTF8_TextEncoding);
        
		return t_paint.measureText(t_utf_string.getstring(), t_utf_string.getlength());
	}
}