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

» WinDjView

Автор: monday2000
Дата сообщения: 05.06.2009 11:12
AndyZ

Цитата:
А Вы уверены, что исходная GUTF8String правильная? %D0 и т.д. - это не UTF8. Такое впечатление, что это UTF8, обёрнутый в URL encoding. Поэтому MakeCString просто ничего не меняет.

Да, вполне вероятно (URL encoding). Это же путь, который там считывается из ком.строки. Значит, надо как-то этот URL encoding преобразовать в нормальную строку. Интересно, как бы это сделать.

Добавлено:
Да, это класс GURL, а внутри него сидит GUTF8String. Т.е. хорошо бы отыскать в GURL метод декодирования URL encoding (если там есть такое).
Автор: AndyZ
Дата сообщения: 05.06.2009 12:06
monday2000
Бросил взгляд на GURL.h, там есть функция GURL::UTF8Filename(). Так что читайте исходники.
Автор: monday2000
Дата сообщения: 05.06.2009 14:07
AndyZ

Цитата:
Бросил взгляд на GURL.h, там есть функция GURL::UTF8Filename().

Спасибо, именно это и сработало. Вот что получилось:

Цитата:
char strResult[260] = {0};

MakeString(g().pnmurl.UTF8Filename(), strResult);

Готовая строка оказывается в strResult.

MakeString - это подкорректированная MakeСString (не-МFС-вариант).
Автор: AndyZ
Дата сообщения: 05.06.2009 14:32
monday2000
В Вашем коде возможен buffer overflow.
Автор: monday2000
Дата сообщения: 05.06.2009 16:47
AndyZ
Но ведь длина файлового пути в Windows лимитирована 260 символами, верно? Есть даже такая константа - MAX_PATH = 260 - как раз для массивов, содержащих файловый путь - см. http://ru.wikipedia.org/wiki/%D0%98%D0%BC%D1%8F_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0 .

Добавлено:
Я поставил в MakeString ограничение максимального размера 260 символов.

Добавлено:
Конечно, можно было бы освобождать выделенную под путь память после выхода из MakeString (и не ограничиваться 260 символами) - но есть ли смысл?
Автор: Griefin
Дата сообщения: 05.06.2009 21:52
monday2000
Указывать константы в числовом виде -- моветон. Подключите h-файл и укажите MAX_PATH вместо 260. Кроме того, размер буфера лучше передавать в функцию как один из параметров. См. как реализованы strn-функции из стандартной библиотеки.
Автор: Nick222
Дата сообщения: 05.06.2009 22:13
Это мне напомнило анекдот - как опытный программист задаёт массив чётных целых числе в диапазоне от 1 до 10:
{2,4,6,8}

Извините за офф-топ
Автор: monday2000
Дата сообщения: 06.06.2009 12:22
Вот что у меня получилось:

http://www.djvu-soft.narod.ru/soft/fi_c44.htm

Добавлено:
Griefin

Цитата:
Указывать константы в числовом виде -- моветон. Подключите h-файл и укажите MAX_PATH вместо 260.

Да можно, конечно.

P.S. Мне вообще для начала нужно было просто заставить всё это хоть как-то работать.
Автор: monday2000
Дата сообщения: 07.06.2009 19:42
http://www.djvu-soft.narod.ru/soft/fi_c44.htm обновлено.
Автор: PGR_2006
Дата сообщения: 08.06.2009 20:55
В версии 1.0 фон окна с djvu-документом стал белым. В версии 0.5 он был серым и было комфортнее читать. Можно ли вернуть цвет фона?
Автор: AndyZ
Дата сообщения: 08.06.2009 21:58
PGR_2006
Цвет фона привязан к цветовой схеме Windows. В версии 0.5 он рассчитывался на основе цвета BTNFACE (цвет кнопок), в 1.0 - на основе цвета BTNSHADOW (тень от 3х-мерных объектов). Если этот цвет у Вас отображается как белый, значит такая системная цветовая схема. Она у Вас нестандартная?
Автор: PGR_2006
Дата сообщения: 09.06.2009 09:23
Да, у меня установлена тема Human Blue.
Но при попытке настроить этот цвет темнее через "Свойства: Экран > Оформление > Дополнительно > Рельефные объекты" портится оформление меню, панелей инструментов и.т.д.
Автор: ghosty
Дата сообщения: 13.06.2009 16:18
AndyZ

Цитата:
Переключение стандартное - Ctrl+Tab. А в полноэкранном режиме открывается одна книга. Чтобы переключиться на другую, нужно из него выйти.
Но, возможно, ничто не запрещает сделать это сочетание клавиш рабочим для полноэкранного режима. Вкратце опишу, как я сейчас читаю, чтобы было понятно, что мои хотелки - не пустой каприз
Читаю параллельно три книжки в полноэкранном режиме - оригинал и два перевода. Соответственно переключаться приходится часто. Поля у книжек большие. Чтобы переключиться на любую другую книжку, нажимаю Esc, Ctrl-Tab, Ctrl-L, Ctrl-M, ввожу значение масштаба для отображения по текстовому блоку (для каждой книги он разный - от 110 до 280 ). Т.е. довольно много движений получается.


Цитата:
Пока можно воспользоваться пунктами меню Import/Export Bookmarks.
Если эта функция уже есть, то, возможно, нетрудно сделать опцию автоматического экспорта при закрытии книги и импорта из того же файла при открытии. В этом случае проблема синхронизации будет решена. Хотя лучше, наверное, все букмарки сохранять в один файл (а может быть, кому-то будет удобно так, кому-то эдак).
Автор: Nick222
Дата сообщения: 13.06.2009 17:05
Насчёт букмарков:
- если просто читать, то удобнее наверное в один файл,
- но если работать серьёзно (например, писать дисер), то, думаю, нужен отдельный файл для каждой книги + софт, который бы позволял всё это просматривать по всем книгам в той или иной директории.
Автор: ber2004
Дата сообщения: 24.06.2009 18:46
Поддерживаю насчет букмарков. Лучше отдельными файлами для каждой книги. Одноименными с соотв. книгой.
Особенно это полезно тем, что при доступе по сети можно гибче управлять правами редактировать закладки или только просматривать и т.д.
И при передаче книги другому лицу можно передать только нужные закладки или не передать вовсе.
А вот хранить файлик с закладками можно двояко:
1. в той же директории, где лежит книга
2. в отдельной (указанной в настройках) папке (централизованное хранилище).
Первый вариант более очевидный. Я бы так хранил.
----
И наверное, ни в коем случае не стоит вносить пометки в файл самой книги. Как уже отмечали популярные книги немедленно расплодятся в различных вариантах и найти среди них лучший или просто исходный станет невозможно.
Так же как сейчас - найти качественный mp3 без информации кто именно и из какого источника рипнул. А книги в большинстве приходят без информации кто сканировал и т.д. А уж кто там пару пометок черкнул - история точно не сохранит.

Добавлено:

Цитата:
такой формат хранения дополнительной информации к книгам можно сделать единым для всех форматов е-книг - как сейчас формат описания FBD можно в ряде библиотекарей использовать для описания книг любого формата файла.

Может за основу взять наработки fb2? Там же есть поля и для автора и заглавия и аннотации и т.д.. Придумать теги для закладок и графических помет и все...
Формат текстовый, поисковиками искать можно будет свои закладки (если помнишь как назвал )
Даже обложку можно засунуть.
Программа-библиотекарь есть в нескольких вариантах...
Т.е. практически все готово уже к каталогизации.
+1 за (осмысленную) унификацию и взаимопроникновение удачных находок разных разработчиков.
Автор: U235
Дата сообщения: 24.06.2009 21:24
ber2004

Цитата:
Первый вариант более очевидный. Я бы так хранил.

ИМХО, не очень удобно, когда файл находится на read-only носителях DVD, CD...
Уж лучше где нибудь в %appdata%
Автор: ber2004
Дата сообщения: 24.06.2009 22:22

Цитата:
ИМХО, не очень удобно, когда файл находится на read-only носителях DVD, CD...
Уж лучше где нибудь в %appdata%

Так на этот случай

Цитата:
2. в отдельной (указанной в настройках) папке (централизованное хранилище).

--
Можно даже автоматизировать: "если папка с книгой недоступна на запись - сохранять закладки в централизованную папку <...>". Добавится одна галка в настройках.
--
Еще дальше: "если файл с закладками *.bookmarks существует и недоступен на запись, то автоматически создается *.bookmarks01 в месте доступном для записи (рядом с папкой или централизованно, в опциях можно предпочтение задавать).
А отображаются закладки из обоих.
--
Еще дальше: Произвольное количество закладок *.bookmarksNN видимостью каждого из которых можно из просмотрщика управлять.
--
А в %appdata% не стоит, ИМХО. Аналогия: ничего не храню в папке "Мои документы". Только на другом диске и в папке с нетаким именем . Печальный опыт форматирования...
---
И гулять так гулять (прошу прощения у автора, но логика развития сюжета неумолима): Иерархия закладок. Как у вордовского файла заголовки в режиме "структура документа". Щелкнул на крестике - открылся новый уровень, щелкнул снова - остались только заголовки верхнего уровня. Уровней вложенности может быть несколько.
Оглавление так делать просто шикарно будет (во многих справочниках-энциклопедиях заголовков очень много и без структурирования навигация трудна).

Автор: monday2000
Дата сообщения: 30.06.2009 17:03
Я тут нарыл одну интересную ссылку:

Окно с изменяемой степенью прозрачности

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=30

Там прилагается демка внизу - полупрозрачное окно с задаваемым цветом подкрашивания.

Можно это окно накладывать поверх WinDjView - и тогда текст в WinDjView будет казаться как бы на цветном фоне (вместо белого как сейчас).

Хорошо ставить какой-нибудь зелёный цвет - глаза устают значительно меньше, чем с обычным белым фоном окна.

Конечно, лучше всего, чтобы это было сделано как новая фича WinDjView.

И заодно уж и в полноэкранном режиме сделать бы опцию задавания цвета фона.
Автор: ber2004
Дата сообщения: 30.06.2009 21:17

Цитата:
глаза устают значительно меньше, чем с обычным белым фоном окна

Как полумеру - могу предложить в настройках WinDjView уменьшить яркость, совсем чуть чуть. И снежно-белый станет более спокойным серым.
Автор: ber2004
Дата сообщения: 10.07.2009 19:11
Предложение уважаемому автору:
на команду перехода в полноэкранное отображение (и из него - обратно) добавить ещё одну быструю клавишу : одиночный клик средней кнопкой мыши.
Причина: листаю исключительно мышкой, левая рука занята обычно бумажной литературой . Поэтому кликать без переноса руки было бы удобно.
Да и привычно: во многих смотрелках графических файлов полноэкранность достигается таким кликом: ACDSee, Irfan View, графический листер в Total Commander'e и др.
---
доп. кнопка (гипотетическая) имхо была бы менее удобна, т.к. в нее еще попасть надо, а тут - не глядя можно щелкать.
Автор: ghosty
Дата сообщения: 10.07.2009 19:34
ber2004

Цитата:
на команду перехода в полноэкранное отображение (и из него - обратно) добавить ещё одну быструю клавишу : двойной клик левой кнопкой мыши.
Двойной клик по тексту - выделение слова. Я предлагал двойной по закладке книги.
Автор: ber2004
Дата сообщения: 10.07.2009 20:25
Ай, блин, тормоз я....
Имел в виду конечно одиночный клик средней кнопкой (как в ACDSee).
Кстати масштабирование (+, -, *) уже работают в точности как в ACDSee, и это удобно - нажимать одну клавишу, а не комбинацию.
---
а прокручивание быстрое я уже много лет делаю с утилиткой MouseImp (http://cooler.irk.ru/mouseimp/, там есть и исходные тексты).
При этом "хватаешь" экран правой кнопкой мыши и тащишь вверх-вниз или вправо-влево.
Особенность в том, что перемещение мыши на заданное (настраиваемое) расстояние всегда означает перемещение на заданную долю (!) страниц. Т.е. длинные документы листаются быстрее. Одним движением (в пределах обычного диапазона движений мышкой, у меня соответствует перемещению мышки на полэкрана по верт.) пролистывается вся (!) книга.
Ну а медленное листание - вращением ролика.

Может ув. Автор предусмотрит подобную функциональность и в самом WinDJView? (про MouseImp мало кто знает, а удобно же)
Будет удобнее по сравнению с "мелкомягким офисным" вариантом:
1. Перемещение не только вверх-вниз, но и поперек
2. Не нужен второй клик, чтобы выйти из режима
3. После отпускания кнопок страница неподвижна. А в имеющемся "офисном" варианте - режим остается активным, пока его явным образом не выключишь. Представляете автомобиль: снял ногу с акселератора - а "авто" продолжает вовсю газовать? ...
Только мышкой потянулся что-то выделить, а документ радостно уезжает неизвестно куда...
Ибо когда увлеченно читаешь/работаешь - трудно контролировать находишься ли ты в режиме прокрутки или нет (контроль визуальный по спец. значку на экране, а тот - в неопределенном месте). А с MouseImp - контроль режима по положению пальца на мыши, что можно не глядя и более достоверно знать - нажимаешь ты кнопку или нет.
Ох, эргономика, страсть моя неизбывная...
Автор: monday2000
Дата сообщения: 16.07.2009 20:19

Цитата:
Хорошо ставить какой-нибудь зелёный цвет - глаза устают значительно меньше, чем с обычным белым фоном окна.

Всё-таки вроде бы не всё так просто с этой идеей. Когда буквы чёрные, а фон - белый, то получается максимальный контраст. А вот когда фон - какой-нибудь там зелёный, то контраст уже гораздо хуже. Как бы это ни важней оказалось, чем подкрашенный (зелёный) фон. Надо бы что-нибудь почитать в Интернете на эту тему...
Автор: ghosty
Дата сообщения: 16.07.2009 22:06

Цитата:
Всё-таки вроде бы не всё так просто с этой идеей. Когда буквы чёрные, а фон - белый, то получается максимальный контраст. А вот когда фон - какой-нибудь там зелёный, то контраст уже гораздо хуже. Как бы это ни важней оказалось, чем подкрашенный (зелёный) фон. Надо бы что-нибудь почитать в Интернете на эту тему...

Книгопечатное дело в Европе насчитывает сотни лет - вполне достаточно, чтобы понять, что текст на белой мелованной бумаге читать крайне утомительно. Добиваться белизны необходимо только при печати изображений – в старых дорогих изданиях разные сорта бумаги использовались для печати текста и изображений отнюдь не из экономии. Научные доказательства тут излишни, тем более и книжное дело более сродни искусству, чем ремеслу или науке.
Вообще, думаю, всякий уважающий себя «книгосканировщик» должен иметь хотя бы поверхностное знание о технологии и искусстве изготовления бумажных книг – о специфике того материала, с которым он работает. Хотя бы для того, чтобы ненароком чего-нибудь не испортить
К примеру, Ян Чихольд, можно сказать, патриарх книжного дела XX века (), посвятил специальную главу в своей работе «Облик книги» именно выбору бумаги. Вот лишь небольшая цитата:
Цитата:
Таким образом, белизна бумаги не является признаком ее прочности. Бумага с белой поверхностью непригодна для печатания книг, так как она слепит глаза. Для этой цели необходимо иметь бумагу с нежным оттенком, приближающимся к ecru или шамуа. Даже самые дешевые книги и журналы следовало бы печатать на тонированной, а не на чисто-серой бумаге.
Кстати, для определенных шрифтов надо выбирать конкретные бумаги с соответствующими характеристиками поверхности и тона. Особенно это касается новых вариантов классических шрифтов. Чем шрифт старее, тем темнее и шероховатее должна быть бумага. Шрифт Полифилус — антиква (1499) не раскрывает себя полностью на белой бумаге. Он выглядит эффектно только на бумаге, которая по тону и характеру приближается к бумаге 1500 г. Аналогично обстоит дело с антиквой Гарамон (около 1530). В конце XVIII в. отдавали предпочтение «белой» бумаге (к счастью, в то время еще не научились отбеливать ее так, как это делают теперь), а потому эффект печати на ней антиквой Баскервиль (около 1750) и Вальбаум (около 1800) был наилучшим. Только антиква Бодони (около 1790), и то крупного кегля, на больших страницах «уживается» с «совсем белой» бумагой, однако в том случае, если поверхность бумаги имеет определенную структуру. Бодони преднамеренно рассчитывал на это крайнее противоречие между нервозно черно-белым цветом литеры и белой, довольно гладкой бумагой, на эффект, который очень мешает приятному чтению. В этом за ним следовал XIX в.

В общем, очень, очень советую прочитать этот шедевральный труд, хотя бы одну главку
http://rapidshare.com/files/256557062/Yan_Chihold__Jan_Tschichold__Oblik_Knigi_1975-1980.242_p._RUS_.rar

Кстати, тут есть кое-что и для Arcand’a с его страстью к сглаживанию шрифтов:

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

Прошу простить за несколько чрезмерное цитирование – преклоняюсь перед этими людьми
Автор: monday2000
Дата сообщения: 17.07.2009 09:33
ghosty
Не всё так просто. Здесь не бумага - а экран монитора. Он изнутри светится, и т.д.
Автор: Imperator
Дата сообщения: 17.07.2009 09:55
По опыту чтения на КПК меньше глаза устают с чёрным фоном и светлыми буквами.
Автор: ghosty
Дата сообщения: 17.07.2009 10:33

Цитата:
Не всё так просто. Здесь не бумага - а экран монитора. Он изнутри светится, и т.д.
Это уже исключительно проблема пользователя, а не программиста. Немножко об эргономике чтения с различных устройств я писал здесь: http://forum.ru-board.com/topic.cgi?forum=93&topic=2364#4
Автор: monday2000
Дата сообщения: 29.07.2009 16:04
AndyZ
Я хочу сделать себе некую консольную утилитку, чтобы для данного DjVu-файла вытаскивала оптом координаты (относительно страницы) и цвета всех вручную проставленных в WinDjView аннотаций (в данном DjVu-файле) и выводила эти координаты в текстовый ini-файл (в формате "номер страницы", "номер аннотации", "координаты аннотации", "цвет аннотации").

Эта информация хранится в реестре - как бы её оттуда вытянуть? Я посмотрел - там есть на каждый DjVu-файл узел, где хранится его путь и некие бинарные данные, по-видимому, характеризующие аннотации.

Где в WinDjView находится нужный мне кусок кода - который считывает из реестра и парсит информацию об этих WinDjView-специфических аннотациях - при открытии каждого DjVu-файла?
Автор: monday2000
Дата сообщения: 30.07.2009 10:40
AndyZ
Небольшая проблема с WinDjView. Описание тут:

http://www.djvu.org/forum/phpbb/viewtopic.php?t=681

Добавлено:

Цитата:
некие бинарные данные, по-видимому, характеризующие аннотации.

Точнее, мне хотелось бы узнать подробности о формате этой бинарной строки из реестра (характеризующую WinDjView-специфические аннотации) - как оттуда вытащить информацию
Цитата:
(в формате "номер страницы", "номер аннотации", "координаты аннотации", "цвет аннотации").
Автор: AndyZ
Дата сообщения: 30.07.2009 20:37
monday2000
Начните смотреть отсюда: CDjViewApp::LoadDocSettings().

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556

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


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