Как вы рисуете инсульт в Gimp с Python-fu?

Я использую Python-fu gimp.pdb.gimp_paintbrush_default(layer, 2, [10,10, 20,20]), но независимо от того, сколько штрихов я говорю, чтобы рисовать, он рисует только первый (x,y) (в данном случае (10,10)). Ожидается ли другой формат? Документация для функции не относится к плагину Python и просто говорит, что третий параметр ожидает переменную типа FLOATARRAY. Я предполагаю, что версия Python использует здесь список, но, похоже, он не ожидает каких-либо значений после первых двух. Как я могу заставить это нарисовать больше чем одну контрольную точку?

1 ответ

Решение

Второй передаваемый параметр - в этом случае "2" указывает GIMP длину списка в следующем параметре - хотя при кодировании в Python мы используем, чтобы у вызываемой функции не возникало проблем с поиском длины списка эти вызовы в сценариях GIMP Python являются отображением 1:1 в GIMP API для нескольких других языков и написаны на C.

В C нет способа узнать длину переданного массива, если только он не передан явно, поэтому существует потребность в этом параметре.

Попробуйте сделать это вместо этого:

points =  [10,10, 20,20]
pdb.gimp_paintbrush_default(layer, len(points), points)
Другие вопросы по тегам