我目前使用cairo/pango從動態文本生成原始圖像數據。我的應用程序不是Gtk + GUI應用程序,只是一個本地C++無頭視頻服務器。使用動態文本,我生成了覆蓋圖的原始圖像,然後alpha將它們混合到服務器通過網絡處理和分發的視頻流中。這個文本沒有涉及文本編輯,但是在給定文本的情況下,我生成了一個適合於alpha混合的相應圖像疊加。我可以在不使用gtk_init()/ gtk_main()的情況下使用GtkTextView小部件嗎?
但是,我需要更多的格式靈活性(縮進,中心對齊等)。在cairo/pango中做廣泛的格式化是很痛苦的。
我一直在尋找GtkTextView/GtkTextBuffer API,我認爲它使用GtkTextTag更容易格式化。這些小部件顯然具有廣泛的編輯功能,但我只需要格式化功能。
問:我可以用GtkTextView/GtkTextBuffer/GtkTextTag 沒有運行通過gtk_init()/進入主循環主GTK +循環()?
問題:我如何獲得對原始格式化緩衝區(cairo圖像表面或widget pixbuf)的引用之後所有的標籤都格式化了文本?
我一直在使用gtk_widget_get_pango_context(),pango_layout_new(),gtk_widget_create_pango_layout(),例程,但因爲沒有屏幕而得到各種錯誤。
編輯:附加信息:我想要做的僅僅是使用GtkTextView/GtkTextBuffer/GtkTextTag例程作爲一種獨立的庫來生成渲染和格式化文本的圖像數據。
感謝, -Andres
「在cairo/pango中進行大量格式化很痛苦」?要求GTK +作爲依賴也是痛苦的。哪個更糟?試圖強迫一件軟件去做一些不是我設計的事情似乎比找到一些能夠輕鬆完成工作或者使用專爲工作而設計的更加困難的軟件的東西更難。 – oldtechaa
作爲一個說明,我不想聽到上面的評論,但我真的認爲你的計劃將很難得到工作。出於這個原因,我也不知道是否有可能。 – oldtechaa
簡短的回答是否定的。 GTK需要先用gtk_init()初始化。 gtk_main()啓動循環,沒有它,GTKTextView將不會得到任何圖形更新。可能有一個圖書館可以做你想做的事,但這是一個非常廣泛的答案。 –