Fix transform for immediate rendering on canvas
If the canvas css transform does not match the frameState pixelRatio the drawing is at the wrong size.
This commit is contained in:
+4
-2
@@ -88,6 +88,8 @@ export function toContext(context, opt_options) {
|
|||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
export function getVectorContext(event) {
|
export function getVectorContext(event) {
|
||||||
|
// canvas may be at a different pixel ratio than frameState.pixelRatio
|
||||||
|
const canvasPixelRatio = event.inversePixelTransform[0];
|
||||||
const frameState = event.frameState;
|
const frameState = event.frameState;
|
||||||
const transform = multiplyTransform(
|
const transform = multiplyTransform(
|
||||||
event.inversePixelTransform.slice(),
|
event.inversePixelTransform.slice(),
|
||||||
@@ -95,7 +97,7 @@ export function getVectorContext(event) {
|
|||||||
);
|
);
|
||||||
const squaredTolerance = getSquaredTolerance(
|
const squaredTolerance = getSquaredTolerance(
|
||||||
frameState.viewState.resolution,
|
frameState.viewState.resolution,
|
||||||
frameState.pixelRatio
|
canvasPixelRatio
|
||||||
);
|
);
|
||||||
let userTransform;
|
let userTransform;
|
||||||
const userProjection = getUserProjection();
|
const userProjection = getUserProjection();
|
||||||
@@ -107,7 +109,7 @@ export function getVectorContext(event) {
|
|||||||
}
|
}
|
||||||
return new CanvasImmediateRenderer(
|
return new CanvasImmediateRenderer(
|
||||||
event.context,
|
event.context,
|
||||||
frameState.pixelRatio,
|
canvasPixelRatio,
|
||||||
frameState.extent,
|
frameState.extent,
|
||||||
transform,
|
transform,
|
||||||
frameState.viewState.rotation,
|
frameState.viewState.rotation,
|
||||||
|
|||||||
Reference in New Issue
Block a user