vlc | branch: master | Alexandre Janniaux <aja...@videolabs.io> | Tue Feb 16 16:01:02 2021 +0100| [904998afec0b2d4192e877c19c7e5295bcaf4c67] | committer: Alexandre Janniaux
test: iosvlc: add pinch gesture recognizer Allow the test application to be resized to test the behaviour of libvlccore resizing. Later, this should probably be enabled by a feature flag or an environment variable. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=904998afec0b2d4192e877c19c7e5295bcaf4c67 --- test/iosvlc.m | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test/iosvlc.m b/test/iosvlc.m index 23b2c236b4..12c1391343 100644 --- a/test/iosvlc.m +++ b/test/iosvlc.m @@ -37,11 +37,47 @@ libvlc_instance_t *_libvlc; UIWindow *window; UIView *subview; + UIPinchGestureRecognizer *_pinchRecognizer; + + CGRect _pinchRect; + CGPoint _pinchOrigin; + CGPoint _pinchPreviousCenter; } @end @implementation AppDelegate +- (void)pinchRecognized:(UIPinchGestureRecognizer *)pinchRecognizer +{ + UIGestureRecognizerState state = [pinchRecognizer state]; + + switch (state) + { + case UIGestureRecognizerStateBegan: + _pinchRect = [subview frame]; + _pinchOrigin = [pinchRecognizer locationInView:nil]; + _pinchPreviousCenter = [subview center]; + return; + case UIGestureRecognizerStateEnded: + return; + case UIGestureRecognizerStateChanged: + break; + default: + return; + } + + CGFloat scale = pinchRecognizer.scale; + CGRect viewBounds = _pinchRect; + if (scale >= 1.0 && (viewBounds.size.width == 0 || viewBounds.size.height == 0)) + viewBounds.size.width = viewBounds.size.height = 1; + viewBounds.size.width *= scale; + viewBounds.size.height *= scale; + subview.frame = viewBounds; + CGPoint newPosition = [pinchRecognizer locationInView:nil]; + subview.center = CGPointMake( + _pinchPreviousCenter.x + newPosition.x - _pinchOrigin.x, + _pinchPreviousCenter.y + newPosition.y - _pinchOrigin.y); +} /* Called after application launch */ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { @@ -76,6 +112,10 @@ [window addSubview:subview]; [window makeKeyAndVisible]; + _pinchRecognizer = [[UIPinchGestureRecognizer alloc] + initWithTarget:self action:@selector(pinchRecognized:)]; + [window addGestureRecognizer:_pinchRecognizer]; + /* Start glue interface, see code below */ libvlc_add_intf(_libvlc, "ios_interface,none"); _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits