(type: SvgCommandTypeAny, after: SvgItem | null, convert: boolean)
| 246 | } |
| 247 | |
| 248 | insert(type: SvgCommandTypeAny, after: SvgItem | null, convert: boolean) { |
| 249 | if (convert) { |
| 250 | if(after) { |
| 251 | this.focusedItem = |
| 252 | this.parsedPath.changeType(after, (after.relative ? type.toLowerCase() as SvgCommandTypeAny : type)); |
| 253 | this.afterModelChange(); |
| 254 | } |
| 255 | } else { |
| 256 | this.draggedIsNew = true; |
| 257 | const pts = this.targetPoints; |
| 258 | let point1: Point; |
| 259 | |
| 260 | let newItem: SvgItem | null = null; |
| 261 | if (after) { |
| 262 | point1 = after.targetLocation(); |
| 263 | } else if (pts.length === 0) { |
| 264 | newItem = SvgItem.Make(['M', '0', '0']); |
| 265 | this.parsedPath.insert(newItem); |
| 266 | point1 = new Point(0, 0); |
| 267 | } else { |
| 268 | point1 = pts[pts.length - 1]; |
| 269 | } |
| 270 | |
| 271 | if (type.toLowerCase() !== 'm' || !newItem) { |
| 272 | const relative = type.toLowerCase() === type; |
| 273 | const X = (relative ? 0 : point1.x).toString(); |
| 274 | const Y = (relative ? 0 : point1.y).toString(); |
| 275 | switch (type.toLocaleLowerCase()) { |
| 276 | case 'm': case 'l': case 't': |
| 277 | newItem = SvgItem.Make([type, X, Y]) ; break; |
| 278 | case 'h': |
| 279 | newItem = SvgItem.Make([type, X]) ; break; |
| 280 | case 'v': |
| 281 | newItem = SvgItem.Make([type, Y]) ; break; |
| 282 | case 's': case 'q': |
| 283 | newItem = SvgItem.Make([type, X , Y, X, Y]) ; break; |
| 284 | case 'c': |
| 285 | newItem = SvgItem.Make([type, X , Y, X, Y, X, Y]) ; break; |
| 286 | case 'a': |
| 287 | newItem = SvgItem.Make([type, '1' , '1', '0', '0', '0', X, Y]) ; break; |
| 288 | case 'z': |
| 289 | newItem = SvgItem.Make([type]); |
| 290 | } |
| 291 | if(newItem) { |
| 292 | this.parsedPath.insert(newItem, after ?? undefined); |
| 293 | } |
| 294 | } |
| 295 | this.setHistoryDisabled(true); |
| 296 | this.afterModelChange(); |
| 297 | |
| 298 | if(newItem) { |
| 299 | this.focusedItem = newItem; |
| 300 | this.draggedPoint = newItem.targetLocation(); |
| 301 | } |
| 302 | } |
| 303 | } |
| 304 | |
| 305 | zoomAuto() { |
no test coverage detected