VexFlowTextMeasurer.ts 936 B

12345678910111213141516171819202122232425262728
  1. import {ITextMeasurer} from "../../Interfaces/ITextMeasurer";
  2. import {Fonts} from "../../../Common/Enums/Fonts";
  3. import {FontStyles} from "../../../Common/Enums/FontStyles";
  4. import {VexFlowConverter} from "./VexFlowConverter";
  5. /**
  6. * Created by Matthias on 21.06.2016.
  7. */
  8. export class VexFlowTextMeasurer implements ITextMeasurer {
  9. constructor() {
  10. let canvas: HTMLCanvasElement = document.createElement("canvas");
  11. this.context = canvas.getContext("2d");
  12. }
  13. // The context of a canvas used internally to compute font sizes
  14. private context: CanvasRenderingContext2D;
  15. /**
  16. *
  17. * @param text
  18. * @param font
  19. * @param style
  20. * @returns {number}
  21. */
  22. public computeTextWidthToHeightRatio(text: string, font: Fonts, style: FontStyles): number {
  23. this.context.font = VexFlowConverter.font(20, style, font);
  24. return this.context.measureText(text).width / 20;
  25. }
  26. }