UNPKG

imagemagick-async

Version:
153 lines (131 loc) 3.05 kB
let Path = require('path'); let PathParts = __dirname.split(Path.sep); let index = PathParts.indexOf('imagemagick-async'); let RootDir = PathParts.slice(0, index + 1).join(Path.sep); let Err = require(Path.join(RootDir, 'error.js')); let Filepath = require(Path.join(RootDir, 'filepath.js')).Filepath; let DisplaceBaseClass = require(Path.join(Filepath.TransformDisplaceDir(), 'displacebaseclass.js')).DisplaceBaseClass; //----------------------------------- class Offset extends DisplaceBaseClass { constructor(builder) { super(builder); } /** * @override */ static get Builder() { class Builder { constructor() { this.name = 'Offset'; this.args = {}; } /** * @param {string} str */ source(str) { this.args.source = str; return this; } /** * @param {Coordinates} coordinates */ start(coordinates) { this.args.start = coordinates; return this; } /** * @param {Coordinates} coordinates */ end(coordinates) { this.args.end = coordinates; return this; } build() { return new Offset(this); } } return new Builder(); } /** * @override */ Args() { return ['-virtual-pixel', 'transparent', '-distort', 'Affine', `${this.args.start.String()} ${this.args.end.String()}`]; } /** * @override */ Errors() { let params = Offset.Parameters(); let errors = []; let prefix = 'OFFSET_DISPLACE_TRANSFORM_ERROR'; let sourceErr = Err.ErrorMessage.Builder .prefix(prefix) .varName('Source') .condition( new Err.StringCondition.Builder(this.args.source) .isempty(false) .isWhitespace(false) .build() ) .build() .String(); if (sourceErr) errors.push(sourceErr); let startErr = Err.ErrorMessage.Builder .prefix(prefix) .varName('Start') .condition( new Err.ObjectCondition.Builder(this.args.start) .typeName('Coordinates') .checkForErrors(true) .build() ) .build() .String(); if (startErr) errors.push(startErr); let endErr = Err.ErrorMessage.Builder .prefix(prefix) .varName('End') .condition( new Err.ObjectCondition.Builder(this.args.end) .typeName('Coordinates') .checkForErrors(true) .build() ) .build() .String(); if (endErr) errors.push(endErr); return errors; } /** * @override */ IsConsolidatable() { return true; } /** * @override */ static Parameters() { return { source: { type: 'string', required: true }, start: { type: 'Inputs.Coordinates', required: true }, end: { type: 'Inputs.Coordinates', required: true } }; } } //---------------------------- // EXDPORTS exports.Offset = Offset;