Смотрелка pdf
-
Вернулся к pdf через полгода. Думал сначала, повешусь. Ан нет, оказывается, я сделал валидный make-файл, и все собирается по одной-единственной команде. Выпилил все шрифты кроме одного, сжатый бинарник теперь занимает не 2,5 мегабайта, а всего 800 килобайт. Смысла выкладывать его пока что не вижу. Через пару дней поковыряюсь с gui для этого дела. 800-килобайтную версию можно и на CD-maximal включать.
Большой прогресс. Программа рисует окно и выводит в него первую страницу. Цвета почему-то обрабатываются неправильно (не BGR?!), и прокрутка не работает (потому что blit).
Свежая версия:
ftp://ftp.kolibrios.org/users/SoUrcerer/updf
Хотел сначала использовать SDL-версию nuPDF (чем по сути этот порт и является), но в итоге психанул и написал всё целиком, основываясь на версии для X11.
Запускать так:
updf [путь_к_pdf]
Листать страницу - h,j,k,l. Следующая/предыдущая страницы - [,]. Поворот страницы - a,s, L, R. Масштаб + и -.
В qemu перерисовка безумная. На реальной машине, наверное, тоже, что очень печально. Изменение размеров окна пока не поддерживается, и многое другое - тоже.
Данную версию updf легко превратить в то, что я хотел сделать с webby. Причем даже с ссылками мучиться не надо - где-то "внутри" себя updf обрабатывает нажатия на ссылки в pdf-ках. Один вечер, подъем сервера - и можно будет смотреть красивые странички. Правда, без js и возможности отправки данных в поля ввода. Предвижу, что это никому не нужно.
Хотел сначала использовать SDL-версию nuPDF (чем по сути этот порт и является), но в итоге психанул и написал всё целиком, основываясь на версии для X11.
Запускать так:
updf [путь_к_pdf]
Листать страницу - h,j,k,l. Следующая/предыдущая страницы - [,]. Поворот страницы - a,s, L, R. Масштаб + и -.
В qemu перерисовка безумная. На реальной машине, наверное, тоже, что очень печально. Изменение размеров окна пока не поддерживается, и многое другое - тоже.
Данную версию updf легко превратить в то, что я хотел сделать с webby. Причем даже с ссылками мучиться не надо - где-то "внутри" себя updf обрабатывает нажатия на ссылки в pdf-ках. Один вечер, подъем сервера - и можно будет смотреть красивые странички. Правда, без js и возможности отправки данных в поля ввода. Предвижу, что это никому не нужно.
Сейчас потестим)
Из хаоса в космос
ftp://ftp.kolibrios.org/users/SoUrcerer/updf1
Выпилил еще больше поддержки китайского-корейского-японского. Если кому-то надо будет, впилю назад. Все остальное такое же, как было. Теперь занимает не 828 килобайт, а 473. Если заменить шрифт на что-нибудь полегче, то можно еще килобайт 50 выиграть.
Выпилил еще больше поддержки китайского-корейского-японского. Если кому-то надо будет, впилю назад. Все остальное такое же, как было. Теперь занимает не 828 килобайт, а 473. Если заменить шрифт на что-нибудь полегче, то можно еще килобайт 50 выиграть.
Я так понимаю это упакованный вариант бинарника?
Конечно, без упаковки больше мегабайта.
Внимание, тревога: файлы, в чьем имени используется пробел, открываться не могут из-за моей тупой ошибки.
Тревога отменяется. Исправленная версия: ftp://ftp.kolibrios.org/users/SoUrcerer/updf1
Потестил в реале. Работает шустро, но заметны повторяющиеся перерисовки (два или три раза) при смене страницы и при каждом обновлении полная перерисовка окна с заливкой фона.
Я вообще удивлен, что оно сегодня заработало. Я писал морду с нуля, заглядывая в версию для X11. Если нужно, могу выложить исходники, но для сборки нужна куча всякой всячины. zlib, libjpeg, libopenjpeg, libpng, freetype2 и, возможно, что-то ещё. make-файл предназначен для menuetlibc.
Можно добавить прокрутку, меню, поиск по файлу, переход к странице, выделение текста, копирование текста, прокрутку мышью, разные курсоры мыши, гиперссылки в документе - все это поддерживается библиотекой.
Почему перерисовка происходит два раза - видимо, какой-то флаг я не учитываю (подозреваю, это флаг shrink, который заставляет окно pdf-просмотрщика подстраиваться под размер документа). Заливку фона я пытался убрать, но был слишком устал для того, чтобы правильно определить координаты, которые нужно заливать (хотя почти все готово).
В целом работает не хуже, чем nuPDF на моей приставке Ritmix RZX-50.
Можно добавить прокрутку, меню, поиск по файлу, переход к странице, выделение текста, копирование текста, прокрутку мышью, разные курсоры мыши, гиперссылки в документе - все это поддерживается библиотекой.
Почему перерисовка происходит два раза - видимо, какой-то флаг я не учитываю (подозреваю, это флаг shrink, который заставляет окно pdf-просмотрщика подстраиваться под размер документа). Заливку фона я пытался убрать, но был слишком устал для того, чтобы правильно определить координаты, которые нужно заливать (хотя почти все готово).
В целом работает не хуже, чем nuPDF на моей приставке Ritmix RZX-50.
SoUrcerer
Выкладывай, может что дельное в голову придёт по опыту FPlay.
zlib, libpng и freetype242 есть, последнюю я кстати не стал заливать на свн, думал ты это сделаешь.
Выкладывай, может что дельное в голову придёт по опыту FPlay.
zlib, libpng и freetype242 есть, последнюю я кстати не стал заливать на свн, думал ты это сделаешь.
Содержимое папки ftp://ftp.kolibrios.org/users/SoUrcerer/uPDF/ нужно накатить на исходники mupdf-0.9. Для компиляции необходимо, чтобы в папке scripts лежали скомпилированные версии fontdump и cmapdump. Так же необходимо иметь файл snprintf, потому что snprintf/fnprintf в menuetlibc не реализованы.Все cmaps можно заменить на пустышки, а лишние шрифты - выпилить. Если все файлы имеются, то для сборки достаточно ввести make.
Посмотрю. Хорошо бы это сразу на свн.
Мне стыдно такое на SVN выкладывать. Куча отладочной информации, куча косяков и совершенно непричесанный код. Хотя бы мерцание убрать.