@quartic/bokehjs
Version:
Interactive, novel data visualization
129 lines (102 loc) • 2.75 kB
text/coffeescript
import {Annotation} from "./annotation"
import {Visuals} from "core/visuals"
import * as p from "core/properties"
export class ArrowHead extends Annotation
type: 'ArrowHead'
initialize: (options) ->
super(options)
= new Visuals(@)
render: (ctx, i) ->
null
clip: (ctx, i) ->
# This method should not begin or close a path
null
export class OpenHead extends ArrowHead
type: 'OpenHead'
clip: (ctx, i) ->
# This method should not begin or close a path
.line.set_vectorize(ctx, i)
ctx.moveTo(0.5*, )
ctx.lineTo(0.5*, -2)
ctx.lineTo(-0.5*, -2)
ctx.lineTo(-0.5*, )
ctx.lineTo(0, 0)
ctx.lineTo(0.5*, )
render: (ctx, i) ->
if .line.doit
.line.set_vectorize(ctx, i)
ctx.beginPath()
ctx.moveTo(0.5*, )
ctx.lineTo(0, 0)
ctx.lineTo(-0.5*, )
ctx.stroke()
['line']
{
size: [ p.Number, 25 ]
}
export class NormalHead extends ArrowHead
type: 'NormalHead'
clip: (ctx, i) ->
# This method should not begin or close a path
.line.set_vectorize(ctx, i)
ctx.moveTo(0.5*, )
ctx.lineTo(0.5*, -2)
ctx.lineTo(-0.5*, -2)
ctx.lineTo(-0.5*, )
ctx.lineTo(0.5*, )
render: (ctx, i) ->
if .fill.doit
.fill.set_vectorize(ctx, i)
ctx.fill()
if .line.doit
.line.set_vectorize(ctx, i)
ctx.stroke()
_normal: (ctx, i) ->
ctx.beginPath()
ctx.moveTo(0.5*, )
ctx.lineTo(0, 0)
ctx.lineTo(-0.5*, )
ctx.closePath()
['line', 'fill']
{
size: [ p.Number, 25 ]
}
{
fill_color: 'black'
}
export class VeeHead extends ArrowHead
type: 'VeeHead'
clip: (ctx, i) ->
# This method should not begin or close a path
.line.set_vectorize(ctx, i)
ctx.moveTo(0.5*, )
ctx.lineTo(0.5*, -2)
ctx.lineTo(-0.5*, -2)
ctx.lineTo(-0.5*, )
ctx.lineTo(0, 0.5*)
ctx.lineTo(0.5*, )
render: (ctx, i) ->
if .fill.doit
.fill.set_vectorize(ctx, i)
ctx.fill()
if .line.doit
.line.set_vectorize(ctx, i)
ctx.stroke()
_vee: (ctx, i) ->
ctx.beginPath()
ctx.moveTo(0.5*, )
ctx.lineTo(0, 0)
ctx.lineTo(-0.5*, )
ctx.lineTo(0, 0.5*)
ctx.closePath()
['line', 'fill']
{
size: [ p.Number, 25 ]
}
{
fill_color: 'black'
}