79 lines
2.2 KiB
JavaScript
79 lines
2.2 KiB
JavaScript
/**
|
|
*
|
|
*/
|
|
export default class Paint {
|
|
/**
|
|
* @param {module:jGraduate.jGraduatePaintOptions} [opt]
|
|
*/
|
|
constructor (opt) {
|
|
const options = opt || {};
|
|
this.alpha = isNaN(options.alpha) ? 100 : options.alpha;
|
|
// copy paint object
|
|
if (options.copy) {
|
|
/**
|
|
* @name module:jGraduate~Paint#type
|
|
* @type {"none"|"solidColor"|"linearGradient"|"radialGradient"}
|
|
*/
|
|
this.type = options.copy.type;
|
|
/**
|
|
* Represents opacity (0-100).
|
|
* @name module:jGraduate~Paint#alpha
|
|
* @type {Float}
|
|
*/
|
|
this.alpha = options.copy.alpha;
|
|
/**
|
|
* Represents #RRGGBB hex of color.
|
|
* @name module:jGraduate~Paint#solidColor
|
|
* @type {string}
|
|
*/
|
|
this.solidColor = null;
|
|
/**
|
|
* @name module:jGraduate~Paint#linearGradient
|
|
* @type {SVGLinearGradientElement}
|
|
*/
|
|
this.linearGradient = null;
|
|
/**
|
|
* @name module:jGraduate~Paint#radialGradient
|
|
* @type {SVGRadialGradientElement}
|
|
*/
|
|
this.radialGradient = null;
|
|
|
|
switch (this.type) {
|
|
case 'none':
|
|
break;
|
|
case 'solidColor':
|
|
this.solidColor = options.copy.solidColor;
|
|
break;
|
|
case 'linearGradient':
|
|
this.linearGradient = options.copy.linearGradient.cloneNode(true);
|
|
break;
|
|
case 'radialGradient':
|
|
this.radialGradient = options.copy.radialGradient.cloneNode(true);
|
|
break;
|
|
}
|
|
// create linear gradient paint
|
|
} else if (options.linearGradient) {
|
|
this.type = 'linearGradient';
|
|
this.solidColor = null;
|
|
this.radialGradient = null;
|
|
this.linearGradient = options.linearGradient.cloneNode(true);
|
|
// create linear gradient paint
|
|
} else if (options.radialGradient) {
|
|
this.type = 'radialGradient';
|
|
this.solidColor = null;
|
|
this.linearGradient = null;
|
|
this.radialGradient = options.radialGradient.cloneNode(true);
|
|
// create solid color paint
|
|
} else if (options.solidColor) {
|
|
this.type = 'solidColor';
|
|
this.solidColor = options.solidColor;
|
|
// create empty paint
|
|
} else {
|
|
this.type = 'none';
|
|
this.solidColor = null;
|
|
this.linearGradient = null;
|
|
this.radialGradient = null;
|
|
}
|
|
}
|
|
}
|