NME
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Залезу таки в код, посмотрю чё там на самом деле, завтра отпишусь.. | залез, посмотрел.. Цитата: Где-то AndyZ давал комментарий, что 96 округляет до 100, чтоб шустрее всё считалось.. И в исходниках, по-моему, тоже был такой комментарий, но это не точно | нашел и этот комментарий, файл DjVuView.cpp Код: // Note: screen DPI is reported by Windows through the screen DC. // However, the default value of 96 causes the common zoom levels // of 50%, 100%, 150% look bad for common 300dpi and 600dpi documents, // because the scaling factor will be non-integer. However, by // explicitely setting dpi value to 100, we can cause common zoom // levels to require integer subsampling, and the resulting images // will look better and will be rendered faster. // // CScreenDC dcScreen; // m_nScreenDPI = dcScreen.GetDeviceCaps(LOGPIXELSY); m_nScreenDPI = 100; | гуглоперевод Цитата: Примечание. Разрешение экрана сообщается Windows через DC экрана. Однако значение по умолчанию 96 приводит к тому, что общие уровни масштабирования 50%, 100%, 150% выглядят плохо для обычных документов с разрешением 300 и 600 точек на дюйм, поскольку коэффициент масштабирования будет нецелым. Однако, явно установив значение dpi равным 100, мы можем заставить общие уровни масштабирования требовать целочисленной подвыборки, и полученные изображения будут выглядеть лучше и будут отображаться быстрее. | по вопросу замены dpi тоже нашел кусок кода, файл libdjvu\DjVuInfo.cpp Код: void DjVuInfo::decode(ByteStream &bs) { // Set to default values ... if (dpi < 25 || dpi > 6000) dpi = 300; ... } | Цитата: Насколько мне не изменяет мой склероз, WinDjView игнорит значения меньше 100, приводя их к 100.. но это не точно, смотрите исходники м.б. это даже не в WinDjView, а в коде djvulibre происходит, не помню уже.. | да, в djvulibre.. но нет, не 100, а 25.. проверил это на книге, установив hex-редактором значения dpi страниц 10, 20, 30, 6000, 6005.. действительно, значения 10, 20 и 6005 игнорирует, заменяя их на 300, причем в инфо тоже пишет 300, а не то, что в файле.. в других вьюверах (штуки 4 проверил) такое же поведение.. получается, что в случаях и с 72, и с 84 dpi должен использовать эти значения, с учетом отклонения 4% из-за округления 96 до 100.. ну, как-то так..
|