1
0
Fork 0
freesewing/sites/dev/docs/reference/macros/mirror
Joost De Cock ab3204f9f1 chore: Port FreeSewing.dev to docusaurus
The replaces the NextJS site powering FreeSewing.dev with a Docusaurus
setup. It's part of my efforts to simplify FreeSewing's setup so we can
focus on our core value proposition.
2024-09-28 13:13:48 +02:00
..
readme.mdx chore: Port FreeSewing.dev to docusaurus 2024-09-28 13:13:48 +02:00

---
title: mirror
---

The `mirror` macro allows you to mirror points and/or paths around a mirror line. 

It is provided by the [mirror plugin](/reference/plugins/mirror/), which is
part of [core-plugins](/reference/plugins/core) (so it is available by default).

## Signature

```js
macro('mirror', {
  Boolean clone,
  Array mirror,
  Function nameFormat,
  Array paths,
  Array points,
  String prefix,
})
```

## Example

<Example caption="An example of the mirror macro">
```js
({ Point, points, Path, paths, macro, part }) => {

  points.from = new Point(0,0)
  points.cp1 = new Point(10,20)
  points.cp2 = new Point(60,20)
  points.to = new Point(70,0)
  paths.example = new Path()
    .move(points.from)
    .curve(points.cp1, points.cp2, points.to)

  points.m1 =  new Point(20,0)
  points.m2 =  new Point(20,20)
  paths.mirror = new Path()
    .move(points.m1)
    .line(points.m2)
    .addClass('stroke-xm dashed stroke-lining')
  
  macro('mirror', {
    clone: true,
    mirror: [ points.m1, points.m2 ],
    paths: Object.keys(paths),
  })

  return part
}
```
</Example>

## Configuration

| Property     | Default    | Type       | Description |
|-------------:|------------|------------|-------------|
| `mirror`     |            | `array`    | Array with 2 [Point](/reference/api/point) objects that define the _mirror line_ |
| `clone`      | `true`     | `bool`     | Whether to clone mirrored points and or paths |
| `points`     |            | `array`    | An array of pointnames, the names of Points in the `points` array to mirror |
| `paths`      |            | `array`    | An array of pathnames, the names of Paths in the `paths` array to mirror |
| `prefix`     | `mirrored` | `string`   | A prefix to apply to the names of the clones points and or paths. Ignored if `nameFormat` is set |
| `nameFormat` |            | `function` | A method that receives the name of the path or point as a first argument and one of `path` or `point` as the second argument and should return the name for the cloned path and or point |