mirror of
https://github.com/DeviceFarmer/stf.git
synced 2026-04-20 12:55:26 +02:00
Start to add canvas auto-scaling for retina.
This commit is contained in:
@@ -1,6 +1,29 @@
|
||||
function CanvasRender(canvasElement, options) {
|
||||
this.options = options
|
||||
this.context = canvasElement.getContext('2d')
|
||||
|
||||
var devicePixelRatio = window.devicePixelRatio || 1
|
||||
|
||||
var backingStoreRatio = this.context.webkitBackingStorePixelRatio ||
|
||||
this.context.mozBackingStorePixelRatio ||
|
||||
this.context.msBackingStorePixelRatio ||
|
||||
this.context.oBackingStorePixelRatio ||
|
||||
this.context.backingStorePixelRatio || 1
|
||||
|
||||
this.frontBackRatio = devicePixelRatio / backingStoreRatio
|
||||
|
||||
if (options.autoScaleForRetina && devicePixelRatio !== backingStoreRatio) {
|
||||
var oldWidth = canvas.width;
|
||||
var oldHeight = canvas.height;
|
||||
|
||||
canvasElement.width = oldWidth * this.frontBackRatio
|
||||
canvasElement.height = oldHeight * this.frontBackRatio
|
||||
|
||||
canvasElement.style.width = oldWidth + 'px'
|
||||
canvasElement.style.height = oldHeight + 'px'
|
||||
|
||||
this.context.scale(this.frontBackRatio, this.frontBackRatio)
|
||||
}
|
||||
}
|
||||
|
||||
CanvasRender.prototype.draw = function (image) {
|
||||
|
||||
@@ -38,6 +38,7 @@ module.exports = function DeviceScreenDirective($document, ScalingService,
|
||||
, w: 0
|
||||
, h: 0
|
||||
}
|
||||
, autoScaleForRetina: true
|
||||
}
|
||||
|
||||
var cachedScreen = {
|
||||
@@ -59,7 +60,7 @@ module.exports = function DeviceScreenDirective($document, ScalingService,
|
||||
|
||||
function setDisplayDensity(forRetina) {
|
||||
// FORCE
|
||||
forRetina = 1.2
|
||||
forRetina = 1.5
|
||||
|
||||
guestDisplayDensity = BrowserInfo.retina ? forRetina : 1
|
||||
return guestDisplayDensity
|
||||
@@ -199,6 +200,11 @@ module.exports = function DeviceScreenDirective($document, ScalingService,
|
||||
if (scope.$parent.showScreen) {
|
||||
screen.rotation = device.display.rotation
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Check to set the size only if updated
|
||||
if (cachedScreen.bounds.w !== screen.bounds.w ||
|
||||
cachedScreen.bounds.h !== screen.bounds.h ||
|
||||
|
||||
Reference in New Issue
Block a user