GtkmmとGdk::Drawableを使って16進エディタのようなものを書こうとしています。正確には16進ビューです。
最初はひどいカイロを使ってみました。私もパンゴのどこにも近づいてはいけないと思います。
現在、私は次のようなものを使用しています。テキストに事前にレンダリングされた文字を使用します。
void HexView::on_vScrl_value_changed() {
drawingArea.queue_draw();
}
bool HexView::DrawingArea::on_expose_event(GdkEventExpose* event) {
/* */
Glib::RefPtr<Gdk::Window> window = get_window();
if(window && data && numBytes) {
/* */
unsigned int scrlY = hexView->vScrl.get_value();
/* */
for(/*loop visible bytes*/) {
/* */
window->draw_pixbuf(char_pixbuf, 0, 0, x, y, 20, 20, Gdk::RGB_DITHER_NONE, 0, 0);
}
}
return true;
}
これにより、レンダリングとスクロールは耐えられるようになりますが、それでも低速です。CPUが引っ掛かり、小さなバネのハンドルをスクロールし、少し遅れました。800x300の小さな領域で:(
改善すべきアイデアはありますか?
Gtk :: TexViewウィジェットは大量のテキストを完全にレンダリングし、1600x1200ウィンドウでのスクロールは便利です。