- auto create_param = [](std::wstring elem) -> std::vector<std::wstring>
- {
- std::vector<std::wstring> result;
- result.push_back(elem);
- return result;
- };
-
- auto& car_layer = scene->create_layer(create_producer(frame_factory, format_desc, create_param(L"car")), L"car");
- car_layer.clipping.upper_left.x.set(80);
- car_layer.clipping.upper_left.y.set(45);
- car_layer.clipping.width.unbind();
- car_layer.clipping.width.set(640);
- car_layer.clipping.height.unbind();
- car_layer.clipping.height.set(360);
- car_layer.adjustments.opacity.set(0.5);
- //car_layer.hidden = scene->frame() % 50 > 25 || !(scene->frame() < 1000);
- std::vector<std::wstring> sub_params;
- sub_params.push_back(L"[FREEHAND]");
- sub_params.push_back(L"640");
- sub_params.push_back(L"360");
- scene->create_layer(create_producer(frame_factory, format_desc, sub_params), 10, 10, L"freehand");
- sub_params.clear();
-
- auto& color_layer = scene->create_layer(create_producer(frame_factory, format_desc, create_param(L"RED")), 110, 10, L"color");
- color_layer.producer.get()->pixel_constraints().width.set(1000);
- color_layer.producer.get()->pixel_constraints().height.set(550);
-
- //scene->create_layer(create_producer(frame_factory, format_desc, create_param(L"SP")), 50, 50);
-
- auto& upper_left = scene->create_layer(create_producer(frame_factory, format_desc, create_param(L"scene/upper_left")), L"upper_left");
- auto& upper_right = scene->create_layer(create_producer(frame_factory, format_desc, create_param(L"scene/upper_right")), L"upper_right");
- auto& lower_left = scene->create_layer(create_producer(frame_factory, format_desc, create_param(L"scene/lower_left")), L"lower_left");
- auto& lower_right = scene->create_layer(create_producer(frame_factory, format_desc, create_param(L"scene/lower_right")), L"lower_right");
- auto& text_layer = scene->create_layer(text_area, L"text_area");
- upper_left.adjustments.opacity.bind(text_layer.adjustments.opacity);
- upper_right.adjustments.opacity.bind(text_layer.adjustments.opacity);
- lower_left.adjustments.opacity.bind(text_layer.adjustments.opacity);
- lower_right.adjustments.opacity.bind(text_layer.adjustments.opacity);
-
- /*
- binding<double> panel_x = (scene->frame()
- .as<double>()
- .transformed([](double v) { return std::sin(v / 20.0); })
- * 20.0
- + 40.0)
- .transformed([](double v) { return std::floor(v); }); // snap to pixels instead of subpixels
- */
- tweener tween(L"easeoutbounce");
- binding<double> panel_x(0);
-
- scene->add_keyframe(panel_x, -panel_width, 0);
- scene->add_keyframe(panel_x, 300.0, 50, L"easeinoutsine");
- scene->add_keyframe(panel_x, 300.0, 50 * 4);
- scene->add_keyframe(panel_x, 1000.0, 50 * 5, L"easeinoutsine");
- //panel_x = delay(panel_x, add_tween(panel_x, scene->frame(), 200.0, int64_t(50), L"linear"), scene->frame(), int64_t(100));
- /*binding<double> panel_x = when(scene->frame() < 50)
- .then(scene->frame().as<double>().transformed([tween](double t) { return tween(t, 0.0, 200, 50); }))
- .otherwise(200.0);*/
- //binding<double> panel_y = when(car_layer.hidden).then(500.0).otherwise(-panel_x + 300);
- binding<double> panel_y(500.0);
- scene->add_keyframe(panel_y, panel_y.get(), 50 * 4);
- scene->add_keyframe(panel_y, 720.0, 50 * 5, L"easeinexpo");
-
- scene->add_keyframe(text_layer.adjustments.opacity, 1.0, 100);
- scene->add_keyframe(text_layer.adjustments.opacity, 0.0, 125, L"linear");
- scene->add_keyframe(text_layer.adjustments.opacity, 1.0, 150, L"linear");
-
- upper_left.position.x = panel_x;
- upper_left.position.y = panel_y;
- upper_right.position.x = upper_left.position.x + upper_left.producer.get()->pixel_constraints().width + panel_width;
- upper_right.position.y = upper_left.position.y;
- lower_left.position.x = upper_left.position.x;
- lower_left.position.y = upper_left.position.y + upper_left.producer.get()->pixel_constraints().height + panel_height;
- lower_right.position.x = upper_right.position.x;
- lower_right.position.y = lower_left.position.y;
- text_layer.position.x = upper_left.position.x + upper_left.producer.get()->pixel_constraints().width + padding;
- text_layer.position.y = upper_left.position.y + upper_left.producer.get()->pixel_constraints().height + padding + text_area->current_bearing_y().as<double>();
-
- text_area->text().bind(scene->create_variable<std::wstring>(L"text", true));
-
- auto params2 = params;
- params2.erase(params2.begin());
-
- scene->call(params2);
-
- return scene;