Scale mouse input deltas based on the ratio of the stream resolution to the screen size and the screen scale

This commit is contained in:
Cameron Gutman
2015-01-10 00:37:34 -05:00
parent 514d5d13a0
commit 179110508c
3 changed files with 27 additions and 2 deletions

View File

@@ -12,5 +12,6 @@
@interface StreamView : UIView
- (void) setupOnScreenControls:(ControllerSupport*)controllerSupport;
- (void) setMouseDeltaFactors:(float)x y:(float)y;
@end

View File

@@ -16,6 +16,17 @@
CGPoint touchLocation;
BOOL touchMoved;
OnScreenControls* onScreenControls;
float xDeltaFactor;
float yDeltaFactor;
float screenFactor;
}
- (void) setMouseDeltaFactors:(float)x y:(float)y {
xDeltaFactor = x;
yDeltaFactor = y;
screenFactor = [[UIScreen mainScreen] scale];
}
- (void) setupOnScreenControls:(ControllerSupport*)controllerSupport {
@@ -50,8 +61,13 @@
if (touchLocation.x != currentLocation.x ||
touchLocation.y != currentLocation.y)
{
LiSendMouseMoveEvent(currentLocation.x - touchLocation.x,
currentLocation.y - touchLocation.y );
int deltaX = currentLocation.x - touchLocation.x;
int deltaY = currentLocation.y - touchLocation.y;
deltaX *= xDeltaFactor * screenFactor;
deltaY *= yDeltaFactor * screenFactor;
LiSendMouseMoveEvent(deltaX, deltaY);
touchMoved = true;
touchLocation = currentLocation;

View File

@@ -11,6 +11,7 @@
#import "HttpManager.h"
#import "Utils.h"
#import "OnScreenControls.h"
#import "StreamView.h"
@implementation StreamManager {
StreamConfiguration* _config;
@@ -73,6 +74,13 @@
}
}
// Set mouse delta factors from the screen resolution and stream size
CGFloat screenScale = [[UIScreen mainScreen] scale];
CGRect screenBounds = [[UIScreen mainScreen] bounds];
CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale);
[((StreamView*)_renderView) setMouseDeltaFactors:_config.width / screenSize.width
y:_config.height / screenSize.height];
VideoDecoderRenderer* renderer = [[VideoDecoderRenderer alloc]initWithView:_renderView];
_connection = [[Connection alloc] initWithConfig:_config renderer:renderer connectionCallbacks:_callbacks];
NSOperationQueue* opQueue = [[NSOperationQueue alloc] init];