Skip to content

Latest commit

 

History

History
53 lines (46 loc) · 5.17 KB

Todo.md

File metadata and controls

53 lines (46 loc) · 5.17 KB

Фичи

  • Печать JPEG/PNG изображений. Не понятно, как выводить на печать изображение: по центру листа в исходном размере? или растягивать на весь лист сохранняя пропорции? а какой алгоритм применять? или растягивать на весь лист с потерей пропорций?
  • Переименование документа.
  • Прогресс печати. Стандарт IPP вроде как предусматривает получение прогресса задачи, но CUPS не предоставляет для этого удобного интерфейса.
  • Нет понятного /help.
  • Отсутствие внятного текста на команду /start.
  • Невнятный текст при некорректной комманде.
  • Не хватает статусов "прогрев сканера" и "оптимизация изображения".

Баги

  • Генерируется некорректный pdf на Raspberry Pi Zero. Изображение уезжает за пределы страницы и вытягивается по диагонали. После дебага выяснилось, что в PDF прописаны некорректные смещения и есть подозрение, что это та же проблема, что и с прогрессом печати. UPD: Проблема оказалась в другом. Исправлено в MR fschutt/printpdf#173.
  • Не отображается коммит в сборке под Raspberry Pi Zero.
  • Не отображается прогресс сканирования на Raspberry Pi Zero. После дебага выяснилось, что прогресс при округлении даёт 0. Судя по всему, это баг в Rust или в LLVM: rust-lang/rust#122294. UPD: Починил убрав округление.
  • Выяснить, почему PDF в разы больше чем JPEG.
  • Починить кнопку остановки сканирования. Сейчас она не работает должным образом из-за того, что всё сканирование происходит при первом вызове sane_read.

Оптимизации

  • Медленная компрессия изображений со сканера в JPEG. Image-rs использует свой собственный медленный кодировщик и не поддерживает ни SIMD, ни аппаратное кодирование. Из-за этого сканирование одного изображения на Raspberry Pi Zero длится 50 (!) секунд, из которых ~30 уходит на jpeg.
  • Изображения для превью страницы сканируется с тем же разрешением, что и итоговая страница. Это замедляет сканирование, особенно на реальном принтере. Можно выставить опцию resolution в 100 для превью, и в 300 для итогового изображения, чтобы ускорить превью и явно задать качество сканирования итогового изображения.
  • Для SANE можно отключить получение списка устройств перед открытием. Это должно значительно ускорить начало сканирования. Список используется только для поиска устройства по имени.
  • Не закрывать устройство до окончания сканирования. Вызовы sane_start и sane_cancel очень дорогие, и передёргивание их каждую страницу добавляет по 5 секунд к сканированию.

Рефакторинг

  • Отрефакторить simple-cups.
    • Убрать cstr из публичного API.
      • Особенно из настроек. Количество копий не должно передаваться через CStr.
    • Сделать отдельные типы для различных строк, убрать конвертацию String -> CString из логики.
    • Открытие устройства по имени, без предварительного получения списка устройств.
  • Разделить simple-cups на cups и cups-sys.
    • Проверять версию sane через pkg-config.
  • Разделить simple-sane на sane и sane-sys.
    • Проверять версию sane через pkg-config.
  • Перевести проект на русский или английский язык, вместо солянки.