Skip to content

Latest commit

 

History

History
66 lines (44 loc) · 6.91 KB

README.md

File metadata and controls

66 lines (44 loc) · 6.91 KB

StopMotion

Yandex Cup 2024 semi-final task

Основные требования

Необходимо реализовать следующие компоненты:

  • Холст — рабочую область для рисования с «бумажным» фоном (картинку необходимо взять из макетов), распознающую действия рисования пользователя. На холстах второго и последующих кадров должен отображаться полупрозрачный эскиз соответствующего предыдущего кадра. При этом такой эскиз не должен являться частью рисунка нового кадра.

    • Инструменты рисования: карандаш, который оставляет на холсте следы выбранного цвета, следуя за пальцем, и ластик, который стирает эти следы с холста, также следуя за движением пальца.
    • ✅ Сделано
  • Контроль изменения цвета рисования с возможностью выбора как минимум из 3 разных цветов.

    • ✅ Сделано
  • Кнопки отмены и возврата последнего действия. Для карандаша и ластика под действием подразумевается непрерывная линия, нанесённая на холст без отпускания пальца.

    • ✅ Сделано
  • Кнопку создания следующего кадра. При её нажатии текущий кадр сохраняется для последующего воспроизведения, а на экране появляется чистый холст.

    • ✅ Сделано
  • Кнопку удаления текущего кадра, которая возвращает пользователя к рисованию предыдущего кадра.

    • ✅ Сделано
  • Запуск и остановку воспроизведения анимации. При старте воспроизведения необходимо выключить или скрыть все элементы управления, кроме холста, на котором воспроизводятся кадры, а также кнопки остановки воспроизведения. Разумеется, любое изменение изображения во время воспроизведения запрещено. Анимация должна воспроизводиться зацикленно, а при остановке анимации необходимо вернуться к последнему кадру.

    • ✅ Сделано. Но во время воспроизведения отображается контрол для управления скоростью анимации и кнопка экспорта, чтобы сделать удобным такой флоу: рисование → просмотр и настройка анимации → экспорт.

Дополнительная функциональность

  • Генерация и добавление N случайных кадров. Содержание холстов отдаётся на усмотрение участников — к примеру, это может быть генерация различных геометрических фигур или перемещение одной готовой фигуры. Изображения на сгенерированных кадрах должны явно отличаться друг от друга. Количество кадров должно задаваться вводом числа N с размерностью Integer в интерфейсе приложения непосредственно перед генерацией. Сгенерированные кадры добавляются за последним кадром и ведут себя идентично кадрам, добавленным вручную: допускается удаление кадров, изменение последнего кадра и т. д.

    • ✅ Сделано. Только я решил добавлять кадры не за последним кадров в коллекции, а за текущим выбранным кадром, чтобы была возможность сгенерировать кадры на основе выбранного.
  • Панель либо экран с раскадровкой для переключения между добавленными кадрами. Также допускается реализовать переключение кадров свайпами влево и вправо от края экрана.

    • ✅ Сделано
  • Кнопка дублирования кадра — создаёт новый кадр и копирует на него всё содержимое текущего кадра.

    • ✅ Сделано
  • Возможность удаления всех кадров сразу.

    • ✅ Сделано. Лонг-тап по кнопке "удалить"
  • Настройка скорости воспроизведения анимации.

    • ✅ Сделано. Показывается во время запуска анимации.
  • Экспорт анимации в GIF с возможностью поделиться файлом.

    • ✅ Сделано. Показывается во время запуска анимации.
  • Выбор кастомного любого цвета рисования из RGB-палитры.

    • ✅ Сделано
  • Инструмент рисования геометрических фигур, прямых линий или кривых Безье (минимум 3 разных фигур), а также взаимодействие с фигурами: увеличение растягиванием или pinch to zoom, перемещение, поворот.

    • ✅ Сделано
  • Изменение толщины карандаша и ластика.

    • ✅ Сделано. Нужно повторно нажать на выбранный инструмент
  • Реализация стека действий для многократной отмены или возврата.

    • ✅ Сделано. На каждом слое свой стек.
  • Увеличение холста при помощи жеста pinch-to-zoom для точной прорисовки деталей изображения.

    • ✅ Сделано
  • Иконка приложения.

    • ✅ Сделано
  • Полноценная поддержка светлой и тёмной тем.

    • ✅ Сделано