Skip to content

Documentation / @finchart/core / DrawCommand

Type Alias: DrawCommand

DrawCommand = { points: readonly Point[]; style: LineStyle; type: "drawLine"; } | { shape: ShapeParams; type: "drawShape"; } | { params: TextParams; type: "drawText"; } | { area: PlotArea | null; type: "clip"; } | object & CustomDraw

Defined in: packages/core/src/render/types.ts:208

쌓아 둔 그리기 명령 하나. type으로 갈리는 유니온이라 재생부의 switch가 전수 검사를 받는다 — 새 명령을 더하면 처리 안 된 case를 컴파일러가 잡아 준다.

도형은 ShapeParams가 이미 shape로 갈리는 유니온이라 그대로 품는다. 판별자를 하나로 합치면 "drawShape:rect" 같은 문자열을 손으로 만들게 된다.

Union Members

Type Literal

{ points: readonly Point[]; style: LineStyle; type: "drawLine"; }


Type Literal

{ shape: ShapeParams; type: "drawShape"; }


Type Literal

{ params: TextParams; type: "drawText"; }


Type Literal

{ area: PlotArea | null; type: "clip"; }

여기부터 이 영역 밖은 그리지 않는다. null이면 해제.

명령이지 상태가 아니다 — 명령 목록이 곧 출력이라 다른 표면이 재생할 때도 같은 순서로 같은 경계가 서야 한다. 재생하는 쪽은 스택이 아니라 "지금 걸린 것 하나"만 들면 된다: 내는 쪽(Plot)이 pane마다 걸고 마지막에 푼다.


object & CustomDraw

코어가 모르는 그리기 — 확장이 자기 원시를 내는 자리다.

명령 집합이 자라면 전수 검사하는 소비자가 깨지므로 메이저 변경이다. 조립을 열어 둔 엔진에서 그라디언트 하나 때문에 서드파티가 메이저 릴리스를 기다리게 할 수 없어서, 이 문을 한 번만 낸다 — 이 변형이 들어오는 것은 메이저지만, 그 뒤로 어떤 원시가 늘어도 여기를 지나가므로 유니온은 다시 자라지 않는다.

재생하는 쪽은 셋 중 하나를 한다: 이름을 알면 그린다, 모르면 fallback을 재생한다, 그것도 없으면 건너뛴다 — 내는 쪽이 대신 그릴 것을 함께 싣는 편이 맞다.