From 1c5ebd8c41727d61e4d5caded2e06ddb1ecd0e1d Mon Sep 17 00:00:00 2001 From: Igor Pashev Date: Thu, 10 Nov 2022 15:32:09 +0200 Subject: Update for 2022 --- Makefile | 14 +++----- README | 19 ++++++----- README.ru | 111 +++++++++++++++++++++----------------------------------------- 3 files changed, 51 insertions(+), 93 deletions(-) diff --git a/Makefile b/Makefile index 0b615b9..a092562 100644 --- a/Makefile +++ b/Makefile @@ -4,16 +4,10 @@ GIMPTOOL = gimptool-2.0 CC = gcc LD = gcc CFLAGS = $(shell $(GIMPTOOL) --cflags) \ - -O2 -ansi -pedantic -Wall -Wextra -Wno-attributes \ - -Wno-unused-parameter \ - #-save-temps -g + -O2 -Wall -Wextra -Wno-attributes \ + -Wno-unused-parameter -LDFLAGS = $(shell $(GIMPTOOL) --libs) - -INDENT_OPT = -bap -bad -bbb -bl -bli0 -bls \ - -c2 -cli2 -cdb -sc -ncs -npcs \ - -nhnl -i4 -l80 -saf -sai -saw \ - -nprs -sob -nut -nbc -ppi2 -nbbo +LIBS = $(shell $(GIMPTOOL) --libs) SRC = $(wildcard *.c) HDR = $(wildcard *.h) @@ -44,7 +38,7 @@ clean: rm -f *.o *.i *.s $(MAIN) $(MAIN): $(OBJ) - $(LD) $(LDFLAGS) $(OBJ) -o $@ + $(LD) $(OBJ) $(LIBS) -o $@ %.o: %.c $(HDR) Makefile $(CC) -c $(CFLAGS) $< -o $@ diff --git a/README b/README index 2c7c779..91678ca 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -This plugin was tested with Gimp 2.6, GCC 4.2.4 and GTK+ 2.12. +This plugin was tested with Gimp 2.10, GCC 12 and GTK+ 2.24. Older versions may work too, but for example you have to remove some compiler options. @@ -9,7 +9,7 @@ Main file is "plugin-img.c". The simplest way to install is just type "make install". It will build the plugin and copy it -to user's Gimp directory (~/.gimp-2.6/plug-ins/) +to user's Gimp directory (~/.config/GIMP/2.10/plug-ins/) See Makefile for details. @@ -17,12 +17,13 @@ See Makefile for details. Example: -make install -gcc -c -I/usr/include/gimp-2.0 -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -O2 -ansi -pedantic -Wall -Wextra -Wno-attributes -Wno-unused-parameter -save-temps -g img-load.c -o img-load.o -gcc -c -I/usr/include/gimp-2.0 -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -O2 -ansi -pedantic -Wall -Wextra -Wno-attributes -Wno-unused-parameter -save-temps -g img-save-dialog.c -o img-save-dialog.o -gcc -c -I/usr/include/gimp-2.0 -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -O2 -ansi -pedantic -Wall -Wextra -Wno-attributes -Wno-unused-parameter -save-temps -g img-save.c -o img-save.o -gcc -c -I/usr/include/gimp-2.0 -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -O2 -ansi -pedantic -Wall -Wextra -Wno-attributes -Wno-unused-parameter -save-temps -g plugin-img.c -o plugin-img.o -gcc -lgimpui-2.0 -lgimpwidgets-2.0 -lgimpmodule-2.0 -lgimp-2.0 -lgimpmath-2.0 -lgimpconfig-2.0 -lgimpcolor-2.0 -lgimpbase-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 img-load.o img-save-dialog.o img-save.o plugin-img.o -o plugin-img +$ make install +gcc -c -pthread -I/usr/include/gimp-2.0 -I/usr/include/gegl-0.4 -I/usr/include/gio-unix-2.0 -I/usr/include/json-glib-1.0 -I/usr/include/babl-0.1 -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -O2 -Wall -Wextra -Wno-attributes -Wno-unused-parameter img-load.c -o img-load.o +gcc -c -pthread -I/usr/include/gimp-2.0 -I/usr/include/gegl-0.4 -I/usr/include/gio-unix-2.0 -I/usr/include/json-glib-1.0 -I/usr/include/babl-0.1 -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -O2 -Wall -Wextra -Wno-attributes -Wno-unused-parameter img-save.c -o img-save.o +gcc -c -pthread -I/usr/include/gimp-2.0 -I/usr/include/gegl-0.4 -I/usr/include/gio-unix-2.0 -I/usr/include/json-glib-1.0 -I/usr/include/babl-0.1 -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -O2 -Wall -Wextra -Wno-attributes -Wno-unused-parameter img-save-dialog.c -o img-save-dialog.o +gcc -c -pthread -I/usr/include/gimp-2.0 -I/usr/include/gegl-0.4 -I/usr/include/gio-unix-2.0 -I/usr/include/json-glib-1.0 -I/usr/include/babl-0.1 -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -O2 -Wall -Wextra -Wno-attributes -Wno-unused-parameter plugin-img.c -o plugin-img.o +gcc img-load.o img-save.o img-save-dialog.o plugin-img.o -lgimpui-2.0 -lgimpwidgets-2.0 -lgimpmodule-2.0 -lgimp-2.0 -lgimpmath-2.0 -lgimpconfig-2.0 -lgimpcolor-2.0 -lgimpbase-2.0 -lgegl-0.4 -lgegl-npd-0.4 -Wl,--export-dynamic -lgmodule-2.0 -pthread -ljson-glib-1.0 -lbabl-0.1 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz -lfontconfig -lfreetype -o plugin-img gimptool-2.0 --install-bin plugin-img -cp plugin-img /home/pashev/.gimp-2.6/plug-ins +cp 'plugin-img' '/home/pashev/.config/GIMP/2.10/plug-ins/plugin-img/' + diff --git a/README.ru b/README.ru index 3077073..93dc168 100644 --- a/README.ru +++ b/README.ru @@ -1,91 +1,54 @@ 1. ИСПОЛЬЗОВАНИЕ -Плагин проверен с Гимпом 2.6, GCC 4.2.4, GTK 2.12, на платформе x86. - -Плагин состоит из одного файла plugin-img, -который надо скопировать в собственный каталог -плагинов Гимпа - ~/.gimp-2.6/plug-ins/. И всё, -Гимп будет открывать и сохранять файлы *.img. - -Можно скопировать плагин и в системный -каталог (/usr/lib/gimp/2.0/plug-ins/). - -Как и большинство файловых плагинов Гимпа, -этот привязан к расширению (IMG), поэтому файлы -с таким расширением будут загружаться и -сохраняться этим плагином. Описание MIME -сделано весьма условно (image/x-img), -сигнатура отсутствует (в гифах, например, есть слово GIF). - -При открытии файла *.img плагин запоминает -его формат и прозрачный цвет, если такой имеется. -Поэтому если потом просто сохранить изменённое -изображение (жамкнув Ctrl+S или F2-как у меня), -то файл сохранится в том же формате. - -Чтобы сохранить изображение в другом формате -надо нажать Shift+Ctrl+S (Shift+F2), -это пункт "Сохранить как..." в меню "Файл". -Тогда появится окошко с предложением выбрать формат -и прозрачный цвет. В этом окошке уже будут предложены -параметры: либо с последнего сохранения, -либо запомненные при открытии изображения. - -Прозрачный цвет имеет смысл -только для форматов RGB и RGBA. В последнем случае -пиксели с совпадающем цветом становятся полностью прозрачными. -Выбрать прозрачный цвет можно щёлкнув мышкой -по миниатюре или по большому прямоугольнику :-) - -Плагин умеет сохранять только изображения в -формате RGB (с прозрачностью или без оной); -размеры всех слоёв должны совпадать с размерами -изображения. Если что-то не так плагин скажет об этом. +Плагин проверен с Гимпом 2.10, GCC 12, GTK 2.24, на платформе amd64. -Пример неинтерактивной работы плагина показан в файле img-fu. +Плагин состоит из одного файла plugin-img, который надо скопировать в собственный каталог +плагинов Гимпа - ~/.config/GIMP/2.10/plug-ins/plugin-img/. И всё, Гимп будет открывать и сохранять файлы *.img. +Как и большинство файловых плагинов Гимпа, этот привязан к расширению (IMG), поэтому +файлы с таким расширением будут загружаться и сохраняться этим плагином. Описание MIME +сделано весьма условно (image/x-img), сигнатура отсутствует (в гифах, например, есть слово GIF). +При открытии файла *.img плагин запоминает его формат и прозрачный цвет, если такой +имеется. Поэтому если потом просто сохранить изменённое изображение (жамкнув Ctrl+S или +F2-как у меня), то файл сохранится в том же формате. -2. УСТАНОВКА +Чтобы сохранить изображение в другом формате надо нажать Shift+Ctrl+S (Shift+F2), это пункт +"Сохранить как..." в меню "Файл". Тогда появится окошко с предложением выбрать формат +и прозрачный цвет. В этом окошке уже будут предложены параметры: либо с последнего +сохранения, либо запомненные при открытии изображения. -Плагин собирается из отдельных файлов *.c -Параметры компилятора и компоновщика -выясняются с помощью утилиты gimptool-2.0, -которая идёт вместе с Гимпом. -Всё это описано в файле Makefile, -так что собрать и установить (в ~/.gimp-2.6/plug-ins/) -плагин можно командой "make install". +Прозрачный цвет имеет смысл только для форматов RGB и RGBA. В последнем случае пиксели с +совпадающем цветом становятся полностью прозрачными. Выбрать прозрачный цвет можно +щёлкнув мышкой по миниатюре или по большому прямоугольнику :-) -Другие возможности Makefile покажет -команда "make help" и редактор vim. +Плагин умеет сохранять только изображения в формате RGB (с прозрачностью или без оной); +размеры всех слоёв должны совпадать с размерами изображения. Если что-то не так плагин +скажет об этом. + +Пример неинтерактивной работы плагина показан в файле img-fu. -Сборка для Винды не предусмотрена, -но я исследовал этот вопрос. В известной сборке -Гимпа для Винды нет даже заголовочных файлов. -Для отключения отладочных сообщений надо -закомментировать строку: #define DEBUG -в файле plugin-img.h -В файле img-fu пример скрипта на языке Scheme, -которые открывает файл и сохраняет его -в другом формате (не перезаписывая). -Проверить это можно командой -"make test-fu" или сразу "gimp -i -b - < img-fu" +2. УСТАНОВКА + +Плагин собирается из отдельных файлов *.c Параметры компилятора и компоновщика выясняются +с помощью утилиты gimptool-2.0, которая идёт вместе с Гимпом. Всё это описано в файле Makefile. + +Для отключения отладочных сообщений надо закомментировать строку: #define DEBUG в файле plugin-img.h -Не понятно, зачем всем процедурам два раза -передавать имя файла, но таково устройство Гимпа. +В файле img-fu пример скрипта на языке Scheme, которые открывает файл и сохраняет его в другом +формате (не перезаписывая). Проверить это можно командой "make test-fu" или сразу "gimp -i -b - < img-fu" -Вот пример сборки и установки плагина -(я удалил предупреждения, связанные с исходниками Гимпа): +Вот пример сборки и установки плагина: -# make install -gcc -c -I/usr/include/gimp-2.0 -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -O2 -ansi -pedantic -Wall -Wextra -Wno-attributes -Wno-unused-parameter img-load.c -o img-load.o -gcc -c -I/usr/include/gimp-2.0 -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -O2 -ansi -pedantic -Wall -Wextra -Wno-attributes -Wno-unused-parameter img-save.c -o img-save.o -gcc -c -I/usr/include/gimp-2.0 -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -O2 -ansi -pedantic -Wall -Wextra -Wno-attributes -Wno-unused-parameter img-save-dialog.c -o img-save-dialog.o -gcc -c -I/usr/include/gimp-2.0 -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/pixman-1 -O2 -ansi -pedantic -Wall -Wextra -Wno-attributes -Wno-unused-parameter plugin-img.c -o plugin-img.o -gcc -lgimpui-2.0 -lgimpwidgets-2.0 -lgimpmodule-2.0 -lgimp-2.0 -lgimpmath-2.0 -lgimpconfig-2.0 -lgimpcolor-2.0 -lgimpbase-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 img-load.o img-save.o img-save-dialog.o plugin-img.o -o plugin-img +$ make install +gcc -c -pthread -I/usr/include/gimp-2.0 -I/usr/include/gegl-0.4 -I/usr/include/gio-unix-2.0 -I/usr/include/json-glib-1.0 -I/usr/include/babl-0.1 -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -O2 -Wall -Wextra -Wno-attributes -Wno-unused-parameter img-load.c -o img-load.o +gcc -c -pthread -I/usr/include/gimp-2.0 -I/usr/include/gegl-0.4 -I/usr/include/gio-unix-2.0 -I/usr/include/json-glib-1.0 -I/usr/include/babl-0.1 -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -O2 -Wall -Wextra -Wno-attributes -Wno-unused-parameter img-save.c -o img-save.o +gcc -c -pthread -I/usr/include/gimp-2.0 -I/usr/include/gegl-0.4 -I/usr/include/gio-unix-2.0 -I/usr/include/json-glib-1.0 -I/usr/include/babl-0.1 -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -O2 -Wall -Wextra -Wno-attributes -Wno-unused-parameter img-save-dialog.c -o img-save-dialog.o +gcc -c -pthread -I/usr/include/gimp-2.0 -I/usr/include/gegl-0.4 -I/usr/include/gio-unix-2.0 -I/usr/include/json-glib-1.0 -I/usr/include/babl-0.1 -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -O2 -Wall -Wextra -Wno-attributes -Wno-unused-parameter plugin-img.c -o plugin-img.o +gcc img-load.o img-save.o img-save-dialog.o plugin-img.o -lgimpui-2.0 -lgimpwidgets-2.0 -lgimpmodule-2.0 -lgimp-2.0 -lgimpmath-2.0 -lgimpconfig-2.0 -lgimpcolor-2.0 -lgimpbase-2.0 -lgegl-0.4 -lgegl-npd-0.4 -Wl,--export-dynamic -lgmodule-2.0 -pthread -ljson-glib-1.0 -lbabl-0.1 -lgtk-x11-2.0 -lgdk-x11-2.0 -lpangocairo-1.0 -latk-1.0 -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lpangoft2-1.0 -lpango-1.0 -lgobject-2.0 -lglib-2.0 -lharfbuzz -lfontconfig -lfreetype -o plugin-img gimptool-2.0 --install-bin plugin-img -cp plugin-img /home/pashev/.gimp-2.6/plug-ins +cp 'plugin-img' '/home/pashev/.config/GIMP/2.10/plug-ins/plugin-img/' -- cgit v1.2.3