12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import { themeMouseColors } from "@/constant/help-style.ts";
- import { Transform } from "konva/lib/Util";
- import { BaseItem, generateSnapInfos, getBaseItem, getRectSnapPoints } from "../util.ts";
- import { getMouseColors } from "@/utils/colors.ts";
- import { AddMessage } from "@/core/hook/use-draw.ts";
- export { default as Component } from "./icon.vue";
- export { default as TempComponent } from "./temp-icon.vue";
- export const shapeName = "图例";
- export const defaultStyle = {
- coverFill: themeMouseColors.theme,
- coverOpcatiy: 0,
- strokeScaleEnabled: false,
- width: 80,
- height: 80,
- };
- export const addMode = "dot";
- export const getSnapInfos = (data: IconData) => {
- const tf = new Transform(data.mat);
- const w = data.width || defaultStyle.width;
- const h = data.height || defaultStyle.height;
- const points = getRectSnapPoints(w, h)
- return generateSnapInfos(
- points.map((v) => tf.point(v)),
- true,
- false
- );
- };
- export const getMouseStyle = (data: IconData) => {
- const fillStatus = getMouseColors(data.coverFill || defaultStyle.coverFill);
- const hCoverOpcaoty = data.coverOpcatiy ? data.coverOpcatiy : 0.3
- return {
- default: { coverFill: fillStatus.pub, coverOpcatiy: data.coverOpcatiy ||0 },
- hover: { coverFill: fillStatus.hover, coverOpcatiy: hCoverOpcaoty },
- press: { coverFill: fillStatus.press, coverOpcatiy: hCoverOpcaoty },
- };
- };
- export type IconData = Partial<typeof defaultStyle> &
- BaseItem & {
- fill?: string,
- stroke?: string,
- strokeWidth?: number,
- coverFill?: string;
- coverStroke?: string;
- coverStrokeWidth?: number;
- width: number;
- height: number;
- mat: number[];
- url: string;
- };
- export const dataToConfig = (data: IconData) => {
- return {
- ...defaultStyle,
- ...data,
- };
- };
- export const interactiveToData = (
- info: AddMessage<'icon'>,
- preset: Partial<IconData> = {}
- ): IconData | undefined => {
- if (info.cur) {
- return interactiveFixData(
- { ...getBaseItem(), ...preset } as unknown as IconData,
- info
- );
- }
- };
- export const interactiveFixData = (
- data: IconData,
- info: AddMessage<'icon'>
- ) => {
- const mat = new Transform().translate(info.cur!.x, info.cur!.y);
- data.mat = mat.m;
- return data;
- };
|