LINUX.ORG.RU

Сообщения AntonI

 

Как создать в константной памяти CUDA объект с нетривиальным конструктором?

Форум — Development

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

При создании в константной памяти карты эти конструкторы можно не вызывать - все равно объект создается на CPU и потом копируется на карту байт в байт.

Единственное что в голову приходит - выделить на карте константный массив char нужного размера, скопировать в него объект с хоста и потом на карте каждый раз кастовать указатель. Выглядит костыльно, м.б. есть какой то более Ъ вариант?

 

AntonI
()

Как локально на хосте создать такое окно, в котором бы а-ля рабочий стол паслось несколько окон?

Форум — General

Когда в Big Blue Button общаешься, можно показывать или одно окно или весь рабочий стол. Ни то ни то неудобно, хочется показывать несколько выбранных окон, для этого их надо как то разместить (сгруппировать) в одном суперокне. Причем в этом окне должен быть редактор и терминал, в котором можно было бы запускать приложения которые должны создавать свои окна в этом суперокне.

Мне посоветовали Xephyr, это почти то что надо:

Xephyr -ac -host-cursor -query localhost -screen 1920x1080 :1 &
DISPLAY=:1 ssh -X localhost emacs

вот такая штука открывает отдельную форточку, в ней emacs, в emacs можно открыть терминал, из терминала можно что то запускать. Беда в том, что переключаться между окнами внутри Xephyr и вообще что либо с ними делать (таскать, изменять размер) не получается. Насколько я понимаю нужен оконный менеджер.

Я в этих вопросах почти не разбираюсь. Можно как то c минимальными телодвижениями прикрутить туда еще и оконный менеджер? Гуглятся только решения с докером, с ними не хочецца связываться;-( Хорошо было бы что бы это все работало в рамках текущего хоста и текущей ОС (mint 20.2 xfce).


Вдруг кому понадобиться, решение такое

(Xephyr -ac -host-cursor -screen 1340x760 :1 & DISPLAY=:1 openbox)

размеры подобраны для окна bbb в FullHD разрешении, за высоту я точно не уверен - мб 730.

Для захвата/отдачи курсора в Xephyr Ctrl-Shift, приложения запускаются по правой кнопке мыши из меню.

 , ,

AntonI
()

Куда катится индустрия этого вашего программиирования?!

Форум — Talks

Преамбула - работаю я обычно с ноута, дома раб место с док станцией, 4К монитором и пр свистелками. Но понадобился мне тут для разработки одной фиговины домашний комп с картой от NVidia. Собрал комп, купил KVM сплиттер… Сплиттер оказался глючный, видео по нему идет а USB почти нет. В процессе плясок с бубном (увидел что мышь и клава отвалились, решил что ноут завис и нажал на док станции кнопку выключения) у ноута на уровне ОС отвалились мышь и клава. Вообще. Наглухо. Выглядит как чудо… После тщетных попыток реанимировать это все пришлось переставлять ОС. До того стоял linux mint 19 Xfce.

Теперь будет амбула. Сразу замечу - я не программист, не сисадмин, я просто физик которому иногда приходится писать под линукс всякие числодробилки. Я очень плохо знаю как надо админить все эти линуксы, у меня голова совсем другим забита. Понятно что /home у меня лежит отдельно, ОС я переставляют раз в неск лет и чем меньше я потрачу времени на настройку новой ОС тем лучше. Я просто хочу что бы оно работало из коробки, мне кажется это нормальным. Конец года, мне не до возни с ОС, мне хвосты подбирать надо. Беру linux mint 20.2 Xfce.

  1. Установка под uefi не работает. Вообще. Никак. После красивых презентаций оно пишет что не может записать grub на диск и это фатальная ошибка.

  2. В легаси моде оно встает, но не пускает в графическую систему. В tty войти могу. Мне присылают ссылку - 18 дистре был баг с коротким паролем, инсталлятор его делал (местами) более секьюрным но не говорил каким именно. Лечится только переустановкой. Переставляюсь с длинным паролем - то же самое. В три часа ночи я вспоминаю что был такой файлик ~/.Xauthority — видать когда ОС вставала на старые настройки че то пошло не так. Сношу ~/.Xauthority - бинго! Работает.

  3. Новый firefox при запуске пишет - создай новый профиль, а то ты сидел под старой версией, сейчас потеряешь все закладки и сохраненные пароли. Я создаю новый профиль и теряю все закладки и пароли. Ладно, фигня.

  4. В новой версии из дистра убрали кучу нужных мне пакетов для python2. Ладно, беру pip и ставлю локально.

  5. Вишенка на торте. Собираю в новой версии pdflatex-ом документ с которым работал на старой версии - часть рисунков пропала, вместо них стоят одинокие буковки «ы,ы» в нижнем правом углу. Фигею, собираю на другой машине - все ОК. Рисунки в pdf.

У меня возникает закономерный вопрос - ребята которые это все пилят, вам не кажется что вы очень неправы? Я не знаю что и как вы делаете, но я вижу что «самый популярный» (вроде как) последний LTS дистр превратился в черти че, сплошной глюкодром прямо вот начиная с инсталлятора. Где отваливаются вещи которые вообще не должны отваливаться. Если с глюками при установке еще как то можно смириться (нет), то глюки pdflatex-а не лезут ни в какие ворота…

 ,

AntonI
()

В mint20.02 не встает grub

Форум — Linux-install

Сабж. Установка идет себе, потом говорит - не могу поставить grub и отваливается.

Ноут с uefi, до этого минт19 вставал без проблем. Раздел под uefi выделил. Граб пытался ставить и на сам ssd, и в отдельный раздел /boot 300Мб ехт4

 , ,

AntonI
()

После попытки подключения KVM у ноута отвалились мышь и клава.

Форум — Desktop

Трындец какой то. Перезагрузка не помогает, внешние мышь с клавой тоже не видит. С live-CD грузился - все работает.

Linux mint 19. Я могу на него зайти в терминале. Переставлять систему сейчас ну совсем не с руки…

 

AntonI
()

А есть ли штатная возможность добавить своих метаданных в заголовок .npy файла?

Форум — Development

В заголовке .npy файла лежит словарь вида

{'descr': '<f8', 'fortran_order': False, 'shape': (15, 15), }

раз там есть словарь, наверное я могу туда положить еще че то от себя? Тем более что аж стандарт v2.0 придумали, что бы можно было заголовки длиннее чем 2^16 делать (насколько я понял) - такими тремя записями 2^16 ИМНО фиг забьешь…

Попытки вручную че то туда доложить успехом не увенчались, штатный ридер ломается

ValueError: Header does not contain the correct keys: ['descr', 'fortran_order', 'q', 'shape']

Да и интерфейса стандартного для того что бы что то от себя в этот словарь положить/получить я не вижу.

Это вообще возможно?

 , ,

AntonI
()

OpenGL без привязки к окну?

Форум — Development

Сабж. Нужно нарисовать картинку (по пикселям), средствами OpenGL, но не привязываясь к окну. То есть рисовать надо в память и потом эту память отдать (записать в файл скажем).

Не привязываясь к окну - потому что X-сервера может не быть (зашли по ssh без -X).

Это вообще возможно? Все что нагуглилось, вроде вот такого,

http://renderingpipeline.com/2012/05/windowless-opengl/

все таки подразумевает что какой то X-сервер есть, насколько я понял, просто окно не отображается.

PS в этих вопросах я нуб, сорри;-(

 , , ,

AntonI
()

Как все таки Ъ понять что fseek вылетел за пределы файла открытого на чтение?

Форум — Development

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

Как это сделать Ъ? Попытаться прочитать маленький кусочек? Заранее определить размер файла через fstat? Какие еще варианты?

 

AntonI
()

Внешний бокс для видеокарты - поделитесь опытом?

Форум — Talks

Понятно что штука нишевая, но мне бы как раз зашла.

Появились они вроде недавно, в РФ сейчас таких четыре модели

https://www.razer.ru/news/198 Razer Core X

https://virtualnyeochki.ru/aksessuary/vneshnij-boks-dlya-videokartyi-mantiz-mz-03-saturn-pro-ii-space-gray Mantiz MZ-03 Saturn Pro II Space Gray

https://shop.lenovo.ru/product/82CA000CRU/

Ну и монстр GIGABYTE AORUS RTX 3080 GAMING BOX (стоит как самолет, мне неактуально).

Как оно вообще работает под linux, расскажите, кто пользовался? Понятно что речь идет о работе с ноутом;-)

 

AntonI
()

«Новаторы» --- истории о людях, создавших компьютер, основанные на реальных событиях (театр Маяковского)

Форум — Talks

https://www.mayakovsky.ru/m/performance/novatory/

Мне понравилось. Это один из лучших театров Москвы, труппа очень сильная. Получилась такая серия новелл, от Ады Лавлейс до Линуса и Гейтса. Конечно по терминологии они немного лажают, и то как показывают озарения и творческие порывы может вызывать вопросы - но это вообще тема очень сложная для постановки.

Здорово что такие спектакли ставят, здорово что это новая вещь а не перепев Кармен где она пляшет на мусорном баке в Гарлеме. Актеры даже по внешности подобраны замечательно, очень похожи на прототипов, я уж не знаю как они это делают - грим что ли такой…

И получилось здорово, прямо окунаешься в атмосферу той эпохи. Надеюсь со временем выйдет телепостановка, но поскольку это премьера - то боюсь очень нескоро.

 

AntonI
()

Какова точность нынешних прогнозов погоды?

Форум — Science & Engineering

Особенно интересна точность локальных прогнозов в горах, например на Эльбрусе. Как по времени так и по пространству.

Скажем давеча (23-го сентября) группа альпинистов пошла на Эльбрус в рамках коммерческого тура. По прогнозу в 9.00 должно было быть солнечно + сильный ветер (60км/ч), в 12.00 легкая облачность + ветер (75км/ч), в 15.00 снегопад и ветер 85 км/ч (что уже полный трындец в тех условиях). Они надеялись успеть до непогоды, но пурга началось несколько раньше обещанного (в 10 с небольшим), как результат 5 трупов.

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

Cast @yvv

 ,

AntonI
()

Реализация метода шаблонного класса зависящая от того перегужена или нет одна из операций

Форум — Development

Сабж

#include <iostream>

template <typename T> struct A{
	T x;

	T f(double y) const { return x*y; }

	// альтерантивная реализация, если T*double не определен
	// T f(double y) const { return x; } 
};

struct B{ int z; };

int main(){
	A<double> a;  std::cout<<a.f(1.)<<'\n';
	A<B> b;       std::cout<<b.f(1.)<<'\n';
}

как включать ту или иную реализацию A::f в зависимости от того есть или нету операции T*double ?

 ,

AntonI
()

кроссплатформенное клиент-серверное приложение поверх ssh?

Форум — Development

Необходимо малой кровью сделать клиент-серверное приложение, немного нестандартной (наверное) архитектуры:

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

  2. Вход должен осуществляться по ssh с настроенным открытым ключем, что бы не возиться с вопросами безопасности. До сих пор у меня клиент с сервером тупо общались через stdin/out, это было не очень удобно отлаживать но зато очень просто делать, но тут возникло новое требование:

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

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

Пока что единственная мысля - сделать все том же духе, но как то разобраться с PuTTY что бы и на винде поднимать коннект через popen(…)

 , , ,

AntonI
()

Водонепроницаемый mp3 плеер с клипсой?

Форум — Talks

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

На вороте - потому что провод под футболкой в карман штанов бесит. При этом одно ухо будет свободным, им надо все таки слушать что вокруг.

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

Требования к девайсу:

  1. небольшой экран, навигация и проигрывание по папкам.

  2. желательно механические кнопки управления, сенсорный экран под дождем и в перчатках глючит.

  3. водронепроницаемость

  4. клипса и малые размер/вес

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

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

 ,

AntonI
()

Внешнее автономное питание для Go Pro hero 8 black?

Форум — Science & Engineering

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

В этом году впервые решил попробовать гоупрошку вместо беззеркалки - гоупрошка легче, встроенная водозащита (в том году залило нафик объектив несмотря на все ухищрения), ну и была надежда что она меньше жрет. На обычную камеру уходило 20Ah/сутки. Судя по роликам 8я гоупрошка нормально снимает тайм-лэпс ночью на природе.

Начал делать тесты на балконе. Режим - выдержка авто, интервал 15 секунд, макс iso 100 (закладываюсь на то что в горах гораздо темнее чем в городе), выходной формат фото. Дальше начинаются чудеса.

На встроенном аккуме (1.2Ah) ночью она снимает чуть меньше двух часов. Будем это рассматривать как референсное значение.

Если снаружи (через usb-C который для зарядки и всего) подключить повербанк на 10Ah умеющий выдавать 2A, то повербанк улетает чуть быстрее чем за 5 часов, то есть расход те самые 2A. Камера при этом греется аццки. Судя по всему она пытается при этом заряжать встроенный аккум, хотя она не умеет одновременно снимать и заряжать аккум на внешнем питании, то есть аккум остаестя как есть а за счет внешнего питания идет только съемка. Если встроенный аккум вынуть то ситуация не меняется.

Если подключить повербанк на 10Ah НЕ умеющий выдавать 2A, то со встроенным аккумом она сажает встроенный аккум часов за 6…8 (повербанка при этом разряжается на половину…четверть) и в печали вырубается. Если встроенный аккум вынуть - с 10Ah она живет часов 16 (примерно), что уже неплохо.

Ее поведение с новыми повербанками которые умеют 2A меня конечно удивляет мягко говоря. Прошивка новая. Дальше непонятно что именно делать:

  1. набрать повербанок не умеющих давать 2A и ходить с ними. Минусы:
  • нужна специальная дверца которая обеспечивает включение внешнее питание (они есть, но их не так просто найти), при этом герметичность все равно теряется и придется что то мудрить.
  • немного не стабильно работает (пару раз спонтанно выключалась), м.б. контакт отходит
  • расход все таки мне кажется великоват, двойное преобразование - хотя по тестам и не скажешь.
  1. прицепить питание на место встроенного аккума. Если просверлить дверцу и чуть поморочиться с термоклеем то даже герметичность останется на уровне. Но дальше вопрос что именно туда давать (родной аккум выдает 3.7V):
  • 5V от повербанки - мне кажется вольтаж высоковат?
  • разобрать повербанку и сделать вывод напрямую на 3.7V - жалко повербанку, как быть с переразрядом?
  • набрать элементов 18650 - их надо покупать много + зарядка для них + контейнер для них.

Солнечная батарея у меня есть но брать не планирую - с ней гемор все время (развернуть на солнце, закрепить на палатку/рюкзак, следить), по весу она больше чем повербанка на 10Ah, в любом случае надо брать две банки - а трех банок мне вроде на 5 дней даже по первому варианту должно хватать.

Может кто то что то посоветует?

 ,

AntonI
()

Указатель на шаблонную функцию-член класса как параметр шаблона?

Форум — Development

Есть некий класс A, у него есть метод call который должен вызывать у класса B некоторый метод foo, bar или еще какой то:

class A{
    template<typename C, ... func ... > void call(C& c, ...){
    // длинная свитч-портянка в ней определеяется int I и
         c->func<I>(...);
    }
};
class B{
   template <int I> void foo(...){}
   template <int I> void bar(...){}
};

использоваться должно как то так

A a;
a.call<... &B::foo ...>(b);
...
a.call<... &B::bar ...>(b);

типы аргументов у foo и bar разные.

Общий смысл - не дублировать портянку в A::call. Чо то пока не выходит ни так ни эдак;-(

 , ,

AntonI
()

Научная визуализация - масштабируемые графики типографского качества?

Форум — Science & Engineering

Как вы знаете, учОные пишут статьи. Как правило получаются какие то данные, на основе этих данных делаются картинки а дальше эти картинки вставляются в статьи, причем один и та же картинка может быть вставлена в несколько разных статей (и презентаций). Дальше будет много букв, но тема сложная, куда деваться;-(

Картинка обычно устроена следующим образом:

  4 +-------------+  +-+ 4
  3 |             |  |P| 3
Y 2 |   графики   |  |A| 2 Z 
  1 |             |  |L| 1 
  0 +-------------+  +-+ 0 
    0  1  2  3  4  
           X

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

Дальше начинаются проблемы. Когда картинка вставляется в статью, она должна удовлетворять двум требованиям - шрифтовке и выравниванию.

Шрифтовка это типографское требование, шрифт на картинке должен совпадать со шрифтом в тексте но быть на кегль меньше. Естественно формулы/математические обозначения в метках на осях должны совпадать с текстом, быть красивыми и пр. В журналах как правило требования к размеру шрифту не очень жесткие, но шрифт должен быть визуально приемлемым - не слишком большим и не слишком маленьким. Самая печалька, что на графике тоже могут быть надписи (легенда, кривая какого цвета что значит), и они не должны пересекаться кривыми.

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

А дальше начинаются проблемы - в тот момент когда делается картинка достоверно неизвестны ни макет полосы набора, ни шрифт ни то как и с какими картинками эта картинка будет выравниваться.

Поддержку LaTeX-а и правильную шрифтовку умеет делать например gnuplot в режиме epslatex - зарамочное оформление сбрасывается в .tex файл, график в .eps файл. Главный минус такого решения - если картинку начать масштабировать (это сложно, там размеры прибиты гвоздями наглухо, но гипотетически возможно) - то численные подписи к осям могут начать налезать друг на друга. Можно эту конструкцию сразу скопмилять в один .pdf (именно так я сейчас и делаю), но тогла при масштабировании поплывет шрифтовка, да и выравнивание превратится в лютый геморрой (в сложном случае) - понятно что размеры графика в центре при этом теряются. Подписи к оси X / палитру не отключишь.

Хочется некоторый формат для научной графики, отвечающий следующим требованиям:

  1. В файл сохраняются график, палитра (например в .png) + зарамочное оформление в формате (пределы по оси, метка к оси). Понятно что должна быть смотрелка для такого формата на экране.

  2. Есть утилита которая умеет из этого сделать например .png заданного размера с заданным шрифтом, чиселки вдоль осей она расставляет сама так что чиселки не налезают друг на друга. То же самое с подписями на графике.

  3. Та уже утилита умеет сразу сделать выравненную пачку картинок которые тупо вставляются в LaTeX таблицу.

  4. В идеале утилита должна дергаться из теха просто при указании каких то макросов в таблице или при вставке отдельных картинок.

Я такой штуки не знаю, но я ее сильно хочу и наверное готов сделать. Но может что то уже есть готовое?

@Crocodoom, @thunar, @Evgueni


UPD: сухой остаток после раздумий и обсуждения такой.

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

  1. все что относится к картинке хранится в отдельной директории/tar/tar.gz/zip.

  2. система координат связана с графиком, все меряется в долях графика, (0,0) - нижний левы угол, (1,1) - верхний правый.

  3. текстовый файл axes описывает оси. Каждая ось это одна строка,

x0 y0 x1 y1 min max [logscale] подпись-к-оси

первые четыре числа координаты начала и конца оси на графики, дальше пределы, опционально логарифмический масштаб. Во всех подписях поддерживается LaTeX

  1. текстовый файл paletter задает палитру, в первой строчке
min max [logscale] подпись-к-палитре

во второй строчке сама палитра (цвета через пробел)

  1. изображение лежит в файле image.ppm или любом разумном графическом формате

  2. линии (кривые) лежат в файлах с имя.curve, каждая кривая в своем файле, первая строка #ключ-кривой, дальше в два столбца данные. Пустая строка означает разрыв в линии. Можно сохранять линии в бинарном формате.

  3. можно добавлять векторные поля и всяко разно.

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

 , ,

AntonI
()

Рисование больших растровых картинок в Qt и быстрая перерисовка окна?

Форум — Development

Я делаю приложение для научной визуализации на PyQt5. PyQt (и Qt) я толком не знаю, осваиваю на ходу.

Окошко приложения выглядит так - слева элементы управления, остальную часть окна занимает собственно картинка, вокруг нее всякое зарамочное оформление (чиселки, метки к осям и пр). Картинка занимает большую часть окна. Картинка генерится как растр в недрах C++, это относительно дорогая операция. Поверх всего этого надо динамически (вместе с движением мыши) отображать некоторую информацию - выводить координаты точки куда указывает курсор, какие то линии рисовать привязанные к курсору, что то подсвечивать и пр.

Таким образом есть три варианта перерисовки:

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

  2. самая сложная - при нажатии на элемент управления перерисовываем все, включая картинку.

  3. промежуточная по сложности, при изменении размера окна - пока размер меняется зарамочное оформление перерисовываем, картинку масштабируем. Когда изменение размера окна закончено, вызываем перерисовку 2.

Пока что в голову пришло вот такое - картинка возвращается из C++ как буфер. Зарамочное оформление (и картинка) рисуются через QPainter на QPixmap, это перерисовка 2. В перерисовке 1 выводится каждый раз этот QPixmap и поверх него набрасывается то что связано с мышью.

Можно ли это как то сделать более Ъ? Мне скажем не нравится то, что приходится много раз делать копии самой большой части изображения. Я бы из C++ рисовал скажем сразу в память QPixmap, да фиг к ней похоже достучишься…

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

 , ,

AntonI
()

PyQt5 - накидать в область окна картинок, линий, надписей и схоронить это все в .png?

Форум — Development

В дцатый раз в первый класс;-(

Осваиваю тут новый (для себя) PyQt5. Нужно в области форточки навставлять картинок (генеряться на С++ в памяти), линий и текста, и в итоге сохранить все это в файл, лучше в png.

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

  1. в каком виджете это все делать? Пока что я в дизайнере влепил на окошко QGraphicsView и делаю для него QGraphicsScene. Хотелось бы какого аналога Canvas из родного Tkinter. Это оно?

  2. Мне нужно что бы виджет на котором я рисую масштабировался вместе с окном, при этом у меня слева от виджета гвоздями прибиты всякие элементы управления. Это можно как то сделать в дизайнере (завернуть его в какой то layot) или надо в коде колдунствовать? Я уже задолбался экспериментировать;-(

  3. Чего я там пока вообще не вижу - как все нарисованное сохранить в png, остальные мои хотелки в том или ином виде есть. Элементы управления сохранять не надо;-)

  4. Текст рисуется через QGraphicsScene.addText который возвращает QGraphicsTextItem? Как этот текст выровнять по правому краю например?! В нормальных фреймворках была такая опция прям при вставке текста, тут гуглится какая то содомия на пять строк с курсором и форматом. Проще никак?

  5. Где бы вообще про такое рисование почитать, желательно по русски? ;-(

UPD: Гугловские примеры говорят что это делается через QImage по которому рисует QPainter. Насколько я это вообще понял…

 , , ,

AntonI
()

ломается цепочка вызовов параметризованных методов

Форум — Development

вот такой простой пример

struct Accessor{
    template <typename A> void plot(A &a) const { 
        a.plot_impl<0>(*this); 
    }
};

struct XXX{
    template <int I> void plot_impl(const Accessor&){}
    void plot(const Accessor &acc){ acc.plot(*this); }
};

при сборке вылетает ошибка

$ g++ -std=c++11 -c test-accessor.cpp
test-accessor.cpp: In instantiation of ‘void Accessor::plot(A&) const [with A = XXX]’:
test-accessor.cpp:9:48:   required from here
test-accessor.cpp:3:14: error: invalid operands of types ‘<unresolved overloaded function type>’ and ‘int’ to binary ‘operator<’
   a.plot_impl<0>(*this);
   ~~~~~~~~~~~^~

gcc 7.5.0

ЧЯНТД? Почему он не видит что plot_impl параметризована?

@monk

 ,

AntonI
()

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