ajstarks / giocanvas

Canvas API built with Gio
Other
141 stars 15 forks source link

Resize: Canvas and Responsive options #11

Closed gedw99 closed 7 months ago

gedw99 commented 1 year ago

The new resize works well. Been experimenting with it and it works fine.

I would like to see discus 2 further options:

  1. Canvas with scroll bars.

It never resizes, but instead allows zoom and scroll bars.

Use cases are many. My use case is needing to CAD like layouts.

  1. Responsive with scroll bars.

When you make the window smaller it pushes things over and does not rescale things. It's more like how GIOUI layout itself works. The bottom scroll and right scroll bars appear appear as needed.

Uses cases are when you want App like behaviour

gedw99 commented 1 year ago

Will you take a PR if the existing behaviour is still present ?

ajstarks commented 1 year ago

The latest version implements mouse-wheel for scrolling forward and back. (along with reload on file change).

gedw99 commented 1 year ago

Thanks for update @ajstarks and this huge effort on this code base.

i will try it out to see if it helps my use case and then report back in this issue.

Much appreciated

gedw99 commented 1 year ago

@ajstarks I tried out this

The scrolling with trackpad works very well on MAC.


About Use case 1 and the canvas zooming, I thought the scrolling might create the ability to zoom in and out using the trackpad too but it does not. This is often called "pinch to zoom".


In relation to use case 2 ( responsive layout), I tried my code and your code and made a video. It's the only way to discuss it :)

https://youtu.be/rGPacEOZVCc

The first screen is running your latest gcdeck with test.dsh. The second screen is running some old code i had with test.dsh

The good news is that my old code is not needed anymore thanks to your and @andybalholm changes. thanks


Ideas of how to move forward:

I am not sure because UC 1 and 2 are either mutually exclusive or actually overlap.
Originally i imagined an Editor using the system like UC 1, where they want to have a canvas with zooming and scroll bars and no responsive aspects. Users would then be the UC 2 where they want Responsive without zooming.

But now i am starting to realise that it's not that clear cut.

I am NOT saying that the current changes are BAD. Not at all. Even in that video you can see that the shapes are getting squished up and out of proportion. Maybe we need to treat text versus shapes differently - don't know. Its maddening because a web browser has all these different ways to layout things that is a large permutation matrix. I feel that we need to avoid that.

So i feel like it is best to make these features able to be toggled. A simple toolbar or something. It will make it easier also for user and us to experiment without recompiling, until things settle down. We closing out the permutation matrix of options and what should happen.

For me i am working on the ability to show all the slides as a big canvas with lines between them to show compositional aspects. I want to create the ability to show the reuse of elements and also actions like a hyperlink from one to the other so you can do non linear slides etc. This calls for Use Case 1, where you want a big canvas you can zoom and if you zoom in to the point where some slides are off the visible screen you get scroll bars. I started o this code but never had time to get it working yet. I can put this up on github if you want.

Then you have where your more of a User, and you just want to view the slide(s) and have them responsive. You do NOT want to zoom but more flick up and down between the slides in the deck. BUT when you resize, you get for example the shapes maintaining their proportion.

Interesting to hear what you think about all this. If you don't fully know either i can certainly understand because like i am realising it depend on your use case. This is why i am suggesting the first thing to do it to make the behaviour able to be toggled on a toolbar on the top or left...

I also want to put up my experiments on github so you can see them, It might help.

ajstarks commented 1 year ago

I believe what you are seeing is the "normal" behavior of the %-based canvas. However, image scaling is not working correctly at the moment. To test this try out running test.xml with different canvas sizes using another deck client like pdfdeck.

That being said, the rendering of gcdeck is not up to the standard of pdfdeck, and needs to be improved.

ajstarks commented 1 year ago

here is an illustration of pdfdeck (left) and gcdeck (right) showing an extreme canvas: image

gedw99 commented 1 year ago

Thank you @ajstarks

That helps me understand things more.

I will also try that here as you suggested.

gedw99 commented 7 months ago

been ages so closing this.