forked from enviPath/enviPy
97 lines
2.7 KiB
JavaScript
97 lines
2.7 KiB
JavaScript
/****************************************************************************
|
|
* Copyright 2017 EPAM Systems
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
***************************************************************************/
|
|
|
|
var utils = require('../editor/tool/utils');
|
|
var Vec2 = require('../util/vec2');
|
|
|
|
function defaultOptions(opt) {
|
|
const scaleFactor = opt.scale || 100;
|
|
|
|
if (opt.rotationStep)
|
|
utils.setFracAngle(opt.rotationStep);
|
|
|
|
const labelFontSize = Math.ceil(1.9 * (scaleFactor / 6));
|
|
const subFontSize = Math.ceil(0.7 * labelFontSize);
|
|
|
|
const defaultOptions = {
|
|
// flags for debugging
|
|
showAtomIds: false,
|
|
showBondIds: false,
|
|
showHalfBondIds: false,
|
|
showLoopIds: false,
|
|
// rendering customization flags
|
|
hideChiralFlag: false,
|
|
showValenceWarnings: true,
|
|
autoScale: false, // scale structure to fit into the given view box, used in view mode
|
|
autoScaleMargin: 0,
|
|
maxBondLength: 0, // 0 stands for "not specified"
|
|
atomColoring: true,
|
|
hideImplicitHydrogen: false,
|
|
hideTerminalLabels: false,
|
|
// atoms
|
|
carbonExplicitly: false,
|
|
showCharge: true,
|
|
showHydrogenLabels: 'on',
|
|
showValence: true,
|
|
// bonds
|
|
aromaticCircle: true,
|
|
|
|
scale: scaleFactor,
|
|
zoom: 1.0,
|
|
offset: new Vec2(),
|
|
|
|
lineWidth: scaleFactor / 20,
|
|
bondSpace: opt.doubleBondWidth || scaleFactor / 7,
|
|
stereoBond: opt.stereoBondWidth || scaleFactor / 7,
|
|
subFontSize: subFontSize,
|
|
font: '30px Arial',
|
|
fontsz: labelFontSize,
|
|
fontszsub: subFontSize,
|
|
fontRLabel: labelFontSize * 1.2,
|
|
fontRLogic: labelFontSize * 0.7,
|
|
|
|
/* styles */
|
|
lineattr: {
|
|
'stroke': '#000',
|
|
'stroke-width': opt.bondThickness || scaleFactor / 20,
|
|
'stroke-linecap': 'round',
|
|
'stroke-linejoin': 'round'
|
|
},
|
|
/* eslint-enable quote-props */
|
|
selectionStyle: {
|
|
fill: '#7f7',
|
|
stroke: 'none'
|
|
},
|
|
highlightStyle: {
|
|
'stroke': '#0c0',
|
|
'stroke-width': 0.6 * scaleFactor / 20
|
|
},
|
|
sgroupBracketStyle: {
|
|
'stroke': 'darkgray',
|
|
'stroke-width': 0.5 * scaleFactor / 20
|
|
},
|
|
lassoStyle: {
|
|
'stroke': 'gray',
|
|
'stroke-width': '1px'
|
|
},
|
|
atomSelectionPlateRadius: labelFontSize * 1.2
|
|
};
|
|
|
|
return Object.assign({}, defaultOptions, opt);
|
|
}
|
|
|
|
module.exports = defaultOptions;
|