| Author: PalmFiction, Posted: 09.11.05 17:05 | ||||||
|
Вы хотите чтобы PF читал fb2 и html. У Вас возникла гениальная идея "а почему бы не подсказать автору, что надо использовать для разбора этих файлов парсер". Вы ведь уверены, что такая простая и идеальная мысль должна быть озвучена.
Давайте посмотрим определение Что такое парсер? Парсер - это приложение для обработки текста. Текстом может быть как исходный текст программы (например C++), так и язык разметки документов (например HTML). Парсер обрабатывает этот текст и перенаправляет в приложение. По определению парсер только обрабатывает текст, но никоим образом не занимается выводом обработанного текста. Попробуйте доказать, что парсер способен заменить собой библиотеку FreeType, Windows GDI и RichEdit. Шрифты. Средства работы со шрифтами. Функции вывода текста с различным форматированием. Функции вывода графики. Все это я называю СРЕДСТВА ВЫВОДА. Вот, что необходимо, а не умные мысли про парсеры и разборы fb2 и html. СРЕДСТВА ВЫВОДА у PF на уровне NotePad. Даже до уровня WordPad еще очень и очень далеко. Не надо сравнивать PalmOS с PocketPC. На платформе PocketPC обширные СРЕДСТВА ВЫВОДА встроенные в операционку. А PalmOS находится скорее на уровне MSDOS. И напоследок, почему Мацнев не сделал Haali для PalmOS? Может потому, что пришлось бы заодно портировать под PalmOS половину WindowsCE? | ||||||
| Author: alan, Posted: 09.11.05 22:36 | ||||||
| хм... набрал весь ответ здесь, но потом ушел в почту:))) | ||||||
| Author: avb, Posted: 10.11.05 12:16 | ||||||
|
PalmFiction, пожелание добавить обработку fb2 у меня возникло почти сразу после того, как я познакомился с Вашей программой :-).
Такие вопросы у новичков неизбежны, ИМХО. Однако как только я узнал, чем чревата реализация этого пожелания, все вопросы у меня отпали. Надеюсь, данный топик на форуме позволит избежать новых "пожеланий" (вот только переименовать его не мешало бы -- например "О поддержке fb2") Теперь просто держу на КПК Вашу программу (читаю в ней 90% книг) и Исилу (для текстов с большим количеством сносок). | ||||||
| Author: l1720, Posted: 14.11.05 12:22 | ||||||
|
PalmFiction
Наверное пишу не туда, но да ладно. А что если вместо полной поддержки fb2, попробовать прикрутить поддержку формата plucker. Я вот isilo уже давно выкинул и то то требуется конверчу в Plucker. Программа эта вроде открытая. Но всё это на уровне хотелки, так как в программировании я никак. | ||||||
| Author: alexhemp, Posted: 14.11.05 12:57 | ||||||
|
l1720
Ты похоже ничего не понял. Какая разница какой формат отображать, если PF умеет отображать чистый текст только. Автор писал о том, что нельзя говорить о поддержке форматов с форматированием пока в PalmOS не будет библиотеки, позволяющей все это удобно и просто выводить. Или ее может кто-то напишет. Читать форматы Plucker, fb2, html и т.п. это только четверть дела, а остальные 3/4 - выводить все это. Загвоздка именно с ЭТИМ! | ||||||
| Author: l1720, Posted: 14.11.05 13:59 | ||||||
| Вот теперь ещё раз всё прочитал и осознал. | ||||||
| Author: Guest, Posted: 15.11.05 7:22 | ||||||
|
Я это осознал давно.
В плане желаний остались только: - поддержка глав (средствами закладок); - поддержка сносок. Скорее даже, только сноски, по закладкам редко хожу, книги читаю от начала и до конца обычно :) Я понимаю, что это сделать сложно, поэтому никогда автора об этом не просил. Просто нашел xsl-ку переделал под себя, прикрутил makeztxt и перед копированием конверчу в pdb с ссылками и закладками. | ||||||
| Author: alone, Posted: 15.11.05 13:02 | ||||||
|
Про это уже давно говорилось - нужно парсить весь документ, чтобы вытащить ссылки и пр., поскольку сама структура XML такова, ПФ же работает только с куском текста.
И все-таки позволю себе написать, что технически это возможно - один раз, при открытии, пропарсить документ, и сохранить всю необходимую информацию в некоем файле, из которого при последующем открытии и черпать необходимые данные. Минус такого подхода - отделение книги от ее структуры. К слову, чем мне нравится MobiReader - он создает временный файл с таким же названием, как у книги, но с другим расширением, и хранит там (по крайней мере) ссылку на текущую позицию. Гарантированно после всяких сбоев, включая хард-резет, чтение книги будет продолжено с того места, на котором установлена закладка (конечно, если книга была не в основной памяти). | ||||||
| Author: Self-Perfection, Posted: 15.11.05 22:51 | ||||||
| А может быть лучше сделать свой формат? a-la zTxT но со ссылками, курсивами всякими, сжатием по-умолчанию... Ну и добавлять в него инфу о форматировании так, чтобы к ней был быстрый доступ. Это я в долгой перспективе, если будет поддержка форматирования. | ||||||
| Author: alexhemp, Posted: 16.11.05 0:32 | ||||||
|
Закрытый формат в долгой перспективе как раз приведет к упадку.
Одна из целей PalmFiction - читать все что реально прочесть. | ||||||
| Author: tamtam, Posted: 16.11.05 16:05 | ||||||
| Только не свой формат. Тем болле что со своим форматом читалки есть - MobiReader и isilo. | ||||||
| Author: alexhemp, Posted: 16.11.05 18:56 | ||||||
|
tamtam
Вот, ты меня понимаешь :-) Открытость и распостранненость формата - залог успеха. haali не был бы популярен не сделай GribUser целую библиотеку сперва. | ||||||
| Author: Serg Gera, Posted: 16.11.05 20:15 | ||||||
|
alexhemp
Библиотеку чего? | ||||||
| Author: Alexx_S, Posted: 16.11.05 20:52 | ||||||
|
Serg Gera
Думаю, имеется в виду Fictionbook.ru + Aldebaran.ru на том же движке. | ||||||
| Author: Self-Perfection, Posted: 16.11.05 21:46 | ||||||
| А зачем его делать закрытым?!?! Особо много форматирования поддерживаться точно не будет, так что в других программах легко можно будет организовать его поддержку. Ну я имею ввиду авторов других программ. Кроме того, я уже как-то предлагал добавить команду в списке книг "сохранить на карту как просто текст". Уже сталкивался с проблемой, что на девайсе знакомого нечем читать zTxT... И всё равно этим форматом пользуюсь! | ||||||
| Author: alexhemp, Posted: 16.11.05 21:55 | ||||||
|
Self-Perfection
Я уже писал на эту тему - бинарный формат - это внутреннее представление, а внешний формат не нужно делать бинарным категорически. PalmDOC, zTxt по сути разновидность архива, если бы его автор взял и сделал стандартный zip архив то мы бы про него бы и не узнали. Закладки и другие фенечки можно хранить в файлах спутниках или комментарию. Основная ценность именно ZIP - в его стандартности. Он есть на всех платформах, под все распостраненные OS. Автор написал в первом посте - парсинг из внешнего текстового в некий внутренний бинарный - это проблема уровнем ниже чем ОТОБРАЖЕНИЕ всей этой мишуры. Я считаю что желающие получить вывод оформления должны сделать примерно так: Написать список видов оформления, например: 1. Текст обычный, жирный, курсив, подчеркивание 2. Разные размеры шрифта 3. Разное выравнивание для абзацев 4. Цвет символа или строки 5. Отображение картинки, как отдельного абзаца и с обтеканием Далее нужно написать алгоритмы вывода, реализовать их на PalmOS - что и является самой сложной задачей. Напишите навскидку быстрый алгоритм листания страниц "вверх" при таком оформлении, и подумайте что будет нужно для этого. Только так может "родиться" нужный бинарный формат. А уже потом можно будет думать над ним - можно ли при открытии тектового формата быстро текст преобразовать в этот бинарный формат или нужно это делать на "большом брате" как случилось с PalmDOC. | ||||||
| Author: JAW, Posted: 17.11.05 20:28 | ||||||
Согласен, в том случае, если я смогу сделать бинарный файл самостоятельно и оставить его таким бинарным после того, как PaFi его создаст.
Так этот список нужен, или нет? Или на тему забито в принципе?
Ох, не думаю что до этого дойдет... Но если дойдет, то картинка, это не абзац, это буква такая. Со всеми вытекающими последствиями. И работают с ней как с буквой. | ||||||
| Author: Alan, Posted: 17.11.05 22:56 | ||||||
А нужен ли пункт 2 в чтении книг? Вдруг кому пригодиться:) (я так понимаю, автор проекта после этого топика либо пошлет эту тему навсегда, либо все же решиться на ее реализацию) - в своем проекте я заложился на следующее: 1. Текст обычный, жирный, курсив, подстрочный индекс, надстрочный. Индексы на треть меньше по высоте, чем основная строка. Высота строки всегда одинакова (т.е. высота болда и обычного текста соответствует друг другу). Линки подчеркиваются. Если в настроках обычный текст отобрадается жирным, то то, что должно быть жирным выводиться с подчеркиванием. Если используются индексы, то стили италика и болда не учитываются. 2. Цвета задаются для текста, для заголовков и для линков. 3. Абзацы бывают - обычный с отступом слева, переносы и выравнивания как в настройках указано. - без отступа слева (стихи), переносы и выравнивание как в настройках. - выравнивание по правому краю, без переносов и выравнивания (эпиграфы, подпись автора). - выравнивание по центу, без переносов (заголовки). - выравнивание по центру с одинаковыми отступами слева и справа, переносы как в настройках (цитаты). 4. Картинки и таблицы отображаются только на отдельном экране, т.е. никакого перемешивания с текстом. При автопрокрутке отображаются наподобие линка (надпись TABLE с шрифтовым и цветовым выделением как у ссылки). По поводу формата - я заложился на то, что все управляющие символы идут одним потоком с текстом, используется диапазон 0x01..0x31.
да без проблем и не на вскидку. только на паскаль переделывать и адаптировать под ПФ не буду:). P.S. А вообще тема не о том... автору никто выздоровления не пожелал, а он занемог от тяжести ваших желаний:)... И пошлет сейчас эту всю тему нафиг под воздействием грипповой атаки:) | ||||||
| Author: alexhemp, Posted: 18.11.05 13:20 | ||||||
|
Alan
JAW Вы все уходите в сторону проектирования какого-то формата. А что толку в формате - если нужен ВЫВОД, которого нет и не предвидиться. Я бы предложил желающим написать свои процедуры вывода, и предложил им то, с чего можно начать - а именно с определения того, что им нужно. Формат можно выбрать произвольный, НЕ ФОРМАТ ТЕКСТА ОПРЕДЕЛЯЕТ ВЫВОД. | ||||||
| Author: Guest, Posted: 18.11.05 18:58 | ||||||
alexhemp
это не формат - это внутреннее представление данных. пока оно не спроектировано - бессмысленно браться за вывод. По поводу вывода. Насколько я понимаю, на текущий момент в ПФ есть две функции (в смысле их не может не быть:) ) - подсчет длины строки для конкретного шрифта и вывод на экран строки в конкретном шрифте. Вывод строки с несколькими стилями сводиться к задаче разбить строку на несколько однородных кусков, и подсчитать и вывести их независимо друг от друга. Все. Других путей решения данной задачи нет. Если есть какие-либо библиотеки, то внутри они делают именно это. Что в винде, что в палмос, что еще где-то. А вообще - вы сначала убедите автора в том, что это ему надо, а потом в том, что это вообще имеет смысл делать под палм... | ||||||
| Author: mo3r, Posted: 18.11.05 21:20 | ||||||
Для нормального вывода больших тесктов с форматирование в палмоси нужны реализации следующих алгоритмов: 1) Подсчет высоты всего текста и/или определения текущей позиции - тут сойдет хотя бы приблизительный 2) Нахождение начала последней строки абзаца 3) Алгоритмы чтения элементов текста "назад" (т.е., в обратном направлении) 4) Разбиения абзаца на строки (причем строки могут добавляться в обоих направлениях) 5) Вычисление высоты и центра (или положения baseline) строки Пункты 1, 2 и 3 нужны для того, чтобы не хранить в памяти весь текст. На самом деле, реализация этих алгоритмов - вещь не очень тривиальная (учитывая малый объем памяти палмов). Других приемлемых вариантов нету. Опять же, реализация этих алгоритмов не слишком завязана на внешний формат данных (за исключением некоторых моментов). | ||||||
| Author: Guest, Posted: 18.11.05 21:22 | ||||||
Имеется в виду, что знаем, где находится последняя буква (или элемент) абзаца. | ||||||
| Author: alexhemp, Posted: 18.11.05 21:36 | ||||||
|
Гость
При реализации алгоритмов станет понятно удобное внутреннее представление. Может нужно хранить текст потоком - разбивая на управляющие символы? А может в виде DOM-дерева (наподобии HTML). А может в виде списка слов и списка атрибутов и таблицы связи - слово-набор атрибутов И таких вариантов - сотни, выбор оптимального возможен только после реализации библиотеки вывода. Формат без РЕАЛИЗАЦИИ алгоритмов - ничего не дает ВООБЩЕ. Убеждать автора не намерен. Но намерен убедить тех кто очень ХОЧЕТ форматирование текста, что им самим нужно приложить усилия в этом направлении. Ничего не мешает использовать исходники PF для создания своей читалки со своим форматом, разбивая строки как хочется и т.п. | ||||||
| Author: Guest, Posted: 18.11.05 21:53 | ||||||
alexhemp
ну... тоже конечно подход:) В принципе, если нет опыта в проектировании хоть каких-либо более менее сложных систем, так и поступают. Это после появления опыта и наработок начинают сначала думать, а потом реализовывать... mo3r
1 - не совсем понял что считать... Если ты меня цитировал, то прочел, что все строки ОДНОЙ высоты... 2,3 - зачем??? 4 - есть разница в строке и строке со стилями??? 5 - тоже не понимаю о чем речь... Естественно весь текст в памяти нет смысла хранить... если уж это получается делать на мпх200, в котором практически нет памяти, то в палме это тем более не будет проблемой. | ||||||
| Author: alexhemp, Posted: 19.11.05 9:30 | ||||||
|
Гость
Проектирование систем - это громкие слова, реально - тут трудности не в проектировании - а в реализации. И его должно определять не в процессе болтовни на форуме а в процессе РАЗРАБОТКИ соотв. библиотеки вывода. Все остальные разговоры без этого - пустая болтовня. | ||||||
| Author: Guest, Posted: 19.11.05 10:31 | ||||||
alexhemp
кого - его? Формат представления данных? Скажи пожалуйста, а что ты будешь выводить, не зная как оно храниться и откуда его брать?:) Или по частям, типа написали кусочек, теперь будем думать как сюда втулить следующий, а потом думать как обходить какой-нибудь идиотизм, который был допущен при реализации первого кусочка вывода?:) Данный "стиль":) программирования можно допускать только в случае, если есть твердая решимость в конце цикла разработки с нуля переписать все начисто и как положено... в данном случае скорее всего этого не будет:) По поводу трудностей в реализации - они могут быть когда плохо представляется задача и нет четкого понятия на что закладываться (все тот же формат внутреннего представления данных). Больше в этой конкретной задаче сложностей нет. В конце концов, если склероз мне не изменяет, тот же плюкер доступен в исходниках. Если все же я ошибаюсь, то библиотек под винду которые реализуют вывод на экран, тоже не мало - подсмотреть что и как кто-то уже реализовывал всегда можно... Те же мобипокеты и исилы работают с форматированием под палм ос - следовательно непреодолимых сложностей нет.
А вот это золотые слова... никаких возражений не может быть. Так что хватит болтать и займитесь (те кого интересует поддержка стилей текста) делом... В конце концов там писать меньше, чем языком трепать - у меня на такую библиотеку ушло две недели... На палме из-за маразма со шрифтами уйдет больше... Да и найдите наконец кому это надо из людей, кто может что-то написать... | ||||||
| Author: Mo3r, Posted: 19.11.05 19:11 | ||||||
Тогда всесильно проще.
Полностью согласен. Маразм со шрифтами решается за пару дней (после того, как придет понимание, как с ним бороться).
Чем я сейчас и занимаюсь. | ||||||
| Author: Guest, Posted: 19.11.05 20:33 | ||||||
Mo3r
О... Браво! Если хочешь - переходи в почту a1812lwis @@@ mail.ru - интересен подход к решению некоторых ньюансов, да и просто может помогу чем, а то по предыдущему твоему посту кажется мне, что ты некоторую лишнюю работу делаешь... | ||||||
| Author: dimitriy90, Posted: 30.11.05 17:23 | ||||||
|
Я вот думаю, может имеет смысл забить на такие вещи как
шрифт разной высоты и картинки. Т.е. свести к тому что все строки имеют одинаковую высоту и потому размер текста по высоте будет всегда одним и тем же в независимости от состава текста. А сделать поддежку выделений шрифтом - типа начало главы и оглавление. Я думаю этого бы хватило (по крайней мере на первом этапе). И можно было бы решить - а стоит ли вообще двигаться дальше. | ||||||
| Author: alexhemp, Posted: 30.11.05 19:27 | ||||||
Ну так попробуй сам сделать. Исходники открыты. | ||||||
| Author: Self-Perfection, Posted: 30.11.05 20:31 | ||||||
| Исходники-то открыты, но не помеашал бы инструкция, как их компилировать... Я с паскалём 5 лет вожусь, что-нибудь бы поделал с удовольствием, но не писал ничего под пальм, так что не знаю ни где среду брать, ни какие дополнительные библиотеки нужны, эмуляторы, видимо, понадобятся... | ||||||
| Author: alexhemp, Posted: 30.11.05 21:02 | ||||||
|
Главное - начать и сообщать по мере поступления о проблемах и ждать конкретный советов.
Среда - PocketStudio 2.1 - вроде все библиотеки в комплекте. Документация, эмуляторы, симуляторы - все берется в разделе для разработчиков на http://www.palmos.com/dev/dl/ | ||||||
| Author: Myppp, Posted: 01.12.05 12:23 | ||||||
|
Mo3r
А что за Маразм у Пальм со шрифтами ????? Я чего-то не понял... | ||||||
| Author: Guest, Posted: 01.12.05 12:46 | ||||||
| Отсутствие векторных шрифтов | ||||||
| Author: Guest, Posted: 04.12.05 15:07 | ||||||
Не совсем то. Есть некоторые тонкости при выводе хайрезных шрифтов и жуткие глюки при работе с битмапами (а векторные сделать не очень сложно - freetype работает вполне прилично). | ||||||
| Author: Myppp, Posted: 04.12.05 15:14 | ||||||
|
Гость
Вывод Хай-рез шрифтов да есть нюансы.. но разработчикам они известны (и в ПФ вполне применяются) про глюки работы с БитМапами... тоже есть (под хайрез и с некоторыми глубинами цветности+ прозрачность) но тоже оборимы вполне... | ||||||
| Author: Хрямзик, Posted: 15.03.06 2:41 | ||||||
|
Совсем недавно пересел с iPAQ 4155 на sony sj20, тема читалки очень актуальна. Экран-то крут, а читалки...
Прочитал внимательно про сложность реализации вывода инфы. И все бы было понятно, если б в исиле не было картинок. Там-то как-то работает... В чем же загвоздка? | ||||||
| Author: danone, Posted: 15.03.06 2:54 | ||||||
|
как я понял из этого топика и ещё некоторых, уважаемые Alan и mo3r занимаются какими-то параллельными проектами читалок на основе PF, где всё прекрасно, и fb2 читается, и картинки грузятся со ссылками. если можно, господа, расскажите поподробнее о своих проектах, а если это уже сделано, положите здесь ссылочку. потому что думаю, не мне одному это очень интересно.
спасибо за понимание. | ||||||
| Author: Egres, Posted: 15.03.06 3:17 | ||||||
| У Alan'а есть своя читалка под WinXX машинки. Насколько я помню, на основе HaaliReader | ||||||
| Author: PalmFiction, Posted: 15.03.06 6:52 | ||||||
Все очень просто, задайте этот вопрос себе. В чем загвоздка? Почему Вы сами не можете сесть и написать читалку лучше iSilo? Все что Вы ответите на этот вопрос, могу сказать и я. |