前几天 宣布发布新版本的GTK 4.0, 版本已经开发了几个月,成为该项目的新稳定分支。 这个新版本提供了非常有趣的功能,其中我们可以重点介绍媒体播放方面的改进。
GTK是一组用于创建图形界面的软件库GTK最初是为GIMP图像处理软件而开发的。 当前,它的范围不再仅限于GIMP,而是在其他项目中使用。 例如,GTK 是GNU网络对象模型环境的核心 (GNOME),但它也可用于编写其他Linux环境的应用程序,以及Microsoft Windows和Apple macOS的应用程序。
“ GTK 4.0是一小组敬业的开发人员辛勤工作的结果。 我们将另外提供一篇文章进行统计,但快速摘要是自3.89.1年2016月版本18,000起,我们添加了20多次提交,并发布了XNUMX多个开发版本。
“对所有参与这项工作的人,特别是本杰明,艾曼纽尔,蒂姆,卡洛斯,乔纳斯和克里斯蒂安,表示祝贺和感谢! «
关于新版本的GTK 4.0
GTK 4.0引入了新的小部件以及对现有元素的更改, 内置的媒体播放支持,GPU加速改进(例如您的工作) 新的Vulkan渲染引擎,并与macOS更好地兼容。 我们还可以注意到数据传输方面的改进,重新设计的着色器,GPU加速滚动,Vulkan作业之外的OpenGL渲染方面的改进,HTMl5 Broadway中作业的还原,更好的Windows支持等。
让我们更深入地了解一些点。
GT4中的媒体管理
- GTK 4将使GTK应用程序可以更轻松地显示动画。 无论是程序动画,webm存档还是直播。
- GTK 4引入了一个新的名为GdkPaintable的API,该API受CSS Houdini的努力启发。 它非常灵活(您可以绘制的任何内容都可以是GdkPaintable)。 内容可以调整大小(如svg)或随时间更改(如webm)。
- 如果您有更专业的需求,则可以使用gtk_snapshot_to_paintable()将可以在GtkSnapshot中捕获的任何内容转换为图形。 如果要创建一个自定义窗口小部件,该窗口小部件想要绘制要绘制的对象,则非常简单。 只需调用gdk_paintable_snapshot()。
- 您可以使用GtkVideo小部件进行多媒体控制。
GTK4中的数据传输
传统的数据传输方法 用户在桌面应用程序之间启动的是剪贴板或拖放。 GTK +支持这些方法,但是直到GTK3为止,该工具包中用于此类数据传输的API都是对应的X11 API的精细伪造副本。 这并不奇怪,因为整个GDK API已在X11中建模。 不幸的是,该实现包含诸如增量传输和字符串格式转换之类的结果。
对于GTK4,团队决定放弃这种方法,选择现代化。 这是新方法的概念:
“如果您的应用程序要发送的数据不是字符串,则可能是一个对象,例如GFile,GdkTexture或GdkRGBA。 接收方应用程序可能不使用GTK或GLib,因此不知道这些类型。 即使这样做,也无法将对象从一个过程移动到另一个过程中。
在其中,数据传输通过读取字节流从源应用程序和目标应用程序发送文件描述符来进行。 剪贴板和DND的协议使用mime类型(例如text / uri-list,image / png或application / x-color)来标识字节流的格式。
发送对象包括协商双方兼容的数据格式,将源端的对象序列化为该格式的字节流,传输数据以及在目标端反序列化对象。 «
另外, GTK4带有新的API.
“我们介绍的用于处理这些类型的第一个API是GdkContentFormats对象。 它可以包含格式列表,可以是GTypes或mime。 我们使用GdkContentFormats对象来描述应用程序可以提供数据的格式,以及应用程序可以接收数据的格式”。
数据来源: https://blog.gtk.org/