DrawFaceLandmarks.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var FaceLandmarks_1 = require("../classes/FaceLandmarks");
  4. var FaceLandmarks68_1 = require("../classes/FaceLandmarks68");
  5. var getContext2dOrThrow_1 = require("../dom/getContext2dOrThrow");
  6. var WithFaceLandmarks_1 = require("../factories/WithFaceLandmarks");
  7. var drawContour_1 = require("./drawContour");
  8. var DrawFaceLandmarksOptions = /** @class */ (function () {
  9. function DrawFaceLandmarksOptions(options) {
  10. if (options === void 0) { options = {}; }
  11. var _a = options.drawLines, drawLines = _a === void 0 ? true : _a, _b = options.drawPoints, drawPoints = _b === void 0 ? true : _b, lineWidth = options.lineWidth, lineColor = options.lineColor, pointSize = options.pointSize, pointColor = options.pointColor;
  12. this.drawLines = drawLines;
  13. this.drawPoints = drawPoints;
  14. this.lineWidth = lineWidth || 1;
  15. this.pointSize = pointSize || 2;
  16. this.lineColor = lineColor || 'rgba(0, 255, 255, 1)';
  17. this.pointColor = pointColor || 'rgba(255, 0, 255, 1)';
  18. }
  19. return DrawFaceLandmarksOptions;
  20. }());
  21. exports.DrawFaceLandmarksOptions = DrawFaceLandmarksOptions;
  22. var DrawFaceLandmarks = /** @class */ (function () {
  23. function DrawFaceLandmarks(faceLandmarks, options) {
  24. if (options === void 0) { options = {}; }
  25. this.faceLandmarks = faceLandmarks;
  26. this.options = new DrawFaceLandmarksOptions(options);
  27. }
  28. DrawFaceLandmarks.prototype.draw = function (canvasArg) {
  29. var ctx = getContext2dOrThrow_1.getContext2dOrThrow(canvasArg);
  30. var _a = this.options, drawLines = _a.drawLines, drawPoints = _a.drawPoints, lineWidth = _a.lineWidth, lineColor = _a.lineColor, pointSize = _a.pointSize, pointColor = _a.pointColor;
  31. if (drawLines && this.faceLandmarks instanceof FaceLandmarks68_1.FaceLandmarks68) {
  32. ctx.strokeStyle = lineColor;
  33. ctx.lineWidth = lineWidth;
  34. drawContour_1.drawContour(ctx, this.faceLandmarks.getJawOutline());
  35. drawContour_1.drawContour(ctx, this.faceLandmarks.getLeftEyeBrow());
  36. drawContour_1.drawContour(ctx, this.faceLandmarks.getRightEyeBrow());
  37. drawContour_1.drawContour(ctx, this.faceLandmarks.getNose());
  38. drawContour_1.drawContour(ctx, this.faceLandmarks.getLeftEye(), true);
  39. drawContour_1.drawContour(ctx, this.faceLandmarks.getRightEye(), true);
  40. drawContour_1.drawContour(ctx, this.faceLandmarks.getMouth(), true);
  41. }
  42. if (drawPoints) {
  43. ctx.strokeStyle = pointColor;
  44. ctx.fillStyle = pointColor;
  45. var drawPoint = function (pt) {
  46. ctx.beginPath();
  47. ctx.arc(pt.x, pt.y, pointSize, 0, 2 * Math.PI);
  48. ctx.fill();
  49. };
  50. this.faceLandmarks.positions.forEach(drawPoint);
  51. }
  52. };
  53. return DrawFaceLandmarks;
  54. }());
  55. exports.DrawFaceLandmarks = DrawFaceLandmarks;
  56. function drawFaceLandmarks(canvasArg, faceLandmarks) {
  57. var faceLandmarksArray = Array.isArray(faceLandmarks) ? faceLandmarks : [faceLandmarks];
  58. faceLandmarksArray.forEach(function (f) {
  59. var landmarks = f instanceof FaceLandmarks_1.FaceLandmarks
  60. ? f
  61. : (WithFaceLandmarks_1.isWithFaceLandmarks(f) ? f.landmarks : undefined);
  62. if (!landmarks) {
  63. throw new Error('drawFaceLandmarks - expected faceExpressions to be FaceLandmarks | WithFaceLandmarks<WithFaceDetection<{}>> or array thereof');
  64. }
  65. new DrawFaceLandmarks(landmarks).draw(canvasArg);
  66. });
  67. }
  68. exports.drawFaceLandmarks = drawFaceLandmarks;
  69. //# sourceMappingURL=DrawFaceLandmarks.js.map