2017-01-05 5 views
0

私は現在、動的テキストから生の画像データを生成するためにcairo/pangoを使用しています。私のアプリケーションはGtk + GUIアプリケーションではなく、ネイティブのC++ヘッドレスビデオサーバです。動的テキストを使用して、オーバーレイ用の生の画像を生成し、サーバーが処理してネットワーク経由で配信するビデオストリームにアルファブレンドしました。このテキストにはテキスト編集は含まれていませんが、テキストを指定すると、アルファブレンディングに適したイメージオーバーレイが生成されます。gtk_init()/ gtk_main()なしでGtkTextViewウィジェットを使用できますか?

しかし、私はより多くの書式設定の柔軟性(インデント、中央揃えなど)が必要です。カイロ/パンゴで幅広いフォーマットを行うのは苦しいです。

私はGtkTextView/GtkTextBuffer APIを見てきました.GtkTextTagを使用して簡単に書式設定していると思います。これらのウィジェットには明らかに豊富な編集機能がありますが、フォーマット機能が必要です。

質問:私はがgtk_initを介してメインGTK +ループ()/ gtk_main()を実行せずにGtkTextView/GtkTextBuffer/GtkTextTag 使用することができますか?

質問:の後に、未フォーマットのバッファ(カイロの画像面またはウィジェットpixbuf)への参照を取得するには、どのような形式のテキストがフォーマットされていますか?

gtk_widget_get_pango_context()、pango_layout_new()、gtk_widget_create_pango_layout()ルーチンを使用していますが、画面が存在しないため、あらゆる種類のエラーが発生しています。

編集:追加情報:私がしようとしているのは、本質的にレンダリングされ、フォーマットされたテキストのイメージデータを生成するためのスタンドアロンライブラリの一種としてGtkTextView/GtkTextBuffer/GtkTextTagルーチンのみを使用することです。

おかげで、 -Andres

+1

「カイロ/パンゴで幅広いフォーマットを実行するのは苦痛です」依存関係としてGTK +を要求することも苦痛です。どちらが悪いですか?仕事を簡単にするものを見つけたり、仕事のために設計されたより難しいソフトウェアを使用したりすることよりも、ソフトウェアの設計を意図していないものを強制的に実行しようとするのは難しいようです。 – oldtechaa

+1

メモとして、私は上記の私のコメントで意味するとは思っていませんが、私は本当にあなたの計画が働くことは非常に困難と思う。その理由から、私はそれが可能かどうかも分かりません。 – oldtechaa

+1

短い答えはいいえです。 gtk_init()でGTKを初期化する必要があります。 gtk_main()はループを開始し、GTKTextViewはグラフィカルな更新を得られません。おそらくあなたが望むことをするライブラリがありますが、それは非常に広範な答えになります。 –

答えて

3

基本的にはありません。 init()やmainloop()を使わないでGtkを使うことはできません。どうして?描画イベントはキューに入れられ、アイドルループでのみ描画されるためです。 mainloop()がなければ、アイドル時間はありません。

一方、カイロの低レベルの図からgtkのウィジェット(低レベルのカイロを使用)にジャンプしています。あなたが考えることができる多くの中間的な解決策があります。 Latexを生成してコンパイルすることができます。 Markdownは単純な書式設定をとることができます。 HTMLはもちろん、CSSを使用して何かにレンダリングすることもできます。

+0

他の解決策をご提案いただきありがとうございます。それは私に私の全体のアプローチを再考してくれました - ありがとう –

+0

あなたは歓迎です、アンドレス! – jcoppens

関連する問題