Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在没有gtk_init()/gtk_main()的情况下使用GtkTextView小部件吗?_Gtk_Gtk3_Pangocairo - Fatal编程技术网

我可以在没有gtk_init()/gtk_main()的情况下使用GtkTextView小部件吗?

我可以在没有gtk_init()/gtk_main()的情况下使用GtkTextView小部件吗?,gtk,gtk3,pangocairo,Gtk,Gtk3,Pangocairo,我目前使用cairo/pango从动态文本生成原始图像数据。我的应用程序不是GTK+GUI应用程序,只是一个本地C++无头视频服务器。使用动态文本,我为覆盖生成原始图像,然后通过服务器处理并通过网络分发的视频流将它们进行alpha混合。该文本不涉及文本编辑,但给定文本,我将生成适合alpha混合的相应图像覆盖 但是,我需要更多的格式灵活性(缩进、中心对齐等)。在cairo/pango中进行大量格式化是痛苦的 我一直在研究GtkTextView/GTKTextBufferAPI,我认为它使用Gtk

我目前使用cairo/pango从动态文本生成原始图像数据。我的应用程序不是GTK+GUI应用程序,只是一个本地C++无头视频服务器。使用动态文本,我为覆盖生成原始图像,然后通过服务器处理并通过网络分发的视频流将它们进行alpha混合。该文本不涉及文本编辑,但给定文本,我将生成适合alpha混合的相应图像覆盖


但是,我需要更多的格式灵活性(缩进、中心对齐等)。在cairo/pango中进行大量格式化是痛苦的

我一直在研究GtkTextView/GTKTextBufferAPI,我认为它使用GtkTextTag更容易格式化。这些小部件显然具有广泛的编辑功能,但我只需要格式化功能

问题:我可以使用GtkTextView/GtkTextBuffer/GtkTextTag而不通过gtk_init()/gtk_main()运行主gtk+循环吗

问题:在所有标记格式化文本后,如何获取原始格式化缓冲区(cairo image surface或widget pixbuf)的引用

我一直在使用gtk_widget_get_pango_context()、pango_layout_new()、gtk_widget_create_pango_layout()、例程,但由于没有屏幕,因此会出现各种错误

编辑:其他信息:我试图做的基本上只是使用GtkTextView/GtkTextBuffer/GtkTextTag例程作为一种独立的库,用于生成渲染和格式化文本的图像数据

谢谢,
-Andres

基本上没有。没有init()和/或mainloop(),您无法使用Gtk。为什么?因为任何绘图事件都已排队,并且仅在空闲循环中绘制。没有mainloop(),您就没有空闲时间


另一方面,您正在从Cairo中的低级绘图跳到gtk中的小部件(在低级使用Cairo)。有许多中间的解决方案你可以考虑。您可以生成并编译它。可以采用简单的格式。当然还有HTML,您甚至可以在其中使用CSS,并将其呈现为任何内容。

基本上没有。没有init()和/或mainloop(),您无法使用Gtk。为什么?因为任何绘图事件都已排队,并且仅在空闲循环中绘制。没有mainloop(),您就没有空闲时间


另一方面,您正在从Cairo中的低级绘图跳到gtk中的小部件(在低级使用Cairo)。有许多中间的解决方案你可以考虑。您可以生成并编译它。可以采用简单的格式。当然还有HTML,在那里你甚至可以使用CSS,并将其呈现给任何东西。

“在cairo/pango中进行大量格式化是痛苦的”?需要GTK+作为依赖项也是痛苦的。哪个更糟?对我来说,试图强迫一个软件去做它不是为之设计的事情似乎比找到一个可以轻松完成工作的东西或者使用一个为工作设计的更难的软件更难。作为一个说明,我不想在上面的评论听起来很刻薄,但我真的认为你的计划很难实施。出于这个原因,我也不知道是否可能。简短的回答是否定的。GTK需要先用GTK_init()初始化。gtk_main()启动循环,没有循环,GTKTextView将无法获得任何图形更新。可能有一个库可以做你想做的事情,但这将是一个非常广泛的答案。“在cairo/pango中进行广泛的格式化是痛苦的”?需要GTK+作为依赖项也是痛苦的。哪个更糟?对我来说,试图强迫一个软件去做它不是为之设计的事情似乎比找到一个可以轻松完成工作的东西或者使用一个为工作设计的更难的软件更难。作为一个说明,我不想在上面的评论听起来很刻薄,但我真的认为你的计划很难实施。出于这个原因,我也不知道是否可能。简短的回答是否定的。GTK需要先用GTK_init()初始化。gtk_main()启动循环,没有循环,GTKTextView将无法获得任何图形更新。可能有一个图书馆可以做你想做的,但这将是一个非常广泛的答案。我感谢你的建议,而不是其他解决方案。这让我重新思考了我的整个方法——谢谢。我感谢你的建议和其他解决方案。这让我重新思考我的整个方法——谢谢