Comments (25)
I had the same need. All I did was simple modify the function that return the css matrix.
I fixed the position and put a minimum scale to zoom. You can do the same and put a maximum scale to zoom.
Transform.prototype.css = function() {
var A = this.A;
var b = this.b;
// Set min scale to zoom = 1
if (A[0][0] < 1 && A[1][1] < 1) {
this.A[0][0] = 1;
this.A[1][1] = 1;
}
// Fixed the position when the zoom is at min scale
if (A[0][0] == 1 && A[1][1] == 1) {
this.b[0] = 0;
this.b[1] = 0;
}
return 'matrix(' + A[0][0] + ',' + A[0][1] + ',' + A[1][0] + ',' + A[1][1] +
',' + b[0] + ',' + b[1] + ')';
};
Is not a fancy solution but it works.
By the way it's an excelent plugin. Keep up with the good work.
from zoom.
Hello, I really need some help with that. I would be appreciated if you can.
from zoom.
You can do this if you keep track of zoom in rotscale function, would you like to attempt?
from zoom.
There is another long refactor in progress in another branch, so I won't take this soon.
from zoom.
Thank you for your response. You think how long is it going to take for you to add this option? I don't know how can I help but it might be good to see your logic on this so I may go further with it.
from zoom.
I am actually only blocked on testing 1.0.7 version, then I can add this feature.
https://github.com/anitasv/zoom/tree/in_flight_stage
If you can verify it is working fine, I can merge it and add your request.
from zoom.
Might be better to start a beta channel, so I can easily merge changes there. I had tested before releasing new version; but didn't check if new built binaries are correct. Because I usually check in at least one iOS and one android device.
from zoom.
Are you asking if min and max scale limit is working with 1.0.7 version? If so, I don’t see an instruction about how to do it? If you’re asking about regardless of min/max scale limit, library is working like a charm in IOS and Android, even in Windows 10 kiosk mode.
from zoom.
Ah brilliant, I will merge then and add your feature.
from zoom.
Awesome! Looking forward to it, thanks a lot...
from zoom.
I have run into some problems, mainly due to state management; zoom limits are easy but haven't worked out how to manage events when it has maxed out. Will probably try again next weekend.
from zoom.
Is it something that is about to ship?
Would really like to see that :)
from zoom.
Not yet. @rubavahini do you have any clever ideas?
from zoom.
the difficulty with the feature is, when using rotation and panning, it is not clear how to gracefully return the element to its original bounds as the scale is reduced.
from zoom.
@diachedelic the idea i had was cancel the transform if the scale exceeds or goes below the limits.
from zoom.
for example in https://github.com/anitasv/zoom/blob/master/zoom.js#L379, if resultantZoom has higher zoom then do not update. But the problem is rotation also gets cancelled. Ideally additionalZoom can be realigned to maintain rotation but don't scale.
from zoom.
@anitasv what about gradually blending the transform with identity as the scale gets closer to min?
Although, if min < 1
, elem
will not take up its original bounds
from zoom.
@anitasv wait, that doesn't help with rotation. i think the main challenge is animating it smoothly at the min & max
from zoom.
smoothness is fine, it will just stop updating once it hits the maximum/minimum. At least I guess, should code and see how it looks.
from zoom.
but what if the element was panned during zooming? it will not end up back in its original position, which is surprising for the user
i suppose this is really two separate issues:
- placing limits on the zoom
- correcting bounds at the zoom limits
from zoom.
I am sorry I do not think I am explaining it very well
from zoom.
Yes, pan and rotation will stop the moment fingers are too wide causing zoom level to exceed max. It will act stuck, until you bring the fingers closer.
from zoom.
But it is not too hard to fix that as well, the magnitude of zoom can be calculated and renormalized.
from zoom.
ok! I will do a proof of concept
from zoom.
transform = [ [ c s; -c s]; pan]
z = sqrt(c^2 + s^2) will be zoom
if z > max:
adjust = max / z
transform = [ adjust * [c s; -c s], pan]
something like this will not have pan and rotation issue, but not sure if above pseudo code is right or not.
from zoom.
Related Issues (19)
- Could you add explanation. HOT 6
- select multiple IDs HOT 4
- Can i add control HOT 1
- Verify and release in flight touch changes project.
- disable pan and button click not working HOT 9
- is it possible set zoom by js code and fix it? HOT 2
- no not work HOT 3
- Scaling limits and panning boundaries prototype HOT 1
- Licence HOT 2
- can you better document the API and the event ? HOT 1
- Version on NPM not updated to 1.0.7 HOT 5
- Zoom element to be panned with touchmove on another element? HOT 2
- Need mouse wheel features HOT 1
- Unable to test in mobile device HOT 1
- I want to get rid of the one-finger touch feature.
- http://anitasv.github.io/zoom/ is 404 HOT 2
- Configurability HOT 6
- After rotate, pan is broken HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from zoom.