MCPcopy
hub / github.com/Yqnn/svg-path-editor / insert

Method insert

src/app/app.component.ts:248–303  ·  view source on GitHub ↗
(type: SvgCommandTypeAny, after: SvgItem | null, convert: boolean)

Source from the content-addressed store, hash-verified

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() {

Callers 1

onKeyDownMethod · 0.95

Calls 3

afterModelChangeMethod · 0.95
setHistoryDisabledMethod · 0.95
changeTypeMethod · 0.80

Tested by

no test coverage detected