Arrow System

PinePaper’s Arrow System creates configurable arrows with animated effects.

Creating Arrows

const arrow = app.arrowSystem.createArrow(
  [
    new paper.Point(100, 100),
    new paper.Point(200, 150),
    new paper.Point(300, 100)
  ],
  {
    lineColor: '#60a5fa',
    lineWidth: 3,
    style: 'smooth',
    headStyle: 'classic'
  }
);

Configuration Options

Option Type Default Description
lineColor string '#60a5fa' Path stroke color
lineWidth number 3 Path stroke width
style string 'straight' Path style
smoothness number 60 Smoothness for ‘smooth’ style
headStyle string 'classic' Arrowhead style
headSize number 1.0 Head size multiplier
boltEnabled boolean true Enable animated bolt
boltColor string '#fbbf24' Bolt/sparkle color
boltSpeed number 1.0 Bolt animation speed
boltSize number 2 Bolt size

Path Styles

Style Description
'straight' Direct line between points
'orthogonal' Right-angle segments
'smooth' Bezier curve through points

Arrowhead Styles

Style Description
'classic' Filled triangle (default)
'stealth' Diamond shape with notch
'open' V-shape stroke only
'none' No arrowhead

Updating Arrows

// Update global settings
app.arrowSystem.updateArrowSettings({
  headStyle: 'stealth',
  lineWidth: 5
});

Examples

Simple Arrow

app.arrowSystem.createArrow(
  [new paper.Point(100, 200), new paper.Point(400, 200)],
  { headStyle: 'classic' }
);

Curved Arrow with Bolt

app.arrowSystem.createArrow(
  [
    new paper.Point(100, 300),
    new paper.Point(250, 200),
    new paper.Point(400, 300)
  ],
  {
    style: 'smooth',
    smoothness: 80,
    boltEnabled: true,
    boltColor: '#22c55e',
    boltSpeed: 1.5
  }
);

Technical Diagram Arrow

app.arrowSystem.createArrow(
  [
    new paper.Point(100, 100),
    new paper.Point(100, 200),
    new paper.Point(300, 200)
  ],
  {
    style: 'orthogonal',
    headStyle: 'stealth',
    lineColor: '#374151'
  }
);