/*
* @Description: In User Settings Edit
* @Author: xiaoying
* @Date: 2019-09-10 16:19:14
* @LastEditTime: 2019-09-17 14:46:40
* @LastEditors: mayuanye
*/
import { NativeModules } from 'react-native';
import LineStyle from './LineStyle';
let FS = NativeModules.JSFillStyle;
/**
* @class FillStyle
* @description 区样式(纯色填充)
*/
export default class FillStyle {
/**
* 构造一个新的FillStyle对象,包含无参构造和有参构造两种方式。
* 有参构造参数为:颜色(String, eg:'rgba(128, 128, 128, 128)')、线样式(LineStyle类型的Object)。
*
* @memberof FillStyle
* @returns {Promise<FillStyle>}
*/
async createObj() {
try {
// 通过颜色、轮廓样式构造一个对象
if (
typeof arguments[0] === 'string' &&
typeof arguments[1] === 'object'
) {
let { FillStyleId } = await FS.createObjCL(
arguments[0],
arguments[1]._MGLineStyleId
);
let fillStyle = new FillStyle();
fillStyle._MGFillStyleId = FillStyleId;
return fillStyle;
} else {
let { FillStyleId } = await FS.createObj();
let fillStyle = new FillStyle();
fillStyle._MGFillStyleId = FillStyleId;
return fillStyle;
}
} catch (e) {
console.error(e);
}
}
// /**
// * 通过颜色、轮廓样式构造一个新的FillStyle对象
// *
// * @memberof FillStyle
// * @param {Number} color 填充颜色 (int类型的Number)
// * @param {Object} lineStyle 轮廓样式 (LineStyle类型的Object)
// * @returns {Promise<FillStyle>}
// */
// async createObjCL(color, lineStyle){
// try {
// } catch (e) {
// console.error(e);
// }
// }
/**
* 获取区样式填充色
*
* @memberof FillStyle
* @returns {String} 填充色
*/
async getColor() {
try {
let color = await FS.getColor(this._MGFillStyleId);
return color;
} catch (e) {
console.error(e);
}
}
/**
* 设置区样式的填充色
*
* @memberof FillStyle
* @param {String} color 填充色 eg:'rgba(128, 128, 128, 128)'
* @returns {Promise<Void>}
*/
async setColor(color) {
try {
await FS.setColor(this._MGFillStyleId, color);
} catch (e) {
console.error(e);
}
}
/**
* 获取轮廓样式(实线含颜色和宽度)
*
* @memberof FillStyle 轮廓样式
* @returns {Promise<LineStyle>}
*/
async getLineStyle() {
try {
var { LineStyleId } = await FS.getLineStyle(this._MGFillStyleId);
var lineStyle = new LineStyle();
lineStyle._MGLineStyleId = LineStyleId;
return lineStyle;
} catch (e) {
console.error(e);
}
}
/**
* 设置轮廓样式
*
* @memberof FillStyle
* @param {Object} lineStyle 轮廓样式(实线含颜色和宽度)
* @returns {Promise<Void>}
*/
async setLineStyle(lineStyle) {
try {
await FS.setLineStyle(this._MGFillStyleId, lineStyle._MGLineStyleId);
} catch (e) {
console.error(e);
}
}
}