Ru-Board.club
← Вернуться в раздел «Программы»

» WinDjView

Автор: AndyZ
Дата сообщения: 24.07.2006 22:11
ozioso
Changelog есть на сайте http://windjview.sf.net

MorSe
Резкость наводится, когда отрисовывается картинка нужного разрешения, а рисуется она в фоновом режиме. А окно увеличения показывается сразу. Отсюда и задержка. На чёрно-белых документах она почти не заметна.
Автор: ozioso
Дата сообщения: 24.07.2006 22:19
AndyZ
А он разве уже обновился?

Добавлено:
Да и гораздо удобнее читать все в ветке этого форума.
Автор: MorSe
Дата сообщения: 24.07.2006 22:32
AndyZ

Цитата:
На чёрно-белых документах она почти не заметна.

Попробовал на нескольких документах - не меньше 5 секунд получается. Несколько удивляет, потому что при изменении масштаба отображения всего документа перерисовка происходит почти мгновенно.
Автор: Griefin
Дата сообщения: 25.07.2006 04:43
AndyZ
Спасибо за очередной релиз хорошей программы.

Перенос слов не помешал бы и в окне результатов поиска. В дереве Bookmarks выбирается неправильный шрифт (Arial, 8 pt) вместо того, что указан в настройках Windows. Еще, можно ли сделать опцию отключения сглаживания для области изображения, видимой через "лупу"?
Автор: AndyZ
Дата сообщения: 25.07.2006 09:41
Griefin
В дереве Bookmarks как раз выбирается стандартный виндовый шрифт - тот же самый, что в диалогах. В Windows XP в дефолтных темах это Tahoma. У Вас какая версия Windows?

Насчёт отключения сглаживания - там вроде нечего отключать. См. мой пост выше.
Автор: Griefin
Дата сообщения: 25.07.2006 17:33
Запускал на Windows XP SP2 и Windows 2000. Шрифт в диалогах -- Tahoma, 10pt. Вероятно, в дереве используется тот же шрифт, что и в ComboBox'ах с масштабом и номерами страниц, только не полужирный.
Автор: AndyZ
Дата сообщения: 25.07.2006 17:39
Griefin
Да, именно такой. А разве это неправильно?
Автор: Griefin
Дата сообщения: 25.07.2006 20:59
Значит функция CreateSystemDialogFont() дает неправильный размер шрифта.
Автор: AndyZ
Дата сообщения: 25.07.2006 22:06
Я почитал документацию, и обнаружилось следующее: почти везде в MSDN для получения системного шрифта предлагается использовать MS Shell Dlg 2, который и есть Message Box Font (то есть по умолчанию он маппится на Тахому), либо вызывать GetStockObject(DEFAULT_GUI_FONT), который выдаёт MS Shell Dlg (который является шрифтом в сообщениях в Windows 98 и ранее, а в Win 2k и позднее нужно использовать Ms Shell Dlg 2). Есть соответствующая функция и в UXTheme API. Раз Майкрософт в своей документации предлагает использовать в приложениях именно шрифт Ms Shell Dlg 2, то его и используют. Например, Firefox в дереве истории использует именно этот шрифт. Но: стандартное виндовое дерево использует шрифт, который в Display Properties называется Icon Font - шрифт для значков на рабочем столе. Казалось бы, при чём здесь Icon? А ещё интересно, что шрифт Message Box Font никак не влияет на шрифт в стандартном диалоге, например, File Open. Так что со шрифтами у Майкрософта путаница. И вообще, чем больше менять дефолтные настройки шрифтов в винде, тем больше шансов, что будут глюки. Поэтому я не вижу смысла что-то менять, разве только если будет много жалоб на "неправильный" шрифт.

Добавлено:
Хотя, конечно, если стремиться к полному копированию стандартных контролов, то шрифт действительно надо бы поменять. Тогда надо убедиться, что моё предположение о том, что там используется Icon Label Font, верно. Эксперимент на Win XP показывает, что это так. А Вы не могли бы посмотреть на Win 2000, как ведёт себя дерево в версии 0.4.1, когда меняется Icon Font?
Автор: Griefin
Дата сообщения: 26.07.2006 11:36
Да, там используется Icon Font. В принципе, дерево можно воспринимать как некий упорядоченный набор иконок. Исправления послал на Ваш ящик в Sourceforge. Со шрифтами в Windows API действительно бардак (как впрочем и со многим другим)
Автор: Griefin
Дата сообщения: 29.07.2006 02:44
Довольно часто в текстовом слое DjVu-книг встречаются слова с неправильно расставленными пробелами. Хотелось бы в одной из следующих версий видеть опцию поиска без учета пробелов.
Автор: kibi
Дата сообщения: 31.07.2006 00:41
To monday2000:

Цитата:
3). Нельзя ли сделать так, чтобы DjVu-файлы на CD-диске открывались в WinDjView, находящимся на этом же диске? Просто хотелось бы сделать такой подарочный CD-диск с DjVu-книгами, и чтобы у "клиента" не было с этим диском никаких проблем


Я в такой ситуации сделал индексный DJVU файл, в котором разместил список книг со ссылками на нужные DJVU. Ссылки реализованы как "hot area".

Для того, что бы не размечать их вручную, выработал следующий алгоритм:
1) создаём html файл со ссылками на нужные djvu файлы (можно даже со ссылками на нужные страницы внутри этих DJVU)
2) Конвертируем HTML в PDF с помощью Adobe Acrobat. При этом сохраняются ссылки на DJVU файлы. Вот только они становятся абсолютными (прописываются локальные пути к DJVU файлам)
3) Конвертируем PDF в DJVU с сохранением встроенных ссылок.
4) Исправляем ссылки внутри DJVU, так чтобы они опять стали относительными ссылками и заработали в WinDjview:
djvused.exe "all_authors.djvu" -e output-ant > "all_authors.djvu.txt"
replace_text.exe "all_authors.djvu.txt" "../g:\\NiZh\\read_excel\\" --delete
replace_text.exe "all_authors.djvu.txt" "../file:///G|/NiZh/read_excel/" --delete
replace_text.exe "all_authors.djvu.txt" "\\" "/"
djvused.exe "all_authors.djvu" -f "all_authors.djvu.txt" -s
replace_text.exe - простейшая программа для BAT процессинга, которая выполняет требуемое - замену или удаление подстроки в указанном файле.

Таким образом я создаю навигацию по архиву журнала Наука и Жизнь.

To Griefin:

Цитата:
Довольно часто в текстовом слое DjVu-книг встречаются слова с неправильно расставленными пробелами. Хотелось бы в одной из следующих версий видеть опцию поиска без учета пробелов.


Более того - практически во всех DJVU книгах, полученных из сканов с настоящим OCR текстом присутствуют специфические ошибки распознавания. И для того, чтобы ошибки в распознанном тексте не мешали поиску есть множество всевозможных хитростей.

Например, fussy поиск - поиск по неполному совпадению, когда при поиске слова "собака" будет найдено "с0бака" или "с^бака" .

Кстати, ещё одно свойство сильно увеличивающее полезность поиска - анализ морфологии. А ещё более крутой поиск - поиск по возможным синонимам.

Но всего этого требовать от программы-просмотрщика DJVU несколько опрометчиво.

А попробовать подключить всё это в виде внешней библиотеки анализа морфологии - было бы оптимальным выходом из положения. Вот только существуют ли такие библиотеки под GPL или другой совместимой лицензийей - это вопрос.

UPD: Такие библиотеки есть - http://www.aot.ru - лингвистические библиотеки под лицензией LGPL. Живой проект, результаты которого задействованы в таких компаниях как mail.ru, например.

To AndyZ:

Большое спасибо за версию 0.4.2, в особенности за "складные" закладки.
Автор: chupakabra
Дата сообщения: 31.07.2006 02:10
Ошибка в версии 0.4.2 - при попытке открыть несуществующий файл из списка последних файлов в меню File получаем сбой программы.
Автор: Griefin
Дата сообщения: 31.07.2006 03:31
chupakabra
Об этом уже сообщалось. См. выше.

kibi
Конечно, я тоже сразу подумал о поиске по нечеткому запросу и регулярным выражениям. Но пока продукт находится в начальной стадии развития, следует предлагать то, что реально сделать за короткое время.
Автор: ghosty
Дата сообщения: 03.08.2006 01:36
Griefin

Цитата:
Конечно, я тоже сразу подумал о поиске по нечеткому запросу и регулярным выражениям.

dtSearch можно для этого приспособить, или другой индексер, поддерживающий DJVU.

AndyZ
Не понятно, как сабж работает с памятью: при открытии этой книги (8Мб) он сразу выделяет под нее около 100Мб. А в случае открытия этой (3Мб) грузит процессор на 100% в теч. около 4 мин., затем выделяет около 25Мб...
Автор: Fay3
Дата сообщения: 06.08.2006 13:05
Всем привет!

Подскажите, мне надо из Djvu файла выделить и скопировать текст в блокнот, а в проге иконка выделения текста неактивна, только как изображение можно скопировать выделенный кусок... ((
Как мне скопировать в виде текста??
Автор: vitaly1
Дата сообщения: 06.08.2006 13:43
Fay3
Нужно сохранить дежавю как тифы или bmp и распознать через ФайнРидер, получите текст. Учтите, что там будут ошибки распознавания.
Автор: sm4sh
Дата сообщения: 07.08.2006 18:00
AndyZ
Подскажите, в чем может быть проблема. При компиляции в VC++6(Standard) компилятор выдает следующую ошибку:

Цитата:
D:\Documents\Мои проекты\WinDjView-0.4.2\WinDjView-0.4.2\libdjvu/GRect.h(345) : error C2678: binary '==' : no operator defined which takes a left-hand operand of type 'const class GRect' (or there is no acceptable conversion)
Error executing cl.exe.

Definition нашел, а реализации - нет. При компиляции того же кода в VS2005 никаких проблем не было, но при попытке открыть файл в новооткомпилированной программе вылетает ошибка. Подскажите, как должна выглядеть эта функция в VC++6? Области равны, когда равны все их координаты или только ширина и высота?
Это первый вопрос. Вторая проблема - не могу откомпилировать под VC++6 даже после "исправления" ошибки. Сперва ругается на то, что COLOR_HOTLIGHT не описан, а потом выдает
Цитата:
LINK : fatal error LNK1104: cannot open file "uafxcw.lib"
.

А вообще, программа очень даже неплохая. Лучшее, что я пока видел среди DjVu-вьюверов.
Автор: Griefin
Дата сообщения: 07.08.2006 21:30
Это значит, что там делается сравнение, а компилятор считает, что функция int operator==(const GRect & , const GRect & ) якобы не реализована. Но если посмотреть в GRect.cpp, то ее там можно увидеть. AndyZ помнится говорил, что собирает libdjvu компилятором от VS 2003.

Я почти без проблем собираю весь проект в VS 2003.
Автор: sm4sh
Дата сообщения: 08.08.2006 04:36
Griefin
Это, видимо, из-за того, что реализация operator!= находится там же, в хидере, а реализация operator== - в cpp. Но это не самая серьезная проблема. В VS 2005 я откомпилировал без проблем, но при попытке открыть любой документ приложение вылетает. И самое интересное, что я не понимаю почему. Имхо, все должно и в 6-м Visual'е компилироваться... Но там другая проблема - отсутствие библиотеки "uafxcw.lib".
Автор: AndyZ
Дата сообщения: 08.08.2006 16:48
sm4sh
У Вас установлен последний Service Pack 6 для VC6? Возможно, ошибка с operator!= связана с этим. Я компилирую libdjvu и WinDjView и в VC6, и с помощью Visual C++ Toolkit 2003 без проблем.

Griefin
Получил письмо с патчами, спасибо. 1) Шрифт в дереве - исправлю, только чуть-чуть по другому. Если включены темы, то шрифт надо получать с помощью GetThemeSystemFont вместо SystemParametersInfo. 2) Улучшение собираемости - после этого исправления перестаёт собираться в моей конфигурации с VC2003 Toolkit + Platform SDK + MFC из VC6. 3) Статус поиска в заголовке окна - не хочу. 4) Блокирование Find, если строка поиска пустая - ок.

ghosty
На файле Kozar.djvu - абсолютно стандартное поведение. После открытия книги начинают генериться thumbnails, которые занимают примерно 10MB памяти. Именно поэтому загружен процессор - но они генерятся с низким приоритетом, поэтому тормозов нет. Винда показывает использование памяти 30MB, но это не значит, что все эти 30MB выделены именно под этот файл, так что это не показатель. Если закрыть файл и снова открыть его несколько раз, то остаются примерно те же 30MB, так что утечек памяти нет. Второй файл - Cherniy_ex_ogl.djvu - действительно, использование памяти вырастает до 100MB, даже если выключить thumbnails. Не знаю, с чем это связано. Похоже, это особенность именно этого файла - DjVuLibre при декодировании страниц выделяет много памяти. Но утечек и в этом случае нет.
Автор: ghosty
Дата сообщения: 08.08.2006 18:00
AndyZ
Спасибо за ответ.
Цитата:
Второй файл - Cherniy_ex_ogl.djvu - действительно, использование памяти вырастает до 100MB, даже если выключить thumbnails. Не знаю, с чем это связано. Похоже, это особенность именно этого файла - DjVuLibre при декодировании страниц выделяет много памяти.

Странно, что при открытии плагином для IE в этом случае получаются те же 30Мб.

Спешу заметить, что в остальном (в особенности, с учитом изменений в последней версии) WinDjView просто чрезвычайно удобен
Хотя мне тут говорят, что ни за что не променяют PDF на DJVU, т.к. в последнем, якобы, нет поддержки комментирования.
И я подумал, что эти слова справедливы. Мне тоже часто хочется что-нибудь пометить в тексте. Если бы в WinDjView была возможность провести хотя бы простую линию - подчеркнуть что-нибудь, было бы очень здорово. DjVuLibre, если я правильно помню, позволяет это сделать. Можно ли ожидать появления подобных функций в Вашей программе?
Автор: Griefin
Дата сообщения: 08.08.2006 18:35
AndyZ

Цитата:
Улучшение собираемости - после этого исправления перестаёт собираться в моей конфигурации с VC2003 Toolkit + Platform SDK + MFC из VC6

Понятно почему. Патч создает разные версии вызовов функции в зависимости от версии компилятора, а у вас новый компилятор и при этом старые библиотеки.

ghosty
Region highlighting и рисование фигур были уже в DjVu Solo 3.1. Добавление текстовых аннотаций a la PDF есть в Document Express Editor 6.0. Вполне логично, что программа для просмотра не должна вносить каких-либо изменений в файлы.
Автор: ghosty
Дата сообщения: 08.08.2006 18:43
Griefin

Цитата:
Region highlighting и рисование фигур были уже в DjVu Solo 3.1. Добавление текстовых аннотаций a la PDF есть в Document Express Editor 6.0.

Я об этом знаю.

Хотел привести в пример FoxIt PDF Reader, который все это позволяет делать. Такая возможность была (а может, и есть) в Acrobat Reader'e, но там какие-то ограничения...
Автор: AndyZ
Дата сообщения: 09.08.2006 10:48
ghosty
Цитата:
Странно, что при открытии плагином для IE в этом случае получаются те же 30Мб.
Ничего странного, ведь плагин загружает в память только одну страницу, а WinDjView держит в памяти текущую страницу плюс несколько отрендеренных страниц в обе стороны от текущей, плюс ещё несколько декодированных страниц (не отрендеренных), чтобы непрерывный скроллинг был удобным.

Цитата:
Если бы в WinDjView была возможность провести хотя бы простую линию - подчеркнуть что-нибудь, было бы очень здорово. DjVuLibre, если я правильно помню, позволяет это сделать. Можно ли ожидать появления подобных функций в Вашей программе?
Можно, но ждать придётся долго Наверно до следующего года.

Griefin
Цитата:
Вполне логично, что программа для просмотра не должна вносить каких-либо изменений в файлы.
Я тоже так думаю. Пользовательские аннотации можно хранить либо в registry, либо в xml-файле с тем же именем, что и книга. Но тогда нужен механизм синхронизации файлов/настроек, когда файл переименовывается. У меня была идея привязываться к md5-сумме, скажем, начальных 100КБ файла.

P.S. Проверил magnifying glass на однопроцессорной машине - действительно есть достаточно большая задержка перед рендерингом страницы в натуральную величину. На двухпроцессорной машине такого не было. Буду разбираться, в чём дело.

Добавлено:
ghosty
В файле Cherniy_ex_ogl.djvu для всех страниц с третьей до последней используется один и тот же словарь 0342_1.djbz. Я думаю, это и приводит к большому использованию памяти.
Автор: sm4sh
Дата сообщения: 10.08.2006 05:25
AndyZ
Подскажите, как Вам удается добиться такого быстрого рендеринга сглаженной страницы? Как я понимаю, сперва Вы вписываете DIB в прямоугольник стандартными средствами, а потом запускается какой-то "хитрый" алгоритм. Причем при вписывании с помощью StretchDIBits берется не сама картинка в полный размер, а последний "вид". Так? Но при беглом просмотре кода я не нашел процедуры сглаживания (в OnDraw). Это первый вопрос. Второе: опишите, пожалуйста, общую структуру построения документа. Просто возникла мысль добавить поддержку просмотра многостраничных tiff-файлов, а с чего начать пока не знаю...
Автор: ghosty
Дата сообщения: 15.08.2006 13:36
AndyZ

Цитата:
В файле Cherniy_ex_ogl.djvu для всех страниц с третьей до последней используется один и тот же словарь 0342_1.djbz. Я думаю, это и приводит к большому использованию памяти.

Теперь все ясно. А нельзя ли сделать какую-нибудь автоматику? Просто очень многие делают книги с общим словарем для всех страниц.
Например, если число страниц на словарь <50, то использовать один алгоритм, если >50, то другой?
Или Вы посоветуете не экспериментировать с параметром pages_per_dict?
Автор: monday2000
Дата сообщения: 21.08.2006 07:35
AndyZ
Обнаружился глюк: WinDjView 0.4.2-Win98 не отображает букмарки, в окне букмарков какая-то ерунда.

Проблемы с русскими букмарками:

0.3.6, 0.4-9x - показывают русские букмарки верно.

0.4.1-Win98, 0.4.2-Win98, 0.4.1, 0.4.2 - показывают их неверно - крякозяблами.

Ещё проблема:

Русскоязычные комментарии гиперлинков, внедрённые в DjVu при помощи Document Express Editor v5.0, отображаются крякозяблами. И только если эти гиперлинки внедрить в DjVu при помощи djvused, то только в этом случае русскоязычные комментарии гиперлинков отображаются правильно.
Автор: AndyZ
Дата сообщения: 21.08.2006 11:59
monday2000
Я знаю об этой ошибке, она возникает в версиях Windows до XP. Проблема с djvused в том, что она не конвертирует гиперлинки в UTF-8, а Editor 5.0 корректно использует UTF-8. Из-за этого приходится делать проверку - если строчка well-formed utf-8, то я её декодирую как utf-8, иначе предполагается кодировка ansi. Для проверки well-formed utf-8 в функции MultiByteToWideChar есть флаг, который, как оказалось, поддерживается только Win XP. Из-за этого всё работало правильно только в Win XP.

ghosty
Непонятно, какую автоматику Вы имеете в виду. Если общий словарь большой, то уменьшение количества декодированных страниц ничего принципиально не изменит - сами страницы занимают не так много памяти, как словарь. А экспериментировать с параметром можно - только нужно иметь в виду, что чем больше страниц на словарь, тем больше надо памяти для декодирования.

sm4sh
Что Вы имеете в виду под "сглаженной" страницей? Никаких хитрых алгоритмов у меня нет. Страница рендерится целиком в один битмап, после чего тот участок картинки, который виден в окне, отрисовывается. Если картинка нужного размера ещё не отрендерена, то используется быстрое масштабирование через DC. Насчёт общей структуры документа - у меня обычный MFCшный Document-View. Для поддержки других типов файлов я задумал рефакторинг, но не знаю, когда у меня будет на это время. Пример такого универсального просмотрщика (pdf, djvu и др.) - KViewShell.
Автор: monday2000
Дата сообщения: 22.08.2006 10:02
AndyZ
Но больше всего напрягает это:

Цитата:
Обнаружился глюк: WinDjView 0.4.2-Win98 не отображает букмарки, в окне букмарков какая-то ерунда.

Можете исправить?

И насчёт русских букмарков:

Цитата:
0.3.6, 0.4-9x - показывают русские букмарки верно.

То есть - раньше работало, а теперь - нет, значит, можно просто взять кусок старого верного кода и вставить в свежие версии. Верно показываемые русские букмарки тоже хотелось бы.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556

Предыдущая тема: Двухядерные AMD


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.