You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
2.8 KiB
159 lines
2.8 KiB
// Copyright 2015 Yahoo! Inc.
|
|
// Copyrights licensed under the Mit License. See the accompanying LICENSE file for terms.
|
|
|
|
var Base = require('./base');
|
|
var utils = require('preceptor-core').utils;
|
|
|
|
var Color = require('./atoms/color');
|
|
var Rect = require('./atoms/rect');
|
|
|
|
/**
|
|
* @class BlockOut
|
|
* @extends Base
|
|
* @module Configuration
|
|
*
|
|
* @property {boolean} _visible
|
|
* @property {Color} _color
|
|
* @property {Rect} _area
|
|
*/
|
|
var BlockOut = Base.extend(
|
|
|
|
/**
|
|
* BlockOut constructor
|
|
*
|
|
* @param {object} options
|
|
* @param {boolean} options.visible
|
|
* @param {object|Color} options.color
|
|
* @param {object|Rect} options.area
|
|
* @constructor
|
|
*/
|
|
function (options) {
|
|
this.__super(options);
|
|
|
|
options = utils.deepExtend({
|
|
visible: false,
|
|
color: {},
|
|
area: {}
|
|
}, [options]);
|
|
|
|
this.setVisibility(options.visible);
|
|
this.setColor(options.color);
|
|
this.setAreaRect(options.area);
|
|
},
|
|
|
|
{
|
|
/**
|
|
* Is block-out visible in final result
|
|
*
|
|
* @method isVisible
|
|
* @return {boolean}
|
|
*/
|
|
isVisible: function () {
|
|
return this._visible;
|
|
},
|
|
|
|
/**
|
|
* Sets the visibility of the block-out in final result
|
|
*
|
|
* @method setVisibility
|
|
* @param {boolean} value
|
|
*/
|
|
setVisibility: function (value) {
|
|
this._visible = !!value;
|
|
},
|
|
|
|
|
|
/**
|
|
* Gets the color
|
|
*
|
|
* @method getColor
|
|
* @return {Color}
|
|
*/
|
|
getColor: function () {
|
|
return this._color;
|
|
},
|
|
|
|
/**
|
|
* Sets the color
|
|
*
|
|
* @method setColor
|
|
* @param {object|Color} value
|
|
*/
|
|
setColor: function (value) {
|
|
this._color = this._parseObject(value, Color, 'color');
|
|
},
|
|
|
|
|
|
/**
|
|
* Gets the area rectangle
|
|
*
|
|
* @method getAreaRect
|
|
* @return {Rect}
|
|
*/
|
|
getAreaRect: function () {
|
|
return this._area;
|
|
},
|
|
|
|
/**
|
|
* Sets the area rectangle
|
|
*
|
|
* @method setAreaRect
|
|
* @param {object|Rect} value
|
|
*/
|
|
setAreaRect: function (value) {
|
|
this._area = this._parseObject(value, Rect, 'rect');
|
|
},
|
|
|
|
|
|
/**
|
|
* Post-process image after creating result image base
|
|
*
|
|
* @method processImage
|
|
* @param {PNGImage} image
|
|
* @return {PNGImage}
|
|
*/
|
|
processImage: function (image) {
|
|
this._blockOut(image);
|
|
return image;
|
|
},
|
|
|
|
/**
|
|
* Blocks-out an area of the image
|
|
*
|
|
* @method _blockOut
|
|
* @param {PNGImage} image
|
|
* @private
|
|
*/
|
|
_blockOut: function (image) {
|
|
|
|
var rect,
|
|
coord,
|
|
color;
|
|
|
|
rect = this.getAreaRect().clone();
|
|
rect.limitCoordinates(new Rect({
|
|
x: 0,
|
|
y: 0,
|
|
width: image.getWidth(),
|
|
height: image.getHeight()
|
|
}));
|
|
|
|
coord = rect.getCoordinates();
|
|
color = this.getColor().getColor(true, true);
|
|
|
|
image.fillRect(coord.x, coord.y, coord.width, coord.height, color);
|
|
}
|
|
},
|
|
|
|
{
|
|
/**
|
|
* @property TYPE
|
|
* @type {string}
|
|
* @static
|
|
*/
|
|
TYPE: 'CONFIGURATION_BLOCK_OUT'
|
|
}
|
|
);
|
|
|
|
module.exports = BlockOut;
|