コード例 #1
0
  void assign_view(ViewT1 sv)
  {
    // processor 0 will distribute data to all other procs
    vsip::Vector<vsip::processor_type> pvec_in(1);pvec_in(0)=(0);
    vsip::Map<>                  root_map(pvec_in);
    dst_block                    root_block(sv.size(),root_map);
    dst_view                     root_view(root_block);

    // Ok, now move the vector to the distributed view
    vsip::impl::assign_local(root_view,sv);
    view = root_view;

  };
コード例 #2
0
ファイル: msg_boxes.cpp プロジェクト: ArtHome12/Demi
void MsgBox::initWindow(const clan::FileSystem& fs)
{
	auto& rootView = root_view();
	auto& canvas = rootView->canvas();

	rootView->slots.connect(rootView->sig_key_press(), [&](clan::KeyEvent &e) { on_input_down(e); });
	// Без вызова этой функции события клавиатуры не приходят.
	rootView->set_focus();

	// Загружаем иконки.
	leftIcon->set_image(clan::Image(canvas, "Exclamation.png", fs));
	bOk->image_view()->set_image(clan::Image(canvas, "Ok.png", fs));
	bCancel->image_view()->set_image(clan::Image(canvas, "Cancel.png", fs));
}
コード例 #3
0
ファイル: msg_boxes.cpp プロジェクト: ArtHome12/Demi
MsgBox::MsgBox(SettingsStorage* pSettings, const std::string& text, const std::string& caption, eMbType mbType) :
	leftIcon(std::make_shared<clan::ImageView>()),
	bOk(Theme::create_button()),
	bCancel(Theme::create_button())
{
	auto rootView = root_view();

	set_title(caption);
	rootView->style()->set("flex-direction: row; background: rgb(240,240,240); padding: 11px");

	// Иконка в левой части диалога (появится только если был вызов loadIcons().
	leftIcon->style()->set("padding-right: 11px");
	rootView->add_child(leftIcon);

	// Узнаем ширину текущего окна, чтобы соотнести с размером диалога.
	// Получим размеры для отображения.
	int primaryScreenIndex = 0;
	std::vector<clan::Rectf> screenRects = clan::ScreenInfo().get_screen_geometries(primaryScreenIndex);
	int screenWidth = int(screenRects.at(size_t(primaryScreenIndex)).get_width());

	// Ширина диалога не должна быть менее 300 точек и более четверти экрана.
	screenWidth = std::max<int>(300, screenWidth / 4); //-V112

	// Рамка для текста и кнопок правее иконки.
	auto rightPanel = std::make_shared<clan::View>();
	rightPanel->style()->set("flex-direction: column; width: " + std::to_string(screenWidth) + "px");
	//rightPanel->style()->set("border: 1px solid red");
	rootView->add_child(rightPanel);

	// Текст.
	auto span = Theme::create_span();
	span->style()->set("padding: 11px; margin-bottom: 11px");
	span->add_text(text);
	rightPanel->add_child(span);

	// Подрамка справа внизу с кнопками, но только если кнопки есть.
	auto rightBottomPanel = std::make_shared<clan::View>();
	if (mbType != cMbNone) {
		rightBottomPanel->style()->set("flex-direction: row; height: 32px; justify-content: center");
		//rightBottomPanel->style()->set("border: 1px solid green");
		rightPanel->add_child(rightBottomPanel);
	}

	if (mbType == cMbOkCancel || mbType == cMbOk) {
		bOk->style()->set("width: 120px; margin-right: 30px");
		bOk->image_view()->style()->set("padding-left: 3px");
		bOk->label()->set_text(pSettings->LocaleStr(cMsgBoxOk));
		rightBottomPanel->add_child(bOk);

		bOk->func_clicked() = [=]()
		{
			result = cMbResultOk;
			dismiss();
		};
	}
	else
		// Для обработчика клавиатуры.
		bOk->set_hidden();

	if (mbType == cMbOkCancel || mbType == cMbCancel) {
		bCancel->style()->set("width: 120px");
		bCancel->image_view()->style()->set("padding-left: 3px");
		bCancel->label()->set_text(pSettings->LocaleStr(cMsgBoxCancel));
		rightBottomPanel->add_child(bCancel);

		bCancel->func_clicked() = [=]()
		{
			dismiss();
		};
	}

	// Уберём возможность менять размеры диалогового окна.
	set_resizable(false);
}
コード例 #4
0
ファイル: options.cpp プロジェクト: doughdemon/ClanLib
Options::Options(Canvas &canvas) : TextureWindow(canvas)
{
	root_view()->style()->set("background: rgb(153, 153, 204)");

	auto spacer1 = std::make_shared<View>();
	auto spacer2 = std::make_shared<View>();
	auto spacer3 = std::make_shared<View>();
	spacer1->style()->set("flex: 1 1");
	spacer2->style()->set("flex: 1 1");
	spacer3->style()->set("flex: 1 1");

	add_subview(column1);
	add_subview(column2);
	add_subview(column3);

	column1->add_subview(rotation_y_view);
	column1->add_subview(rotation_x_view);
	column1->add_subview(rotation_z_view);
	column1->add_subview(spacer1);
	column1->add_subview(button_lerp);

	column2->add_subview(quaternion_w_view);
	column2->add_subview(quaternion_i_view);
	column2->add_subview(quaternion_j_view);
	column2->add_subview(quaternion_k_view);
	column2->add_subview(spacer2);
	column2->add_subview(button_slerp);

	column3->add_subview(target_y_view);
	column3->add_subview(target_x_view);
	column3->add_subview(target_z_view);
	column3->add_subview(spacer3);
	column3->add_subview(button_rotate);

	button_lerp_clicked = false;
	button_slerp_clicked = false;
	button_rotate_clicked = false;

	max_angle_value = 360.0f;

	rotation_x = Angle(0.0f, angle_degrees);
	rotation_y = Angle(0.0f, angle_degrees);
	rotation_z = Angle(0.0f, angle_degrees);

	target_x = Angle(0.0f, angle_degrees);
	target_y = Angle(0.0f, angle_degrees);
	target_z = Angle(0.0f, angle_degrees);

	rotation_y_view->slider->func_value_changed() = bind_member(this, &Options::slider_rotation_y_changed);
	rotation_x_view->slider->func_value_changed() = bind_member(this, &Options::slider_rotation_x_changed);
	rotation_z_view->slider->func_value_changed() = bind_member(this, &Options::slider_rotation_z_changed);

	quaternion_w_view->slider->func_value_changed() = bind_member(this, &Options::slider_quaternion_w_changed);
	quaternion_i_view->slider->func_value_changed() = bind_member(this, &Options::slider_quaternion_i_changed);
	quaternion_j_view->slider->func_value_changed() = bind_member(this, &Options::slider_quaternion_j_changed);
	quaternion_k_view->slider->func_value_changed() = bind_member(this, &Options::slider_quaternion_k_changed);

	target_y_view->slider->func_value_changed() = bind_member(this, &Options::slider_target_y_changed);
	target_x_view->slider->func_value_changed() = bind_member(this, &Options::slider_target_x_changed);
	target_z_view->slider->func_value_changed() = bind_member(this, &Options::slider_target_z_changed);

	button_lerp->label()->set_text("Linear Quaternion Interpolation (lerp)");
	button_slerp->label()->set_text("Spherical Linear Interpolation (slerp)");
	button_rotate->label()->set_text("Rotate : q.multiply(target)");

	button_lerp->slots.connect(button_lerp->sig_pointer_press(), bind_member(this, &Options::on_clicked_button_lerp));
	button_slerp->slots.connect(button_slerp->sig_pointer_press(), bind_member(this, &Options::on_clicked_button_slerp));
	button_rotate->slots.connect(button_rotate->sig_pointer_press(), bind_member(this, &Options::on_clicked_button_rotate));

	set_all_sliders();
}