0.2.7 • Published 4 years ago
@zakariamouhid/context-filter-polyfill v0.2.7
context-filter-polyfill
https://davidenke.github.io/context-filter-polyfill/
Polyfills CanvasRenderingContext2d.filter capability of adopting CSS3 filters to canvas contexts at least partially.
Successfully tested on
- macOS Safari
- iOS Safari
- Windows 10 IE11
- Windows 10 Edge 16-18
Supported filters
- url✗
- blur✔
- brightness✔
- contrast✔
- drop-shadow✔
- grayscale✔
- hue-rotate✔
- invert✔
- none✔
- opacity✔
- saturate✔
- sepia✔
See it in action
Just open the integration demo on Safari / iOS or IE11.
Strategy
The polyfill is applied by the following steps:
- monkey patching all properties of the CanvasRenderingContext2d
- monkey patching all getters and setters of the CanvasRenderingContext2d
- monkey patching all methods of the CanvasRenderingContext2d
These patches are proxying all changes to a offscreen canvas which applies the appropriate filter polyfills everytime a drawing function is called:
- clearRect
- drawImage
- fill
- fillRect
- fillText
- stroke
- strokeRect
- strokeText
The contents of the offscreen canvas are applied back to the original canvas and is then resetted.