前一阵翻译gimp官网的编写插件教程,本打算继续翻译第二部分,但是感觉第一个例子还不是很懂,翻译第二部分有点理解不能,所以就读了一
下源码,记录如下

#include <libgimp/gimp.h>

/* 声明query函数,它提供gimp相关信息,使其可以根据参数配置插件 */
static void query (void); /* 声明run函数,调用时会运行插件安装在程序数据库中的程序 */
static void run (const gchar *name,
gint nparams,
const GimpParam *param,
gint *nreturn_vals,
GimpParam **return_vals); // GimpPlugInInfo是一个函数结构体,调用init,quit,query,run函数
// 本例中init,quit函数不使用,所以置为NULL
GimpPlugInInfo PLUG_IN_INFO =
{
NULL,
NULL,
query,
run
}; //宏
MAIN() /* query函数,用于提供插件信息 */
static void query (void)
{
//GimpParamDef结构体,保存程序的定义
//GimpParamDef的三个参数,GimpPDBArgType类型, gchar *名称, gchar *描述
static GimpParamDef args[] =
{
{
GIMP_PDB_INT32,
"run-mode",
"Run mode"
},
{
GIMP_PDB_IMAGE,
"image",
"Input image"
},
{
GIMP_PDB_DRAWABLE,
"drawable",
"Input drawable"
}
}; /* gimp_install_procedure函数使用PDB来安装程序 */
gimp_install_procedure (
"plug-in-hello", //名称
"Hello, world!", //简介
"Displays \"Hello, world!\" in a dialog", //帮助(一般作为简介的补充)
"David Neary", //作者
"Copyright David Neary",//版权
"2004", //日期
"_Hello world...", //菜单标签名称 “_”在菜单中显示为空格
"RGB*, GRAY*", //图像类型,支持RGB,RGBA, 灰度
//如果插件不需要图像,则置为空串
GIMP_PLUGIN, //程序的类型为gimp插件,或“GIMP_EXTENSION(gimp扩展)”
G_N_ELEMENTS (args), //传入args数组中元素的个数
0, //返回值
args, //传入args数组
NULL //返回值
); //插件安装在“滤镜/Misc”文件夹下,标签名称为上面定义的“Hello world...”
gimp_plugin_menu_register ("plug-in-hello",
"<Image>/Filters/Misc");
} /* run函数,用于实现插件功能 */
static void
run (const gchar *name,
gint nparams,
const GimpParam *param,
gint *nreturn_vals,
GimpParam **return_vals)
{
/* 一个插件可以生成多个插件程序,所以本例题的插件程序使用values[0] */
static GimpParam values[1]; /* 定义程序数据库的状态 */
GimpPDBStatusType status = GIMP_PDB_SUCCESS; /* 定义程序的运行模式,如交互式,非交互式,最后使用值 */
GimpRunMode run_mode; /* 强制设置返回值 */
*nreturn_vals = 1;
*return_vals = values; /* 设置程序的类型和状态 */
values[0].type = GIMP_PDB_STATUS;
values[0].data.d_status = status; /* 获取运行模式,如果运行模式是非交互式,那么不会显示对话框 */
run_mode = param[0].data.d_int32; if (run_mode != GIMP_RUN_NONINTERACTIVE)
g_message("Hello, world!\n");
}

1,最后生成的插件名称与源程序的名称相同

2,读完这个例子对插件有了一定的了解,但有些地方还很模糊,应该是正常现象

3,想深入的理解插件的实现与运行原理,那么就要多读源码

4,想读懂源码,那么就要翻看帮助文档,Devhelp是个好东西

5,通过一个hello world还不能编写插件甚至依旧看不懂别人的插件实现,欲编写实用的插件,需打好基础,循序渐进

Gimp插件Hello world注释的更多相关文章

  1. [翻译]如何编写GIMP插件(一)

    近期想尝试编写gimp插件,在gimp官网看到了三篇简明教程,顺便翻译了下,由于本人英文,计算机知识有限,文中难免有warning,error出现,欢迎指正. <How to write a G ...

  2. 编译安装gimp插件之Mathmap(流水记录)

    本文为在Fedora 20下编译安装Mathmap1.3.5的编译过程,如果你仅仅需要快速的安装Mathmap,那么请拉至文末的"快速安装" 其实,过程还是很有趣的,充满Error ...

  3. vscode dart 插件 关闭自动注释

    vscode dart 插件 关闭自动注释 左下角设置 --> 搜索 Closing Labels --> 去掉勾选

  4. sublime注释插件与javascript注释规范

    前言 代码中注释是不可少的,即使是自己写的代码,过了一段时间之后再重看,如果没有注释记录的话,可能会想不到当初是这样实现的,尤其是在业务逻辑比较复杂的项目,注释变得尤为重要.怎么优雅的写有用的注释呢? ...

  5. Xcode插件(一)-规范注释生成器VVDocumenter

    原文来自:http://blog.csdn.net/hitwhylz/article/details/27813315 分享几个常用的Xcode插件. 第一个, 规范注释生成器VVDocumenter ...

  6. [翻译]如何编写GIMP插件(二)

    写在前面: 本人翻译并不专业,甚至英语不好,翻译内容仅供参考.由于博主是边学边翻译,所以不能保证翻译的准确性和正确性,如果可以,请查看原版学习,本文仅作学习记录之用. <How to write ...

  7. Xcode 5.0.1安装插件:规范注释生成器VVDocumenter + OSX 10.9.2

    终于有时间停下来玩下Xcode的插件了,最近需要用下规范注释生成器,于是装了个插件用下. 下面是安装过程(简单的不得了): 1.前往GitHub下载工程文件:VVDocumenter-Xcode 2. ...

  8. eclipse工具类及插件(设置注释模板)

    (摘抄原地址)https://blog.csdn.net/xb12369/article/details/79850476(设置注释模板) 首先打开Eclipse配置选项:Window->Pre ...

  9. 懒得说IE6了,写个js插件不能写注释,原因如下

    变态的ie6将注释当代码解释 ie6宽松的安全环境对于开发人员是开心的,比如运行速度快(对于ie7/8/9).支持部份文件操作等.但也有很多烦忧,比如对数组.对象的检测比较机械,这还不算什么,这两天让 ...

随机推荐

  1. Cocos2d-X中间应用

    (层)Laye:与球员打交道响应事件Node子类. 不同的场景,层通常包括直接在屏幕上呈现的内容.而且能够接受用户的输入事件.包括触摸,加速度计和键盘输入等. 我们须要在层中加入精灵,文本标签或者其它 ...

  2. 2年SQL Server DBA调优方面总结

    原文:2年SQL Server DBA调优方面总结 2年SQL Server DBA调优方面总结 当2年dba 我觉得,有些东西需要和大家分享探讨,先书单. 书单 1.<深入解析SQL Serv ...

  3. java 生产者消费者问题 并发问题的解决(转)

    引言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示,生产者向空间里存放数据,而消费者取用数据,如果不加以协调可能会出现以下情况: 生产者消费者图 ...

  4. YouTube图片幻灯片分享技巧

    以前,您将使用的Windows Movie Maker或Picasa的工具,如缝合的图像文件转换成视频上传到YouTube.然而,添美的小编分享了她的技巧,你可以创建一个图片直接进入YouTube的视 ...

  5. ffmpeg.c简单的结构功能分析(平局)

    当转码的研究看前一阵子FFmpeg资源. 因为ffmpeg.c与此相反的较长的代码.而有相当一部分人AVFilter相关代码(这部分已经不太熟悉),所以学习之前FFmpeg时间,还没有好好看看它的源代 ...

  6. Properties类读写.properties配置文件

    package com.hzk.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFo ...

  7. 用户 'IIS APPPOOL\IdealTest' 登录失败解决方案

    原文:用户 'IIS APPPOOL\IdealTest' 登录失败解决方案 运行MVC框架后可能会提示“用户 'IIS APPPOOL\IdealTest' 登录失败” 详细堆栈信息如下 说明: 执 ...

  8. CSS3图片轮播效果

    原文:CSS3图片轮播效果 在网页中用到图片轮播效果,单纯的隐藏.显示,那再简单不过了,要有动画效果,如果是自己写的话(不用jquery等),可能要费点时间.css3的出现,让动画变得不再是问题,而且 ...

  9. 开源 自由 java CMS - FreeCMS2.0 签字

    项目地址:http://www.freeteam.cn/ 会员注冊 打开浏览器,输入http://localhost:8080/register.jsp. 输入注冊信息后点击"注冊" ...

  10. DirectX 9 UI三种设计学习笔记:文章4章Introducing DirectInput+文章5章Wrapping Direct3D

           本文从哈利_创.转载请注明出处.有问题欢迎联系本人!        邮箱:2024958085@qq.com 上一期的地址: DX 9 UI设计学习笔记之二 第4章 Introducin ...