@eyepop.ai/eyepop-render-2d 0.18.6 → 0.18.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,6 +39,7 @@ declare namespace Render2d {
39
39
  function renderMask(target?: string): RenderRule;
40
40
  function renderContour(target?: string): RenderRule;
41
41
  function renderFace(target?: string): RenderRule;
42
+ function renderKeypoints(target?: string): RenderRule;
42
43
  function renderHand(target?: string): RenderRule;
43
44
  function renderPose(target?: string): RenderRule;
44
45
  function renderTrail(durationSeconds?: number, traceDetails?: string | undefined, target?: string): RenderRule;
@@ -39,6 +39,7 @@ declare namespace Render2d {
39
39
  function renderMask(target?: string): RenderRule;
40
40
  function renderContour(target?: string): RenderRule;
41
41
  function renderFace(target?: string): RenderRule;
42
+ function renderKeypoints(target?: string): RenderRule;
42
43
  function renderHand(target?: string): RenderRule;
43
44
  function renderPose(target?: string): RenderRule;
44
45
  function renderTrail(durationSeconds?: number, traceDetails?: string | undefined, target?: string): RenderRule;
@@ -394,8 +394,8 @@ var RenderHand = class {
394
394
  }
395
395
  renderKeyPoints(keyPoints, fillColor, width, xOffset, yOffset, xScale, yScale) {
396
396
  const labelsToPoints = /* @__PURE__ */ new Map();
397
- let maxZ = 0;
398
- let minZ = 0;
397
+ let maxZ = 1;
398
+ let minZ = -1;
399
399
  for (let i2 = 0; i2 < keyPoints.points.length; i2++) {
400
400
  const keyPoint = keyPoints.points[i2];
401
401
  labelsToPoints.set(keyPoint.classLabel, keyPoint);
@@ -838,6 +838,76 @@ var RenderContour = class {
838
838
  }
839
839
  };
840
840
 
841
+ // render-keypoints.ts
842
+ var RenderKeyPoints = class {
843
+ start(context, style) {
844
+ this.context = context;
845
+ this.style = style;
846
+ }
847
+ draw(element, xOffset, yOffset, xScale, yScale, streamTime) {
848
+ if (element.keyPoints) {
849
+ const style = this.style;
850
+ if (!style) {
851
+ throw new Error("render() called before start()");
852
+ }
853
+ let fillColor = style.colors.primary_color;
854
+ for (let i = 0; i < element.keyPoints.length; i++) {
855
+ const keyPoints = element.keyPoints[i];
856
+ this.renderKeyPoints(keyPoints, fillColor, Math.max(element.width, element.height), xOffset, yOffset, xScale, yScale);
857
+ }
858
+ }
859
+ }
860
+ renderKeyPoints(keyPoints, fillColor, width, xOffset, yOffset, xScale, yScale) {
861
+ let maxZ = 1;
862
+ let minZ = -1;
863
+ for (let i2 = 0; i2 < keyPoints.points.length; i2++) {
864
+ const keyPoint = keyPoints.points[i2];
865
+ if (keyPoint.z) {
866
+ if (keyPoint.z > maxZ) {
867
+ maxZ = keyPoint.z;
868
+ }
869
+ if (keyPoint.z < minZ) {
870
+ minZ = keyPoint.z;
871
+ }
872
+ }
873
+ }
874
+ const context = this.context;
875
+ const style = this.style;
876
+ if (!context || !style) {
877
+ throw new Error("render() called before start()");
878
+ }
879
+ const MIN_RADIUS = 2;
880
+ const MAX_RADIUS = width / 40;
881
+ for (var i = 0; i < keyPoints.points.length; i++) {
882
+ const p = keyPoints.points[i];
883
+ const x = xOffset + p.x * xScale;
884
+ const y = yOffset + p.y * yScale;
885
+ const z = p.z ?? 0 * Math.max(xScale, yScale);
886
+ const radius = MAX_RADIUS - (z - minZ) * (MAX_RADIUS - MIN_RADIUS) / (maxZ - minZ);
887
+ context.beginPath();
888
+ context.arc(x, y, radius, 0, Math.PI * 2, false);
889
+ context.fillStyle = fillColor;
890
+ context.fill();
891
+ context.strokeStyle = style.colors.secondary_color;
892
+ context.stroke();
893
+ let label;
894
+ if (typeof p.visible == "undefined") {
895
+ label = p.classLabel;
896
+ } else {
897
+ label = `${p.classLabel} (${p.visible ? "visible" : "invisible"})`;
898
+ }
899
+ context.font = style.font;
900
+ context.fillStyle = "#ffffff";
901
+ context.textAlign = "left";
902
+ context.textBaseline = "top";
903
+ const tw = context.measureText(label);
904
+ let xPos = p.x * xScale + xOffset + radius;
905
+ let yPos = p.y * yScale + yOffset - (radius + tw.actualBoundingBoxAscent + tw.actualBoundingBoxDescent);
906
+ context.fillText(label, xPos, yPos);
907
+ }
908
+ }
909
+ };
910
+
841
911
  // index.ts
842
912
  var Render2d;
843
913
  ((Render2d2) => {
@@ -849,7 +919,7 @@ var Render2d;
849
919
  return { render: new RenderBlur(), target };
850
920
  }
851
921
  Render2d2.renderBlur = renderBlur;
852
- function renderBox(includeSecondaryLabels = false, target = "$.objects.*") {
922
+ function renderBox(includeSecondaryLabels = false, target = "$..objects.*") {
853
923
  return { render: new RenderBox(includeSecondaryLabels), target };
854
924
  }
855
925
  Render2d2.renderBox = renderBox;
@@ -865,6 +935,10 @@ var Render2d;
865
935
  return { render: new RenderFace(), target };
866
936
  }
867
937
  Render2d2.renderFace = renderFace;
938
+ function renderKeypoints(target = "$..objects[?(@.keyPoints)]") {
939
+ return { render: new RenderKeyPoints(), target };
940
+ }
941
+ Render2d2.renderKeypoints = renderKeypoints;
868
942
  function renderHand(target = '$..objects[?(@.classLabel=="hand circumference")]') {
869
943
  return { render: new RenderHand(), target };
870
944
  }