LINUX.ORG.RU

Simple Viewer GL 2.75

 , ,


3

5

Simple Viewer GL — легковесный просмотрщик изображений.

Интерфейс состоит из одного окна с опциональной строкой статуса и информацией о пикселе под курсором и/или выделенной области (скриншот). Simple Viewer GL умеет определять тип файла по его сигнатуре, а не только по расширению, а также рекурсивно сканировать директорию.

Работает в GNU/Linux и macOS.

Новое в 2.75

  • Добавлена поддержка формата XPM (собственная реализация).
  • Добавлена поддержка формата TARGA (собственная реализация).
  • Убрана зависимость от библиотеки libconfig++ в пользу ini-подобного конфигурационного файла.
  • Улучшена поддержка форматов DDS, ICO и XWD.
  • Обновлена палитра ZX-Spectrum (теперь это PULSAR, как на «железном» ZX).
  • Добавлена возможность сохранять зум (переключается по хоткею <shift>+<s>).
  • Исправлена ошибка с фильтрацией текстур.
  • Улучшено сканирование директории, поддержка перетаскивания списка файлов.

Поддерживаемые форматы

Сторонняя реализация:

  • PNG (libpng);
  • JPEG (libjpeg);
  • TIFF (libtiff);
  • GIF (giflib);
  • WEBP (webp).

Собственная реализация:

  • PPM (24 raw и 24 ASCII);
  • XPM (только xpm 2);
  • TARGA;
  • DDS (частично);
  • PSD (формат до конца не отреверсили, посему не все функции поддерживаются);
  • ICO (png и «обычные» фреймы);
  • XWD (только x11);
  • SCR (ZX-Spectrum screen);
  • PVR, RAW, AGE (это внутренние форматы).

>>> Simple Viewer GL на BitBucket

★★★★★

Проверено: Shaman007 ()
Последнее исправление: Wizard_ (всего исправлений: 10)
Ответ на: комментарий от Linfan

хз, пробуй. У меня таких задач никогда не стояло, чтобы трансформить по месту битмап.

Я пробовал. Оно работает. Но я не уверен, что это правильно.

andreyu ★★★★★
() автор топика

Последний гит не собирался, пришлось подкорректировать код так:

        png_charpp icc;
        png_uint_32 size;
        if (png_get_iCCP(png, info, &name, &comp_type, icc, &size) == PNG_INFO_iCCP)

anonymous
()
Ответ на: комментарий от andreyu

Раз работает, значит норм. Обработка же все-равно попиксельно идет. Даже если в многопоточном режиме.

Linfan ★★★★★
()
Ответ на: комментарий от andreyu

Картинка 20000х20000х24. Это уже больше гигабайта. Следующий мипмап в 4 раза меньше исходной картинки. Итого уже нужно гигабайт с четвертью. А ведь одним уровнем мипмапа можно и не обойтись. Да и построение такого мипмапа требует ресурсов.

Конечно одним не обойдется, в этом и смысл, иначе бы и шейдер прокатил. Если быть точным по ресурсам это 1/4 + 1/16 + 1/64 + 1/256 и сходится это вроде к 1/3. Первый мип самый толстый, а остальное и по памяти и по ресурсам уже копейки, так что это вроде норм вариант. Для гибридного варианта можно начать с 1/16 мипа, а 1/4 не делать и добивать шейдером окрестность. Если ресурсы важны, можно сделать настройку, где будет выбор что мы едим, GPU память, GPU рассчеты или вообще без качественного довнскейла (он полюбому что-то съест).

anonymous
()
Ответ на: комментарий от Linfan

Раз работает, значит норм. Обработка же все-равно попиксельно идет. Даже если в многопоточном режиме.

Это если для трансформации не нужно учитывать соседние пиксели.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от andreyu

Она рисуется «пиксел-в-пиксель». Что за замыливание?

Вот, смотри: https://0x0.st/Vdk.png

Причём, если присмотреться, то она периодически пульсирует.

Есть такое дело, добавлю автоповтор нажатия.

Мы в одиннадцатиром тебе заранее благодарны. :3

Скорее всего косяк или моей реализации, или glfw.

Тут больше вероятность, что glfw, но, во избежание о_О задокументируй хоть. Не сказать, что раздражает или неюзабельно, просто удивило.

Пофиксил в development ветке

Сегодня потыкаю, но ебилд уже завтра напишу, может, к тому моменту gitlab обратно поднимут (раздолбаи).

Но реализовать это несложно.

Я бы с радостью сам чего напуллреквестил, но в сишку не умею, потому даже пытаться не стану, чтобы не прибавить седых волос (на лобке) у тех, кто увидит мой код (и не сможет его потом развидеть).

r3lgar ★★★★★
()
Ответ на: комментарий от anonymous

И &icc, 1.2.54-1ubuntu1.

Это потому, что

png_charpp icc;

а не

png_charp icc;

С моим фиксом в development ветке должно собираться.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от andreyu

Попробуйте сейчас из development ветки. Только предварительно откатите свой фикс.

Да, так работает.

anonymous
()
Ответ на: комментарий от andreyu

Вначале мы сделали жирное приложение

Это с вас жир капает. А photoqt намного легче популярных просмоторщиков. Я писал про действительно слабые машины.

Давайте идти дальше, нечего просмотрщику показывать картинки. Пусть этим занимается кто-либо другой.

Слишком жирно. Воспользуйтесь фэйри.

KOT040188 ★★
()
Ответ на: комментарий от r3lgar

Вот, смотри: https://0x0.st/Vdk.png

Вроде норм :)

Причём, если присмотреться, то она периодически пульсирует.

Она крутится :)
Наверное нужно остановить вращение. можно нажать кнопочку «С» и тогда фон зальется однородным цветом (по умолчанию синим).

Мы в одиннадцатиром тебе заранее благодарны. :3

Постараюсь сделать как можно быстрее.

Тут больше вероятность, что glfw, но, во избежание о_О задокументируй хоть. Не сказать, что раздражает или неюзабельно, просто удивило.

А можно чуть подробнее описать поведение, что нажимается, что происходит?

andreyu ★★★★★
() автор топика
Ответ на: комментарий от KOT040188

Это с вас жир капает. А photoqt намного легче популярных просмоторщиков. Я писал про действительно слабые машины.

Все познается в сравнении. На мой взгляд photoqt далеко не легковесный.

Слишком жирно. Воспользуйтесь фэйри.

Этот жир именно вы сюда и притащили. Так что сами его и отмывайте.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от r3lgar

Что-то в плане зума и навигации (сдвига) по картинке ничего не изменилось. ЧЯДНТ?

Нужно переключиться в ветку development
$ git checkout development
$ git pull
$ make release

andreyu ★★★★★
() автор топика
Ответ на: комментарий от andreyu

Это был вопрос к буратино. Я просто не в курсе что у них там в опенбзд есть.

imul ★★★★★
()
Ответ на: комментарий от andreyu

Вроде норм :)

Горизонтальный сдвиг на полпикселя. Увеличь посильнее. Причём периодически замыливает аж в 2.5-3.5 пиксеся, и не только по горизонтали, только заскриншотить это я не успеваю.

Она крутится :)

Кто из нас сейчас ест галлюциногенные грибы — ты, или я?

Кстати, пикча тоже передвигается на пиксель постоянно. О_О На синем фоне это отчётливо видно.

А можно чуть подробнее описать поведение, что нажимается, что происходит?

Открываем sviewgl, переходим в полноэкранный режим (или открываем его уже в полноэкранном режиме через опцию), переключаем таг/десктоп, sviewgl сворачивается. Возможно, это происходит только в awesome, но сам awesome такой фигнёй не страдает.

r3lgar ★★★★★
()
Ответ на: комментарий от andreyu

Не нужно. Это ж не ресайз или что-то похожее.

Linfan ★★★★★
()
Ответ на: комментарий от andreyu

Нужно переключиться в ветку development

Прошу прощения, не углядел, что у тебя в репозитории основной бранч — master.

r3lgar ★★★★★
()
Ответ на: комментарий от r3lgar

Что-то в плане зума и навигации (сдвига) по картинке ничего не изменилось. ЧЯДНТ?

Так, мой говнофикс нуждается в фиксе :)
Чуть позже переделаю.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от Odalist

GPicView ещё жив?

Кажется что да, жив. Последняя версия 0.2.5, от 2016-02-20 года.

Куда слать баги? Я им, правда, уже не пользуюсь больше года...

question4 ★★★★★
()
Ответ на: комментарий от r3lgar

О, чекеры пофикшены. :3 Аффтар, эти два красных (гента во всём виновата, и галерея ЛОРа, конечно) шарика тебе уже сильно благодарны. :3

r3lgar ★★★★★
()
Ответ на: комментарий от r3lgar

Кто из нас сейчас ест галлюциногенные грибы — ты, или я?

Там действительно сделано движение шахматки по окружности. Думал, что это хорошая идея. Оказалось дрянь. Убрал.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от r3lgar

Открываем sviewgl, переходим в полноэкранный режим (или открываем его уже в полноэкранном режиме через опцию), переключаем таг/десктоп, sviewgl сворачивается. Возможно, это происходит только в awesome, но сам awesome такой фигнёй не страдает.

Был какой-то косяк у моего друга на xmonad - там фокус терялся. Но он пофиксил конфигом xmoand.
У меня нет ничего специфического - просто создаю окно, нужно разбираться. Пока не понимаю причины.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от r3lgar

Ну, с зумом всё окотенно. :3

Не, там был баг. Я переделал.

У меня, кстати, кончилось терпение на 15K% зума, какой верхний предел? (=

Верхней границы нет. Нижняя 1%

andreyu ★★★★★
() автор топика

Даёшь больше программ на легковесном GL, без использования монструозных тулкитов!

Eddy_Em уже был замечен в треде?

На Arch Linux собралось норм, всё работает хорошо. Мог бы сделать PKGBUILD, но glfw меня смущает немного (wayland или x11?).

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

без использования монструозных тулкитов

И без нативных контролов, ага.

RazrFalcon ★★★★★
()
Ответ на: комментарий от andreyu

Там действительно сделано движение шахматки по окружности.

Ну, я вначале списал это на усталость и передоз веществами под вечер, но сделав скриншот, я таки убедился, что меня не глючит, и только потом сюда написал про это дело. Честно говоря, не думал, что это было сделано намеренно. о_О

Был какой-то косяк у моего друга на xmonad - там фокус терялся. Но он пофиксил конфигом xmoand.

Значит, это проблема тайлинга.

У меня нет ничего специфического - просто создаю окно, нужно разбираться. Пока не понимаю причины.

Забей, это glfw чудит.

Не, там был баг. Я переделал.

Я не заметил.

Верхней границы нет. Нижняя 1%

За нижний порог в 1% благодарю. А почему не хочешь сделать ограничение верхнего порога? Я не встречал просмотрщиков без верхнего порога зума, так что это киллерфича, но даже 1K обычно хватает для абсолютно всего возможного юзкейса.

(мне порог не нужен (а если (когда) будет поддержка svg, то это будет мегакиллерфича (вешающая нахрен GPU при >10K zoom, лол)), просто хочу понять причину такой реализации)

Кстати, насчёт зума: блюр — это, конечно, красиво, но на слабых машинах было бы огромным плюсом, если бы его можно было отключать (или наоборот, включать) опцией.

r3lgar ★★★★★
()
Ответ на: комментарий от RazrFalcon

Ты упомянул qtsvg, который тянет qtcore+qtgui что совсем немало для рендеринга svg, хотя, можно обойтись и без него, так как он (qtsvg) не даёт никаких преимуществ.

r3lgar ★★★★★
()
Ответ на: комментарий от r3lgar

а если (когда) будет поддержка svg, то это будет мегакиллерфича (вешающая нахрен GPU при >10K zoom, лол)

Судя по сэмплам в кутях, svg рисунок на GL канве ресайзится может как угодно, без серьезных нагрузок

Linfan ★★★★★
()
Ответ на: комментарий от r3lgar

(мне порог не нужен (а если (когда) будет поддержка svg, то это будет мегакиллерфича (вешающая нахрен GPU при >10K zoom, лол)), просто хочу понять причину такой реализации)

При чём тут GPU? SVG не обязательно рендерить весь.

RazrFalcon ★★★★★
()
Ответ на: комментарий от r3lgar

А почему не хочешь сделать ограничение верхнего порога?

А смысл? Не жмем «+», не меняется зум :)

Кстати, насчёт зума: блюр — это, конечно, красиво, но на слабых машинах было бы огромным плюсом, если бы его можно было отключать (или наоборот, включать) опцией.

Блюр (наверное речь о линейной фильтрации) включается только если зум не кратен 100 единицам. При 100%, 200%, 300%.. линейная фильтрация отключается. Должна отключаться. Если этого не происходит, значит это баг который я внес исправляя зум.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от andreyu

Здесь больше ничего менять не надо.
simpleviewer-gl-9999.ebuild

# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=5

inherit cmake-utils git-r3

DESCRIPTION="Small and simple image viewer for Linux."
HOMEPAGE="http://www.ugolnik.info/?p=1302"
EGIT_REPO_URI="https://bitbucket.org/andreyu/simple-viewer-gl"
EGIT_BRANCH="development"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS=""
IUSE=""

DEPEND="
	media-libs/lcms
	media-libs/glfw
	media-libs/freetype:2
	media-libs/giflib
	media-libs/imlib2[X,jpeg,gif,png,tiff]
	virtual/jpeg
	media-libs/libpng
	media-libs/tiff
	virtual/opengl
"
RDEPEND="${DEPEND}"

src_install() {
	dobin "${BUILD_DIR}"/sviewgl
	dodoc config.example
}


Здесь надо будет менять номер версии и хэш коммита соответствующий тегу.
simpleviewer-gl-2.77.ebuild
# Copyright 1999-2017 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=5

inherit cmake-utils git-r3

DESCRIPTION="Small and simple image viewer for Linux."
HOMEPAGE="http://www.ugolnik.info/?p=1302"
EGIT_REPO_URI="https://bitbucket.org/andreyu/simple-viewer-gl"
EGIT_COMMIT="81c1787"

LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~x86 ~amd64"
IUSE=""

DEPEND="
	media-libs/lcms
	media-libs/glfw
	media-libs/freetype:2
	media-libs/giflib
	media-libs/imlib2[X,jpeg,gif,png,tiff]
	virtual/jpeg
	media-libs/libpng
	media-libs/tiff
	virtual/opengl
"
RDEPEND="${DEPEND}"

src_install() {
	dobin "${BUILD_DIR}"/sviewgl
	dodoc config.example
}


Может кому пригодится.

imul ★★★★★
()
Ответ на: комментарий от imul

Супер, спасибо.

Я ставлю теги на определенные версии (v2.77). Может лучше их использовать вместо хеша?

andreyu ★★★★★
() автор топика
Ответ на: комментарий от andreyu

Тогда вместо EGIT_COMMIT=«81c1787» сделать EGIT_TAG=«2.77».

imul ★★★★★
()
Ответ на: комментарий от RazrFalcon

А rsvg тянет glib, cairo, pango, xml2, и тонну других либ.

Естественно, потому, что нет смысла писать уже написанный код. А в культях решили, что это фатальный недостаток, и написали свою реализацию. Вот только glib, cairo, pango и xml2 есть почти на каждом десктопе, а культи тянуть нужно не всем.

При этом, чтобы не казаться хейтером, я скажу, что у меня не стоит gtk3 но при этом стоит qt5.

r3lgar ★★★★★
()
Ответ на: комментарий от RazrFalcon

Разве? В память всё равно весь этот xml-трэшак надо грузить и изначально рендерить, а у меня есть и тридцатимегабайтные svg…

r3lgar ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.