GtkImageView and gtk+-3

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

GtkImageView and gtk+-3

Jeff
Hi all,

Some ten years ago various people on this list helped me write Perl
bindings for GtkImageView.

https://github.com/GNOME/gtkimageview

https://metacpan.org/pod/Gtk2::ImageView

Now I am trying to migrate gscan2pdf to gtk+-3.0. Having enjoyed the
widget for the last ten years, I would like to continue to use it.
Unfortunately, there is no gtk3+-3 version and upstream is dead.

I attempted to compile GtkImageView against gtk+-3.0. This failed,
mostly due to types like GtkDrawable and GtkGC not being in gtk+-3,
which seems to have replaced such things with Cairo.

I see that the GTK people have their own version of GtkImageView in
gtk+-4.0:

https://git.gnome.org/browse/gtk+/commit/?h=wip/baedert/gtkimageview&id=545f4186042f03026410e174f9940696af76fccb

The code looks completely different to the gtk+-2 code. I haven't tested
it, but it doesn't seem to offer the ability to select regions of the
image, either.

Now I am trying to decide how to create the functionality of the widget
in gtk+-3. I see a couple of options:

1. Start with the gtk+-2 code and replace the deprecated types.

I'm no expert with Cairo, and I don't know whether that allows me to
throw away all the caching code that makes GtkImageView efficient.

2. Start with the gtk+-4.0 code and try to backport it to gtk+-3.0

I don't know how hard this is, and how difficult it is then to implement
stuff like region selection on top

3. Do something basic in Perl. Is region selection even possible in pure
Perl?

I know enough C to write Perl bindings and be generally dangerous, but I
am no expert, so I have started with #3, but I have no idea how to
implement the region selection functionality.

Any insights would be most welcome.

Regards

Jeff Ratcliffe


_______________________________________________
gtk-perl-list mailing list
[hidden email]
https://mail.gnome.org/mailman/listinfo/gtk-perl-list

signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: GtkImageView and gtk+-3

Daniel Kasak-4
Hi Jeff.

Answers inline ...

On Fri, Jan 5, 2018 at 5:04 AM, Jeff <[hidden email]> wrote:

Hi all,

Some ten years ago various people on this list helped me write Perl
bindings for GtkImageView.

https://github.com/GNOME/gtkimageview

https://metacpan.org/pod/Gtk2::ImageView

Now I am trying to migrate gscan2pdf to gtk+-3.0. Having enjoyed the
widget for the last ten years, I would like to continue to use it.
Unfortunately, there is no gtk3+-3 version and upstream is dead.

I attempted to compile GtkImageView against gtk+-3.0. This failed,
mostly due to types like GtkDrawable and GtkGC not being in gtk+-3,
which seems to have replaced such things with Cairo.

I see that the GTK people have their own version of GtkImageView in
gtk+-4.0:

https://git.gnome.org/browse/gtk+/commit/?h=wip/baedert/gtkimageview&id=545f4186042f03026410e174f9940696af76fccb

The code looks completely different to the gtk+-2 code. I haven't tested
it, but it doesn't seem to offer the ability to select regions of the
image, either.

I think it's too early to start porting things to gtk+4 just yet.
 
Now I am trying to decide how to create the functionality of the widget
in gtk+-3. I see a couple of options:

1. Start with the gtk+-2 code and replace the deprecated types.

I'm no expert with Cairo, and I don't know whether that allows me to
throw away all the caching code that makes GtkImageView efficient.
 
I guess it depends what kind of operations you're doing. In my powercom utilities ( energy monitoring app - https://github.com/dankasak/powercom-utilities ) I'm able to render a graph with 5 series, with about 2,000 points each, very quickly - in fact fast enough to draw a crosshair-type thing under the mouse, and some vertical & horizontal bars ... these follow the mouse in real-time, and there is no apparent lag on my laptop. My arm server ( Cubox i4 pro - a quad-core 1Ghz arm v7 ) doesn't like it so much - there is noticeable lag. If I wanted to improve things, then I guess I'd pre-render the things that don't change ( ie the graph series ), and then just render the things that do change ( the horizontal & vertical bars ), and composite the 2 when the mouse moves.

2. Start with the gtk+-4.0 code and try to backport it to gtk+-3.0

I don't know how hard this is, and how difficult it is then to implement
stuff like region selection on top

3. Do something basic in Perl. Is region selection even possible in pure
Perl?

I know enough C to write Perl bindings and be generally dangerous, but I
am no expert, so I have started with #3, but I have no idea how to
implement the region selection functionality.

Any insights would be most welcome.

Regards

Jeff Ratcliffe

Regarding selecting a region ...

I've recently added mouse handling to my powercom utilities - specifically so I could select a region of a graph. Check out the code related mouse events at:
https://github.com/dankasak/powercom-utilities/blob/master/powercom/viewer.pm#L457

This is using a GtkDrawingArea, but I assume you can do the same with pretty much any widget ( you may have to call $widget->add_events() ).

Dan

_______________________________________________
gtk-perl-list mailing list
[hidden email]
https://mail.gnome.org/mailman/listinfo/gtk-perl-list
Reply | Threaded
Open this post in threaded view
|

Re: GtkImageView and gtk+-3

Jeff
In reply to this post by Jeff
On 04/01/18 19:04, Jeff wrote:
> Some ten years ago various people on this list helped me write Perl
> bindings for GtkImageView.

[...]

> Now I am trying to decide how to create the functionality of the widget
> in gtk+-3. I see a couple of options:

[...]

> 3. Do something basic in Perl. Is region selection even possible in pure
> Perl?

I've made some progress. Attached are a couple of small examples
(drawingarea_pan.pl and drawingarea_rubberband.pl) for selecting a
region of an image, and also panning and zooming an image.

Probably thanks to Cairo, they are almost certainly quick enough for
what I want, even though they are pure Perl.

However, I don't understand why although panning and zooming works, the
Cairo context never seems to reflect this in $context->user_to_device()

If you run drawingarea_pan.pl, and try panning at various zoom levels in
the top left hand corner (to keep the numbers small and simple), the
coordinates are not affected by the zoom level or the amount of pan.

What is going on? Why isn't user_to_device() working as I expect?

Regards

Jeff

_______________________________________________
gtk-perl-list mailing list
[hidden email]
https://mail.gnome.org/mailman/listinfo/gtk-perl-list

drawingarea_rubberband.pl (9K) Download Attachment
drawingarea_pan.pl (3K) Download Attachment
signature.asc (849 bytes) Download Attachment