void CL_CSSBoxOutlineWidth::compute(const CL_CSSBoxOutlineWidth *parent, CL_CSSResourceCache *layout, float em_size, float ex_size, const CL_CSSBoxOutlineStyle &style)
{
	if (type == type_inherit)
	{
		if (parent)
		{
			type = parent->type;
			length = parent->length;
		}
		else
		{
			type = type_medium;
		}
	}

	switch (type)
	{
	case type_thin:
		type = type_length;
		length = CL_CSSBoxLength(1.0f, CL_CSSBoxLength::type_px);
		break;

	case type_medium:
		type = type_length;
		length = CL_CSSBoxLength(2.0f, CL_CSSBoxLength::type_px);
		break;

	case type_thick:
		type = type_length;
		length = CL_CSSBoxLength(3.0f, CL_CSSBoxLength::type_px);
		break;
	default:
		break;
	}

	if (style.type == CL_CSSBoxOutlineStyle::type_hidden || style.type == CL_CSSBoxOutlineStyle::type_none)
	{
		type = type_length;
		length = CL_CSSBoxLength(0.0f, CL_CSSBoxLength::type_px);
	}

	if (type == type_length)
	{
		length = layout->compute_length(length, em_size, ex_size);
	}
}
void CL_CSSBoxPaddingWidth::compute(const CL_CSSBoxPaddingWidth *parent, CL_CSSResourceCache *layout, float em_size, float ex_size)
{
	if (type == type_inherit)
	{
		if (parent)
		{
			type = parent->type;
			length = parent->length;
			percentage = parent->percentage;
		}
		else
		{
			type = type_length;
			length = CL_CSSBoxLength(0.0f, CL_CSSBoxLength::type_px);
		}
	}

	if (type == type_length)
		length = layout->compute_length(length, em_size, ex_size);
}
CL_CSSBoxLength CL_CSSResourceCache::get_font_table_larger(float em_size)
{
	return CL_CSSBoxLength(18.0f, CL_CSSBoxLength::type_px);
}
CL_CSSBoxLength CL_CSSResourceCache::get_font_table_size(int size)
{
	return CL_CSSBoxLength(16.0f, CL_CSSBoxLength::type_px);
}
예제 #5
0
void CL_CSSBoxFontSize::compute(const CL_CSSBoxFontSize *parent, CL_CSSResourceCache *layout, float em_size, float ex_size)
{
	if (type == type_inherit)
	{
		if (parent)
		{
			type = parent->type;
			length = parent->length;
			percentage = parent->percentage;
		}
		else
		{
			type = type_medium;
		}
	}

	switch (type)
	{
	case type_xx_small:
		type = type_length;
		length = layout->get_font_table_size(0);
		break;
	case type_x_small:
		type = type_length;
		length = layout->get_font_table_size(1);
		break;
	case type_small:
		type = type_length;
		length = layout->get_font_table_size(2);
		break;
	case type_medium:
		type = type_length;
		length = layout->get_font_table_size(3);
		break;
	case type_large:
		type = type_length;
		length = layout->get_font_table_size(4);
		break;
	case type_x_large:
		type = type_length;
		length = layout->get_font_table_size(5);
		break;
	case type_xx_large:
		type = type_length;
		length = layout->get_font_table_size(6);
		break;
	case type_smaller:
		type = type_length;
		length = layout->get_font_table_smaller(em_size);
		break;
	case type_larger:
		type = type_length;
		length = layout->get_font_table_larger(em_size);
		break;
	default:
		break;
	}

	if (type == type_percentage)
	{
		type = type_length;
		length = CL_CSSBoxLength(percentage / 100.0f, CL_CSSBoxLength::type_em);
	}

	if (type == type_length)
		length = layout->compute_length(length, em_size, ex_size);
}