package.style.Stroke.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ol Show documentation
Show all versions of ol Show documentation
OpenLayers mapping library
The newest version!
/**
* @module ol/style/Stroke
*/
/**
* @typedef {Object} Options
* @property {import("../color.js").Color|import("../colorlike.js").ColorLike} [color] A color, gradient or pattern.
* See {@link module:ol/color~Color} and {@link module:ol/colorlike~ColorLike} for possible formats.
* Default null; if null, the Canvas/renderer default black will be used.
* @property {CanvasLineCap} [lineCap='round'] Line cap style: `butt`, `round`, or `square`.
* @property {CanvasLineJoin} [lineJoin='round'] Line join style: `bevel`, `round`, or `miter`.
* @property {Array} [lineDash] Line dash pattern. Default is `null` (no dash).
* @property {number} [lineDashOffset=0] Line dash offset.
* @property {number} [miterLimit=10] Miter limit.
* @property {number} [width] Width.
*/
/**
* @classdesc
* Set stroke style for vector features.
* Note that the defaults given are the Canvas defaults, which will be used if
* option is not defined. The `get` functions return whatever was entered in
* the options; they will not return the default.
* @api
*/
class Stroke {
/**
* @param {Options} [options] Options.
*/
constructor(options) {
options = options || {};
/**
* @private
* @type {import("../color.js").Color|import("../colorlike.js").ColorLike}
*/
this.color_ = options.color !== undefined ? options.color : null;
/**
* @private
* @type {CanvasLineCap|undefined}
*/
this.lineCap_ = options.lineCap;
/**
* @private
* @type {Array|null}
*/
this.lineDash_ = options.lineDash !== undefined ? options.lineDash : null;
/**
* @private
* @type {number|undefined}
*/
this.lineDashOffset_ = options.lineDashOffset;
/**
* @private
* @type {CanvasLineJoin|undefined}
*/
this.lineJoin_ = options.lineJoin;
/**
* @private
* @type {number|undefined}
*/
this.miterLimit_ = options.miterLimit;
/**
* @private
* @type {number|undefined}
*/
this.width_ = options.width;
}
/**
* Clones the style.
* @return {Stroke} The cloned style.
* @api
*/
clone() {
const color = this.getColor();
return new Stroke({
color: Array.isArray(color) ? color.slice() : color || undefined,
lineCap: this.getLineCap(),
lineDash: this.getLineDash() ? this.getLineDash().slice() : undefined,
lineDashOffset: this.getLineDashOffset(),
lineJoin: this.getLineJoin(),
miterLimit: this.getMiterLimit(),
width: this.getWidth(),
});
}
/**
* Get the stroke color.
* @return {import("../color.js").Color|import("../colorlike.js").ColorLike} Color.
* @api
*/
getColor() {
return this.color_;
}
/**
* Get the line cap type for the stroke.
* @return {CanvasLineCap|undefined} Line cap.
* @api
*/
getLineCap() {
return this.lineCap_;
}
/**
* Get the line dash style for the stroke.
* @return {Array|null} Line dash.
* @api
*/
getLineDash() {
return this.lineDash_;
}
/**
* Get the line dash offset for the stroke.
* @return {number|undefined} Line dash offset.
* @api
*/
getLineDashOffset() {
return this.lineDashOffset_;
}
/**
* Get the line join type for the stroke.
* @return {CanvasLineJoin|undefined} Line join.
* @api
*/
getLineJoin() {
return this.lineJoin_;
}
/**
* Get the miter limit for the stroke.
* @return {number|undefined} Miter limit.
* @api
*/
getMiterLimit() {
return this.miterLimit_;
}
/**
* Get the stroke width.
* @return {number|undefined} Width.
* @api
*/
getWidth() {
return this.width_;
}
/**
* Set the color.
*
* @param {import("../color.js").Color|import("../colorlike.js").ColorLike} color Color.
* @api
*/
setColor(color) {
this.color_ = color;
}
/**
* Set the line cap.
*
* @param {CanvasLineCap|undefined} lineCap Line cap.
* @api
*/
setLineCap(lineCap) {
this.lineCap_ = lineCap;
}
/**
* Set the line dash.
*
* @param {Array|null} lineDash Line dash.
* @api
*/
setLineDash(lineDash) {
this.lineDash_ = lineDash;
}
/**
* Set the line dash offset.
*
* @param {number|undefined} lineDashOffset Line dash offset.
* @api
*/
setLineDashOffset(lineDashOffset) {
this.lineDashOffset_ = lineDashOffset;
}
/**
* Set the line join.
*
* @param {CanvasLineJoin|undefined} lineJoin Line join.
* @api
*/
setLineJoin(lineJoin) {
this.lineJoin_ = lineJoin;
}
/**
* Set the miter limit.
*
* @param {number|undefined} miterLimit Miter limit.
* @api
*/
setMiterLimit(miterLimit) {
this.miterLimit_ = miterLimit;
}
/**
* Set the width.
*
* @param {number|undefined} width Width.
* @api
*/
setWidth(width) {
this.width_ = width;
}
}
export default Stroke;