LINUX.ORG.RU

Сообщения hobbit

 

Драма со шрифтами из 2020 года: было ли продолжение?

Форум — Desktop

Наткнулся тут на тему из 2020 года «Библиотека Pango отказалась от мягкого сглаживания шрифтов (hintfull)». На опеннете тоже обсуждали.

Кто-нибудь следил за дальнейшем развитием темы? Чем кончилось? Мониторы с 1920x1080 надо закапывать или?..

 

hobbit
()

Как собрать сторонний Kotlin-проект для Андроида

Форум — Development

Привет, ЛОР.

На гитхабе есть программа Simple-Contacts. Написана на Котлине. Инструкция по сборке отсутствует. Ну или слепой я её не нашёл.

Насколько я понимаю, для сборки нужны как минимум gradle и компилятор самого Kotlin. Что ещё, какие-то библиотеки? Какие телодвижения надо предпринять, чтобы получить из этого APK-файл? Как узнать диапазон поддерживаемых версий Андроида?

 , ,

hobbit
()

Импорт файлов mbox в Thunderbird

Форум — Desktop

Привет, ЛОР.

Вчера понадобилось прочитать файл mbox от Roundcube на локальной машине. Ну я беззаботно запустил Thunderbird, сейчас, думаю, загружу.

Ищу и не нахожу. Адресные книги можно, календари можно, чужие профили от того же Thunderbird можно, даже зазипованные. А наистандартнейший юниксовый мейлбокс – хренушки.

Минут 20 с этим воевал, потом решил таки загуглить. И даже результат гуглинга правильно трактовал не сразу. Оказывается, чтобы в заслуженном и в целом очень хорошем почтовом клиенте в 2024 году прочитать mailbox-файл, формату которого фиг знает сколько лет, надо УСТАНАВЛИВАТЬ РАСШИРЕНИЕ.

У меня нет слов.

Впрочем, после того, как я это осознал, всё остальное прошло как по маслу. Для тех, кто будет прыгать по тем же граблям – расширение называется ImportExportTools NG (для сильно старых версий Thunderbird то же самое, но без NG), есть в базе addons.thunderbird.net.

Тему создал для тех, кто будет мучиться так же, как я, наивно полагая, что это элементарная встроенная функция.

 , , ,

hobbit
()

Статическая сборка Qt5 и шрифты

Форум — Development

Привет, ЛОР.

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

Сборку веду из тарболла qt-everywhere-src-5.12.12.tar.xz под старенькой Ubuntu 18.04. Почему именно 5.12, а не 5.15 – в 5.15 поменялись ключи для включения libxcb в сборку (если её не включать, Qt при запуске прикладной программы будет искать xcb-плагин и разумеется, обломается), и новые ключи у меня пока не заработали.

Кроме очевидного build-essential, я доустановил (как раз для xcb) пакеты libx11-*, libxcb-*, libxkbcommon-dev и libxkbcommon-x11-dev, а также (на будущее, для OpenSSL) libssl-dev. Из конфига исключены QtWebEngine, QML и openGL (но QML и openGL я планирую вернуть потом).

Мой текущий configure для Qt:

QTDIR=/opt/Qt/5.12.12.st

sudo mkdir -p ${QTDIR}

./configure -opensource -confirm-license -platform linux-g++ -static -release \
 -skip qtwebengine -no-opengl \
 -qt-xcb -I /usr/include/xcb/ -L /usr/lib/x86_64-linux/gnu/ \
 -qt-zlib -qt-libpng -qt-libjpeg -openssl-linked -nomake examples -prefix ${QTDIR}

Далее понятно, make и sudo make install. Сборка прошла успешно. Далее собираю с этим Qt DoubleContact (пришлось немного пропатчить исходники, чтобы алгоритм прицепливания встроенного в Qt zlib-а работал). Полученный бинарник я вытаскиваю из виртуалки на хост (Manjaro KDE), запускаю. Открывается окно с табличками без единого символа. При этом видно, что логика программы работает, окна вызываются (если помнишь, куда тыкать).

В konsole ругань следующая:

QFontDatabase: Cannot find font directory /opt/Qt/5.12.12.st/lib/fonts.
Note that Qt no longer ships fonts. Deploy some (from https://dejavu-fonts.github.io/ for example) or switch to fontconfig.

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

Исходя из этого предположения, я поискал другие пути. В принципе, через QFontDatabase::addApplicationFont() и QApplication::setFont() можно добавить любой нужный шрифт и даже добавить его в ресурсы программы. Программа при этом начинает показывать строки нормально… если ограничиваться одним шрифтом. Но у меня, например, в программе есть ещё и кутешный диалог выбора шрифтов для таблиц, и он при таком решении показывает только один шрифт – именно тот, который я добавил.

Вопрос 2. Можно ли как-то заставить программу искать шрифты уже в той системе, на которой он запускается? В том же QFontDatabase я вижу только методы добавления шрифтов по одному, я так понимаю, работе QFontDialog это не сильно поможет.

Вопрос 3. Формулировку «switch to fontconfig» я не очень понял, fontconfig – это ведь библиотека? И что мне с ней делать?

Интересно, что со статической сборкой под винду этой проблемы нет. Правда, виндовые сборки, которые я раньше распространял, основаны на более ранних версиях Qt (4.8 и 5.10).

Обновление. Проблема решилась по наводке анонимуса. Я поставил пакеты libfreetype6-dev и libfontconfig1-dev и в ./configure дополнительно к указанному выше написал:

-fontconfig -feature-freetype -system-freetype FREETYPE_INCDIR=/usr/include/freetype2

После этого при переносе бинарника со сборочной виртуалки на хостовую систему программа запускается с отображением текста без плясок с QFontDatabase. Диалог шрифтов для таблицы в настройках также отображает все доступные шрифты.

Отмечаю тему решённой. Но если у кого есть рабочий комплект ключей к Qt 5.15 (особенно в части libxcb) – будет интересно почитать и скорее всего, не только мне.

 ,

hobbit
()

Чёрный экран по выходе из кед

Форум — Desktop

Привет, ЛОР.

Система Manjaro KDE, кеды шестые, sddm, обновляюсь регулярно. Видеокарта нвидия 1030, драйвер блоб, сеанс X11.

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

По описанию похоже на первый пункт отсюда, но у меня сама система при этом вполне работает, можно по Ctrl+Alt+F3 переключиться на консоль и перезапустить sddm через systemctl или просто перезагрузить операционку. Но хочется, чтобы при выходе из кед отображался экран sddm, как у людей. Тем более комп многопользовательский, жена и сын на нём тоже работают.

Пару дней назад обсуждали блокировку сайта нвидии для России, думаю, что это здесь не при чём, поскольку моя проблема началась раньше.

Куда копать?

Обновлено: Всем спасибо за советы, особенно @spal, @hargard. Судя по этому багрепорту, сломано восстановление сеансов (Session Restore), заявлено, что проблема решена в Плазме 6.2.0.

Временное решение для более ранних версий: для всех пользователей, которые запускают KDE на компьютере, нужно в настройках сессий (systemsettings / сессии или «Управление сеансами») поставить «Начинать с пустой сессии/сеанса».

 , , ,

hobbit
()

Пользователи Sylpheed, поделитесь, пожалуйста, файлом контактов

Форум — Desktop

Привет, ЛОР.

После недавнего обсуждения я решил добавить в DoubleContact поддержку CSV-файлов от Sylpheed и даже начал это делать. Только сейчас я в дороге, исходники взял, а контрольный файл от Sylpheed 3.7 нет. И Sylpheed ставить особо некуда, под рукой только древняя макось. Да и под макось предлагают сборку Sylpheed только 3.41, где CSV ещё не было. Мне сейчас проще всего этот вопрос отложить на несколько дней.

Но может, кто-нибудь придёт на помощь и сделает в Sylpheed CSV буквально на 3-4 контакта типа Иван Петров и John Doe? Желательно, чтоб хотя бы в одном контакте были заполнены все поля и хотя бы в одном – не менее 2 емейлов.

Поскольку CSV – текстовый файл, результат можнл выложить прямо в комментариях, оформив как код. Начинаться он, как я предполагаю, будет с заголовка, приведённого здесь. Если нет – это тоже интересно.

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

 , ,

hobbit
()

QSqlQueryModel, сортировка и фильтрация

Форум — Development

Привет, ЛОР.

Как целесообразнее прикручивать сортировку и фильтрацию к связке QTableView и QSqlQueryModel, если я собираюсь выводить информацию из таблиц SQLite и ориентировочное количество записей – от 40000 до 100000? Без сортировки на моём железе эта связка выводит 40 тыс. записей менее, чем за секунду, что меня вполне устраивает.

Справится ли с этим обычный QSortFilterProxyModel, вставленный между моделью и представлением, или он может «потонуть в данных» и целесообразно модифицировать SQL (колхозить в этом случае, конечно, придётся куда больше)? Или, может, для баз данных есть отдельное готовое решение? Можно, конечно, сказать «попробуй сам», но может, здесь есть люди с более богатым опытом? Вопросы быстродействия они ведь такие – на одной машине/системе может сработать по-одному, а на второй совсем по-другому, поэтому и хочется послушать форумчан, которые шишки, возможно, уже набивали.

Если руками вставлять допусловия в SQL, как сделать, чтобы работа была похожа на сортировку через прокси-модель, щелчками по заголовкам таблиц - это придётся колхозить самостоятельную обработку? Или есть готовое решение? Понятно, что можно отдельную формочку сделать, со списком критериев…

Кто-то на форуме, я смотрю, несколько лет назнад даже свои классы мастерил, правда, на вопросы отвечать не стал…

P.S. Если у кого-то по прочтении моего вопроса возникло дежавю, могу успокоить: это не дежавю. Точно такой же вопрос я задавал на prog.org.ru. И даже автор класса по ссылке там тоже когда-то отметился :))) с тем же результатом :)))

 , , ,

hobbit
()

SDDM запущен, но ничего не кажет (+ про nvidia, dkms и заголовочные файлы разных ядер)

Форум — Desktop

Привет, ЛОР.

Извиняюсь, если разметка поедет, я сейчас пишу из links и не могу проверить, как отправленное ОП будет выглядеть в графическом браузере. Впрочем, нет худа без добра, я наконец-то настроил шрифты и раскладку в /etc/vconsole.conf. :)

В общем, некоторое время назад у меня перестала грузиться система с любыми ядрами из линейки 6.*. Загрузка останавливается (ну по крайней мере, мне так казалось) со словами Finished TLP system startup/shutdown. Я отсиживался на стареньком ядро 5.4. Однако после последнего обновления оно таки сломалось и спамит сообщениями Failed to start Journal Service.

Решил чинить современное ядро (на данный момент это 6.2). Как оказалось, линукс-то у меня загрузился. По крайней мере, я могу нажатием Alt+F2 переключиться на соседнюю консоль, запускать mc и другие консольные программы. Стало быть, она просто графический сервер запустить не может.

В системе стоят 6-е кеды, запускались через sddm. Запускаю ps -A. SDDM висит в процессах. Запускаю sudo systemctl status sddm. Пишет active (running). Выгружаю SDDM, пишу руками по старинке startx. Отваливается с криками No screens found. Похоже на драйверопроблемы. Но с ядром 5.4 всё работало. Нвидия 1030, блоб.

Куда копать?

P.S. А что, Shift+PgUp в ядерной консоли таки починили? Вроде бы Линус это выкидывал в ядре 5.9 по соображениям безопасности…

 , ,

hobbit
()

МЦСТ раскрыл исходные коды компонентов Linux, системных библиотек и ПО для платформы «Эльбрус»

Новости — Hardware and Drivers
Группа Hardware and Drivers

Компания МЦСТ открыла веб-портал dev.mcst.ru для разработчиков ПО на платформе Эльбрус, где публикует исходные тексты и патчи.

На данный момент опубликованы:

  • исходный текст ядра Linux для архитектуры Эльбрус;
  • исходный текст библиотеки glibc для архитектуры Эльбрус;
  • набор патчей для оригинальных исходных текстов прикладных пакетов дистрибутива Эльбрус Линукс.

Также на портале доступны для скачивания учебные материалы и руководства для программистов, собраны ссылки на ресурсы и сообщества, посвященные тематике платформы Эльбрус. Через форму запроса можно подать заявку на получение удаленного доступа к серверам Эльбрус.

>>> Подробности

 , ,

hobbit
()

Приснилась программа для восстановления линуксового загрузчика из винды

Форум — Desktop

Привет, ЛОР.

Недавно я откопал старый ноутбук выпуска середины нулевых. Вполне работоспособный. Когда-то на нём стояли Windows XP и какой-то древний линукс. Потом винду то ли переустанавливали, то ли восстанавливали после какого-то её виндового катаклизма… короче, вы поняли. Линуксовый загрузчик погиб. Но раздел виден и даже вполне себе читается виндовым Ext2fsd.

Ну, думаю, сейчас займёмся прокачкой археологии. Сделал загрузочную флешку. Но к моему вящему удивлению, биос её не видит. При том, что на более современных компах она работает как загрузочная. Ноутбук я пока отложил, возможно, нарежу лайв-сиди на болванку. Вертушка на аппарате есть, вот насколько рабочая — надо проверять.

Но вот о чём я задумался. Наверное, было бы вполне реально написать для горе-дуалбутчиков виндовую программу, которая восстанавливает линуксовый загрузчик прямо из винды. Понятное дело, что ей нужны права админа и всё такое. Понятное дело, мой случай крайне специфический. Но я могу себе представить человека, который только-только осваивает линукс, и тут бац — винда взяла и подложила свинью. Мне кажется, такому человеку было бы куда проще скачать виндовое приложение, чем возиться с лайвами. По крайней мере, на первых порах.

Гуглинг показал, что у убунты давным-давно был некий Wubi, который позволял из винды аж вообще рабочий линукс поставить, правда, на общий с виндой раздел — но это всё же несколько другое.

Как считаете, была бы такая программа полезной?

 , ,

hobbit
()

А есть ли live-образ для проверки ноутбуков?

Форум — Linux-hardware

Привет, ЛОР.

Я тут задумался: а есть ли готовый liveCD/USB, чтобы, например, в магазине воткнуть флешку и проверить, насколько хорошо машинка дружит с линуксом?

Что, на мой взгляд, туда должно входить:

  • утилита, выводящая список оборудования (в компактном, но полном виде) - понятно, зачем;
  • аудиоплеер из коробки + пара мелодий к нему;
  • видеоплеер из коробки + пара роликов к нему;
  • тестилка 3D (наверно, традиционный glxgears вполне подойдёт… хотя есть мнение, что шестерёнки современные процессоры и программно хорошо качают, и для проверки, работает ли аппаратный openGL, нужно что-то посолиднее, но не настаиваю, самому интересно);
  • что-нибудь для проверки сети (ну тут, наверное, достаточно, чтобы NM карту распознал и ping сработал);
  • Upd: сборка должна тащить максимум драйверов в принципе поддерживаемого линуксом железа и грузить всё нужное по умолчанию, чтобы не вызывать, как написали в комментариях, смех показывающих на тебя пальцем продавцов.

То, что традиционно пихают в Live-дистрибутивы, те же менеджеры разделов диска — помешать не помешают, но обязательными не являются. Переразбивать диск в магазине, да ещё и до покупки, я не буду. А вот проверить, играет ли музыка и работает ли Wi-Fi — надо.

 , , ,

hobbit
()

Пользуетесь ли вы AppImage?

Голосования — Голосования

Опрос — в продолжение предыдущего и предыдущего перед предыдущим. Он проще, поскольку никакой особой инфраструктуры для запуска AppImage в современных дистрибутивах GNU/Linux не требуется, соответственно, доустанавливать/сносить тоже особо нечего. Мультивыбор добавлен, в основном, для тех, кто создаёт такие пакеты, поскольку, как выяснилось в комментариях, можно создавать и не пользоваться. А можно и пользоваться. :)

  1. не пользуюсь 183 (49%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. пользуюсь только для программ, у которых это единственный доступный мне формат распространения 103 (27%)

    ************************************************************************************************************************************************************************************

  3. пользуюсь только для программ, которых нет в репозитории дистрибутива либо в репозитории слишком старые версии 81 (22%)

    *********************************************************************************************************************************************

  4. пользуюсь регулярно 42 (11%)

    *************************************************************************

  5. я их создаю 20 (5%)

    **********************************

Всего голосов: 429, всего проголосовавших: 376

 , , ,

hobbit
()

Пользуетесь ли вы Flatpak?

Голосования — Голосования

Опрос — в продолжение предыдущего.

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

  1. не пользуюсь в дистрибутивах без предустановленного flatpak 139 (40%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. в дистрибутивах без предустановленного flatpak устанавливаю и пользуюсь 72 (21%)

    *********************************************************************************************************************************************************************

  3. пользуюсь только для программ, которых нет в репозитории дистрибутива 68 (19%)

    ************************************************************************************************************************************************************

  4. пользуюсь только для программ, у которых это единственный доступный мне формат распространения 60 (17%)

    ******************************************************************************************************************************************

  5. пользуюсь в дистрибутивах с предустановленным flatpak 55 (16%)

    ******************************************************************************************************************************

  6. не пользуюсь в дистрибутивах с предустановленным flatpak 55 (16%)

    ******************************************************************************************************************************

  7. не пользуюсь в дистрибутивах с предустановленным flatpak и удаляю его 46 (13%)

    *********************************************************************************************************

Всего голосов: 495, всего проголосовавших: 349

 , ,

hobbit
()

Taskwarrior 3.0.0

Новости — Open Source
Группа Open Source

25 марта 2024 года вышел долгожданный Taskwarrior 3.0.0.

Taskwarrior — продвинутый менеджер задач и планирования времени для командной строки (также доступны GUI-фронтэнды, библиотеки и дополнения).

( читать дальше... )

>>> Подробности (github)

 , , ,

hobbit
()

Ищу ПО управления и напоминания для ПЕРСОНАЛЬНЫХ задач

Форум — Desktop

Привет, ЛОР.

Хочу найти программу управления персональными задачами и делами (не обязательно по работе). Чтобы отслеживалась история состояния задачи, чтобы задачи можно было объединить в проекты и подпроекты (например «Мои публикации» -> «Статьи для Петрова», задача «до 15 апреля отправить авторский договор в редакцию»), чтобы были напоминалки. Желательно на основе файла (файлов), а не сайта с БД, даже если он self-hosted (менеджер нужен и там, где интернета нет вообще).

Наверное, я совсем разучился гуглить, но попытка погуглить «opensource персональный менеджер задач» всё равно подсовывает мне Redmine и прочие решения не для людей, но для работодателей команд.

Линукс здесь при том, что разумеется, нужен вменяемый формат файлов, а также клиенты как минимум под десктопный линукс и андроид. Под другие системы — приветствуется, опционально. В самом крайнем случае сойдёт и Android-only решение при условии опенсорсности и читаемого формата файла, попробую десктопный клиент написать сам (если альтернативных решений не найдётся).

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

Есть такое, или придётся как в прошлый раз?

P.S. Многопользовательская работа не нужна.

 , ,

hobbit
()

Удаление deb-пакетов с некорректными pre- и post-скриптами

Статьи — Администрирование

Иногда возникает ситуация (особенно на машине разработчика/мейнтейнера), когда deb-пакет нельзя ни корректно доустановить, ни удалить, поскольку сценарий prerm (postrm, preinst, postinst) содержит ошибки. Ключи в apt и dpkg, посвящённые сломанным пакетам (--force-remove-*, -f) тоже могут не помочь, поскольку в первую очередь разруливают битые зависимости между пакетами.

В этом случае эффективным может оказаться «лечение» на низком уровне. Наиболее радикальный метод предлагался на опеннете: просто зайти в /var/lib/dpkg/info и удалить все файлы package-name.*, после чего удалить упоминания о пакете из /var/lib/dpkg/status (подробности по ссылке). Однако в этом случае удалится лишь метаинформация о пакете, а вот хвосты в /usr, /etc и др. останутся, как отмечали в комментариях.

Мне помог похожий, но чуть более тонкий способ. Надо зафиксировать, какая именно ошибка возникает в сценарии и в каком именно сценарии (для корректного удаления в первую очередь нас интересуют .prerm и .postrm).

Далее мы заходим в /var/lib/dpkg/info и просто исправляем package-name.prerm или package-name.postrm так, чтобы он отработал корректно. Например, если в .prerm удалялся несуществующий каталог без проверки на его существование, стираем или комментируем команду удаления.

После этого, как обычно, сносим пакет средствами dpkg -r.

Перемещено hobbit из development

 , ,

hobbit
()

ARDOR GAMING NEO G16-R5ND312

Форум — Linux-hardware

Привет, ЛОР.

Вот такой симпатичный приборчик продаётся в DNS. Лично меня привлекла клавиатура и относительно неплохие характеристики.

Кто-нибудь ковырял это или похожее чудо под линуксом либо может дать экспертную оценку по опубликованным данным? Интересует, в частности, следующее:

Bluetooth 5.2, WI-FI 6E (802.11ax)
Подсветка клавиш – RGB
Поддержка TPM – есть (само по себе оно мне нафиг не упёрлось, но не помешает ли оно поставить линукс/*BSD)

 

hobbit
()

Доля ПК с Linux превысила рекордные 4%

Новости — Linux General
Группа Linux General

По данным сервиса Statcounter, отслеживающего рыночную долю веб-браузеров, операционных систем, поисковых движков и др., доля ОС Linux на ПК достигла рекордных значений, превысив 4%. Хотя на первый взгляд это немного, на деле речь идёт о десятках миллионов пользователей по всему миру. При этом сервис отдельно учитывает данные ChromeOS, тоже построенной на Linux.

Можно также отметить, что согласно статистике сайта w3schools.com, доля линукс-клиентов уже довольно давно колеблется в районе 4%, однако следует учитывать специфику этого ресурса, основной аудиторией которого являются Web-разработчики.

Новость на neowin.net (англ.)

>>> Подробности на iXBT Live

 , ,

hobbit
()

Чем пленяет Chrome

Форум — Talks

Привет, ЛОР.

К фактической монополии Хрома и Хромоподобных, разумеется, много вопросов (хотя эта монополия далеко не такая тотальная, как была когда-то с IE6, например). Но есть и вещи, которые вызывают к нему очень сильную симпатию.

Есть комп, за которым работает сильно больше одного человека. На нём стоит Chrome. И как-то повадился он всплывающими окнами бомбить. Поскольку бормоталось там что-то про капчу и «я-не-робот», обратили внимание на это далеко не сразу. Потом позвали меня. Пригляделся — стало понятно, что это уведомления от мусорного сайта (re-captha-version-3-27.fun, если кому интересно). Название сайта, конечно, мелким шрифтом.

Поскольку Хром у меня не основной браузер, я полез в поиск по настройкам. Не успел набрать «Уве…», как вылезла подсказка, что с одного из сайтов приходит аномально высокое количество уведомлений и предложение его проверить. После чего я заблокировал уведомления двумя кнопками.

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

Да, с точки зрения программиста тут банальщина. Но речь и не о программировании, а об организации UI. Очень чуткой к пользователю.

P.S. Если что, это не отменяет того факта, что гамбургер вместо меню меню жутко бесит.

Перемещено hobbit из desktop

 , , ,

hobbit
()

Два метода, отличаются вроде бы только константностью

Форум — Development

Привет, ЛОР.

В заголовочных файлах OpenCV нашёл занятное:

inline
uchar* Mat::ptr(int i0, int i1)
{
    CV_DbgAssert(dims >= 2);
    CV_DbgAssert(data);
    CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]);
    CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]);
    return data + i0 * step.p[0] + i1 * step.p[1];
}

inline
const uchar* Mat::ptr(int i0, int i1) const
{
    CV_DbgAssert(dims >= 2);
    CV_DbgAssert(data);
    CV_DbgAssert((unsigned)i0 < (unsigned)size.p[0]);
    CV_DbgAssert((unsigned)i1 < (unsigned)size.p[1]);
    return data + i0 * step.p[0] + i1 * step.p[1];
}

Вопрос: а как компилятор понимает, к какому из этих методов обращение? У них же номенклатура параметров идентична, разница только в const.

У меня, когда я попытался присвоить результат функции неконстантному указателю, компилятор ругнулся, мол, invalid conversion from ‘const uchar*’ {aka ‘const unsigned char*’} to ‘uchar*’ {aka ‘unsigned char*’}. А вот константному присвоилось нормально.

 ,

hobbit
()

RSS подписка на новые темы