Пример #1
0
void MenuWidget::insertItem(std::string text, int pos)
{
	int size = items_texts.size();
	assert(pos <= size);

	if(pos < 0)pos = size;
	
	items_texts.insert(items_texts.begin()+pos, text);
	items_checked.insert(items_checked.begin()+pos, false);
	items_rects.insert(items_rects.begin()+pos, hgeRect());
	

	recompute_dimensions();
}
Пример #2
0
///////////////// PRIVATE /////////////////
void MenuWidget::recompute_dimensions(){
	const float x = rect.x1, y = rect.y1;

	// h = summ, w = max
	float dh = font.GetHeight();
	float h = dh * items_texts.size();

	float w = 0;
	// update max
	for(int i=0; i<items_texts.size(); i++){
		float cur_w = font.GetStringWidth(items_texts[i].c_str());
		if(cur_w > w)
			w = cur_w;
	}

	// update rects
	for(int i=0; i<items_rects.size(); i++){
		float cur_w = font.GetStringWidth(items_texts[i].c_str());
		items_rects[i] = hgeRect(x + (w - cur_w) / 2, y + dh * i, x + w - (w - cur_w) / 2, y + dh * (i+1));		// center
	}

	rect = hgeRect(x, y, x+w, y+h);
}
Пример #3
0
MenuWidget::MenuWidget(float x, float y)
:font("font1.fnt")
{
	focused_item = -1;
	is_visible = 0;

	rect = hgeRect(x, y, 0, 0);

	color.SetHWColor(0xFFFFE060);
	light_color.SetHWColor(0xFFFFFFFF);
	shadow.SetHWColor(0x30000000);
	offset = 2;
	timer = 0;
	frame = 2;
	spf = 0.1f;

	recompute_dimensions();
}
Пример #4
0
	hgeRect Object::getClientRect() const
	{
		return hgeRect(windowRect.x1 + borderSize, windowRect.y1 + borderSize, windowRect.x2 - borderSize, windowRect.y2 - borderSize);
	}