提交 53a039a8 编写于 作者: S sushuang

tweak hover style setting for text.

上级 fd0c3a78
...@@ -14,7 +14,7 @@ define(function (require) { ...@@ -14,7 +14,7 @@ define(function (require) {
if (labelModel.get('show')) { if (labelModel.get('show')) {
setLabel( setLabel(
normalStyle, labelModel, color, normalStyle, labelModel, color,
zrUtil.retrieve( zrUtil.retrieve2(
seriesModel.getFormattedLabel(dataIndex, 'normal'), seriesModel.getFormattedLabel(dataIndex, 'normal'),
seriesModel.getRawValue(dataIndex) seriesModel.getRawValue(dataIndex)
), ),
...@@ -27,13 +27,9 @@ define(function (require) { ...@@ -27,13 +27,9 @@ define(function (require) {
if (hoverLabelModel.get('show')) { if (hoverLabelModel.get('show')) {
setLabel( setLabel(
hoverStyle, hoverLabelModel, color, hoverStyle, hoverLabelModel, false,
zrUtil.retrieve( seriesModel.getFormattedLabel(dataIndex, 'emphasis'),
seriesModel.getFormattedLabel(dataIndex, 'emphasis'), labelPositionOutside
seriesModel.getRawValue(dataIndex)
),
labelPositionOutside,
true
); );
} }
else { else {
...@@ -41,8 +37,8 @@ define(function (require) { ...@@ -41,8 +37,8 @@ define(function (require) {
} }
}; };
function setLabel(style, model, color, labelText, labelPositionOutside, isEmphasis) { function setLabel(style, model, defaultColor, labelText, labelPositionOutside) {
graphic.setText(style, model, color, isEmphasis); graphic.setText(style, model, defaultColor);
style.text = labelText; style.text = labelText;
if (style.textPosition === 'outside') { if (style.textPosition === 'outside') {
style.textPosition = labelPositionOutside; style.textPosition = labelPositionOutside;
......
...@@ -340,10 +340,15 @@ define(function (require) { ...@@ -340,10 +340,15 @@ define(function (require) {
var opacity = data.getItemVisual(dataIndexInside, 'opacity'); var opacity = data.getItemVisual(dataIndexInside, 'opacity');
opacity != null && (itemStyle.opacity = opacity); opacity != null && (itemStyle.opacity = opacity);
labelHelper.setTextToStyle( if (currLabelValueDim != null) {
data, dataIndexInside, currLabelValueDim, itemStyle, graphicUtil.setText(itemStyle, currLabelNormalModel, currVisualColor);
customSeries, currLabelNormalModel, currVisualColor itemStyle.text = currLabelNormalModel.getShallow('show')
); ? zrUtil.retrieve2(
customSeries.getFormattedLabel(dataIndexInside, 'normal'),
data.get(currLabelValueDim, dataIndexInside)
)
: null;
}
extra && zrUtil.extend(itemStyle, extra); extra && zrUtil.extend(itemStyle, extra);
return itemStyle; return itemStyle;
...@@ -360,10 +365,12 @@ define(function (require) { ...@@ -360,10 +365,12 @@ define(function (require) {
var itemStyle = currItemModel.getModel(ITEM_STYLE_EMPHASIS_PATH).getItemStyle(); var itemStyle = currItemModel.getModel(ITEM_STYLE_EMPHASIS_PATH).getItemStyle();
labelHelper.setTextToStyle( if (currLabelValueDim != null) {
data, dataIndexInside, currLabelValueDim, itemStyle, graphicUtil.setText(itemStyle, currLabelEmphasisModel, false);
customSeries, currLabelEmphasisModel, currVisualColor, true itemStyle.text = currLabelEmphasisModel.getShallow('show')
); ? customSeries.getFormattedLabel(dataIndexInside, 'emphasis')
: null;
}
extra && zrUtil.extend(itemStyle, extra); extra && zrUtil.extend(itemStyle, extra);
return itemStyle; return itemStyle;
......
...@@ -38,19 +38,6 @@ define(function (require) { ...@@ -38,19 +38,6 @@ define(function (require) {
var funnelPieceProto = FunnelPiece.prototype; var funnelPieceProto = FunnelPiece.prototype;
function setLabelStyle(style, data, idx, state, labelModel, specifiedStyle, isEmphasis) {
var position = labelModel.get('position');
var isLabelInside = position === 'inside' || position === 'inner' || position === 'center';
return graphic.setTextStyle(style, labelModel, zrUtil.extend({
textFill: labelModel.getTextColor()
|| (isLabelInside ? '#fff' : data.getItemVisual(idx, 'color')),
text: zrUtil.retrieve(
data.hostModel.getFormattedLabel(idx, state),
data.getName(idx)
)
}, specifiedStyle), {forMerge: isEmphasis});
}
var opacityAccessPath = ['itemStyle', 'normal', 'opacity']; var opacityAccessPath = ['itemStyle', 'normal', 'opacity'];
funnelPieceProto.updateData = function (data, idx, firstCreate) { funnelPieceProto.updateData = function (data, idx, firstCreate) {
...@@ -141,10 +128,15 @@ define(function (require) { ...@@ -141,10 +128,15 @@ define(function (require) {
var labelLineModel = itemModel.getModel('labelLine.normal'); var labelLineModel = itemModel.getModel('labelLine.normal');
var labelLineHoverModel = itemModel.getModel('labelLine.emphasis'); var labelLineHoverModel = itemModel.getModel('labelLine.emphasis');
setLabelStyle(labelText.style, data, idx, 'normal', labelModel, { graphic.setTextStyle(labelText.style, labelModel, {
textAlign: labelLayout.textAlign, textAlign: labelLayout.textAlign,
textVerticalAlign: labelLayout.verticalAlign, textVerticalAlign: labelLayout.verticalAlign,
textFont: labelLayout.font text: zrUtil.retrieve(data.hostModel.getFormattedLabel(idx, 'normal'), data.getName(idx))
}, {
defaultTextColor: data.getItemVisual(idx, 'color'),
getDefaultTextColor: function (model, opt) {
return labelLayout.inside ? '#fff' : opt.defaultTextColor;
}
}); });
labelText.ignore = labelText.normalIgnore = !labelModel.get('show'); labelText.ignore = labelText.normalIgnore = !labelModel.get('show');
...@@ -159,7 +151,10 @@ define(function (require) { ...@@ -159,7 +151,10 @@ define(function (require) {
}); });
labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle()); labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());
labelText.hoverStyle = setLabelStyle({}, data, idx, 'emphasis', labelHoverModel, true); labelText.hoverStyle = graphic.setTextStyle({}, labelHoverModel, {
text: data.hostModel.getFormattedLabel(idx, 'emphasis')
}, {forMerge: true});
labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle(); labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();
}; };
......
...@@ -35,7 +35,7 @@ define(function (require) { ...@@ -35,7 +35,7 @@ define(function (require) {
return indices; return indices;
} }
function labelLayout (data) { function labelLayout(data) {
data.each(function (idx) { data.each(function (idx) {
var itemModel = data.getItemModel(idx); var itemModel = data.getItemModel(idx);
var labelModel = itemModel.getModel('label.normal'); var labelModel = itemModel.getModel('label.normal');
......
...@@ -191,14 +191,16 @@ define(function (require) { ...@@ -191,14 +191,16 @@ define(function (require) {
if (rawValue && rawValue[2] != null) { if (rawValue && rawValue[2] != null) {
defaultText = rawValue[2]; defaultText = rawValue[2];
} }
if (labelModel.getShallow('show')) {
graphic.setText(style, labelModel); graphic.setText(style, labelModel);
style.text = seriesModel.getFormattedLabel(idx, 'normal') || defaultText; style.text = labelModel.getShallow('show')
} ? seriesModel.getFormattedLabel(idx, 'normal') || defaultText
if (hoverLabelModel.getShallow('show')) { : null;
graphic.setText(hoverStl, hoverLabelModel, null, true);
hoverStl.text = seriesModel.getFormattedLabel(idx, 'emphasis') || defaultText; graphic.setText(hoverStl, hoverLabelModel, false);
} hoverStl.text = hoverLabelModel.getShallow('show')
? seriesModel.getFormattedLabel(idx, 'emphasis')
: null;
rect.setStyle(style); rect.setStyle(style);
......
...@@ -264,7 +264,7 @@ define(function (require) { ...@@ -264,7 +264,7 @@ define(function (require) {
} }
var visualColor = lineData.getItemVisual(idx, 'color'); var visualColor = lineData.getItemVisual(idx, 'color');
var visualOpacity = zrUtil.retrieve( var visualOpacity = zrUtil.retrieve3(
lineData.getItemVisual(idx, 'opacity'), lineData.getItemVisual(idx, 'opacity'),
lineStyle.opacity, lineStyle.opacity,
1 1
...@@ -312,12 +312,11 @@ define(function (require) { ...@@ -312,12 +312,11 @@ define(function (require) {
// label.afterUpdate = lineAfterUpdate; // label.afterUpdate = lineAfterUpdate;
if (showLabel) { if (showLabel) {
var labelStyle = graphic.setTextStyle(label.style, labelModel, { var labelStyle = graphic.setTextStyle(label.style, labelModel, {
text: zrUtil.retrieve( text: zrUtil.retrieve2(
seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType), seriesModel.getFormattedLabel(idx, 'normal', lineData.dataType),
defaultText defaultText
), )
textFill: labelModel.getTextColor() || defaultLabelColor }, {defaultTextColor: defaultLabelColor});
});
label.__textAlign = labelStyle.textAlign; label.__textAlign = labelStyle.textAlign;
label.__verticalAlign = labelStyle.textVerticalAlign; label.__verticalAlign = labelStyle.textVerticalAlign;
...@@ -327,13 +326,19 @@ define(function (require) { ...@@ -327,13 +326,19 @@ define(function (require) {
label.setStyle('text', null); label.setStyle('text', null);
} }
if (hoverShowLabel) { if (hoverShowLabel) {
// Only these properties supported in this emphasis style here.
label.hoverStyle = { label.hoverStyle = {
text: zrUtil.retrieve( text: zrUtil.retrieve2(
seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType), seriesModel.getFormattedLabel(idx, 'emphasis', lineData.dataType),
defaultText defaultText
), ),
textFont: hoverLabelModel.getFont(), textFill: hoverLabelModel.getTextColor(true),
textFill: hoverLabelModel.getTextColor() || defaultLabelColor // For merging hover style to normal style, do not use
// `hoverLabelModel.getFont()` here.
fontStyle: hoverLabelModel.getShallow('fontStyle'),
fontWeight: hoverLabelModel.getShallow('fontWeight'),
fontSize: hoverLabelModel.getShallow('fontSize'),
fontFamily: hoverLabelModel.getShallow('fontFamily')
}; };
} }
else { else {
......
...@@ -224,12 +224,21 @@ define(function (require) { ...@@ -224,12 +224,21 @@ define(function (require) {
} }
var valueDim = labelHelper.findLabelValueDim(data); var valueDim = labelHelper.findLabelValueDim(data);
labelHelper.setTextToStyle(
data, idx, valueDim, elStyle, seriesModel, labelModel, color if (valueDim != null) {
); graphic.setText(elStyle, labelModel, color);
labelHelper.setTextToStyle( elStyle.text = labelModel.getShallow('show')
data, idx, valueDim, hoverItemStyle, seriesModel, hoverLabelModel, color, true ? zrUtil.retrieve2(
); seriesModel.getFormattedLabel(idx, 'normal'),
data.get(valueDim, idx)
)
: null;
graphic.setText(hoverItemStyle, hoverLabelModel, false);
hoverItemStyle.text = hoverLabelModel.getShallow('show')
? seriesModel.getFormattedLabel(idx, 'emphasis')
: null;
}
symbolPath.off('mouseover') symbolPath.off('mouseover')
.off('mouseout') .off('mouseout')
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
define(function (require) { define(function (require) {
var graphic = require('../../util/graphic'); var graphic = require('../../util/graphic');
var zrUtil = require('zrender/core/util');
var modelUtil = require('../../util/model'); var modelUtil = require('../../util/model');
var helper = {}; var helper = {};
...@@ -30,20 +29,5 @@ define(function (require) { ...@@ -30,20 +29,5 @@ define(function (require) {
return valueDim; return valueDim;
}; };
helper.setTextToStyle = function (
data, dataIndex, valueDim, elStyle, seriesModel, labelModel, color, isEmphasis
) {
if (valueDim != null && labelModel.getShallow('show')) {
graphic.setText(elStyle, labelModel, color, isEmphasis);
elStyle.text = zrUtil.retrieve(
seriesModel.getFormattedLabel(dataIndex, 'normal'),
data.get(valueDim, dataIndex)
);
}
else {
elStyle.text = null;
}
};
return helper; return helper;
}); });
\ No newline at end of file
...@@ -119,15 +119,13 @@ define(function (require) { ...@@ -119,15 +119,13 @@ define(function (require) {
var onEmphasis = function () { var onEmphasis = function () {
graphic.setTextStyle(circle.style, hoverLabelModel, { graphic.setTextStyle(circle.style, hoverLabelModel, {
text: hoverLabelModel.get('show') ? labelText : null, text: hoverLabelModel.get('show') ? labelText : null
textFill: hoverLabelModel.getTextColor()
}, {isRectText: true, forMerge: true}); }, {isRectText: true, forMerge: true});
}; };
var onNormal = function () { var onNormal = function () {
graphic.setTextStyle(circle.style, labelModel, { graphic.setTextStyle(circle.style, labelModel, {
text: labelModel.get('show') ? labelText : null, text: labelModel.get('show') ? labelText : null
textFill: labelModel.getTextColor()
}, {isRectText: true}); }, {isRectText: true});
}; };
......
...@@ -96,18 +96,6 @@ define(function (require) { ...@@ -96,18 +96,6 @@ define(function (require) {
var piePieceProto = PiePiece.prototype; var piePieceProto = PiePiece.prototype;
function setLabelStyle(style, data, idx, state, labelModel, labelPosition, specifiedStyle, isEmphasis) {
var isLabelInside = labelPosition === 'inside' || labelPosition === 'inner';
return graphic.setTextStyle(style, labelModel, zrUtil.extend({
textFill: labelModel.getTextColor()
|| (isLabelInside ? '#fff' : data.getItemVisual(idx, 'color')),
opacity: data.getItemVisual(idx, 'opacity'),
text: zrUtil.retrieve(
data.hostModel.getFormattedLabel(idx, state), data.getName(idx)
)
}, specifiedStyle), {forMerge: isEmphasis});
}
piePieceProto.updateData = function (data, idx, firstCreate) { piePieceProto.updateData = function (data, idx, firstCreate) {
var sector = this.childAt(0); var sector = this.childAt(0);
...@@ -241,12 +229,17 @@ define(function (require) { ...@@ -241,12 +229,17 @@ define(function (require) {
var labelHoverModel = itemModel.getModel('label.emphasis'); var labelHoverModel = itemModel.getModel('label.emphasis');
var labelLineModel = itemModel.getModel('labelLine.normal'); var labelLineModel = itemModel.getModel('labelLine.normal');
var labelLineHoverModel = itemModel.getModel('labelLine.emphasis'); var labelLineHoverModel = itemModel.getModel('labelLine.emphasis');
var labelPosition = labelModel.get('position') || labelHoverModel.get('position');
setLabelStyle(labelText.style, data, idx, 'normal', labelModel, labelPosition, { graphic.setTextStyle(labelText.style, labelModel, {
textVerticalAlign: labelLayout.verticalAlign, textVerticalAlign: labelLayout.verticalAlign,
textAlign: labelLayout.textAlign, textAlign: labelLayout.textAlign,
textFont: labelLayout.font opacity: data.getItemVisual(idx, 'opacity'),
text: zrUtil.retrieve(data.hostModel.getFormattedLabel(idx, 'normal'), data.getName(idx))
}, {
defaultTextColor: data.getItemVisual(idx, 'color'),
getDefaultTextColor: function (model, opt) {
return labelLayout.inside ? '#fff' : opt.defaultTextColor;
}
}); });
labelText.ignore = labelText.normalIgnore = !labelModel.get('show'); labelText.ignore = labelText.normalIgnore = !labelModel.get('show');
...@@ -262,7 +255,10 @@ define(function (require) { ...@@ -262,7 +255,10 @@ define(function (require) {
}); });
labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle()); labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());
labelText.hoverStyle = setLabelStyle({}, data, idx, 'emphasis', labelHoverModel, labelPosition, true); labelText.hoverStyle = graphic.setTextStyle({}, labelHoverModel, {
text: data.hostModel.getFormattedLabel(idx, 'emphasis')
}, {forMerge: true});
labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle(); labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();
var smooth = labelLineModel.get('smooth'); var smooth = labelLineModel.get('smooth');
......
...@@ -211,8 +211,8 @@ define(function (require) { ...@@ -211,8 +211,8 @@ define(function (require) {
linePoints: linePoints, linePoints: linePoints,
textAlign: textAlign, textAlign: textAlign,
verticalAlign: 'middle', verticalAlign: 'middle',
font: font, rotation: labelRotate,
rotation: labelRotate inside: isLabelInside
}; };
// Not layout the inside label // Not layout the inside label
......
...@@ -187,13 +187,10 @@ define(function (require) { ...@@ -187,13 +187,10 @@ define(function (require) {
: null : null
}); });
graphic.setText(symbolPath.hoverStyle, labelHoverModel, color, true); graphic.setText(symbolPath.hoverStyle, labelHoverModel, true);
symbolPath.hoverStyle.text = labelHoverModel.get('show') symbolPath.hoverStyle.text = labelHoverModel.get('show')
? zrUtil.retrieve( ? seriesModel.getFormattedLabel(
seriesModel.getFormattedLabel( idx, 'emphasis', null, symbolPath.__dimIdx
idx, 'emphasis', null, symbolPath.__dimIdx
),
defaultText
) )
: null; : null;
}); });
......
...@@ -135,19 +135,17 @@ define(function (require) { ...@@ -135,19 +135,17 @@ define(function (require) {
text: labelModel.get('show') text: labelModel.get('show')
? seriesModel.getFormattedLabel(node.dataIndex, 'normal') || node.id ? seriesModel.getFormattedLabel(node.dataIndex, 'normal') || node.id
// Use empty string to hide the label // Use empty string to hide the label
: null, : null
textFill: labelModel.getTextColor()
}, {isRectText: true}); }, {isRectText: true});
rect.setStyle('fill', node.getVisual('color')); rect.setStyle('fill', node.getVisual('color'));
var hoverStyle = node.getModel('itemStyle.emphasis').getItemStyle();
graphic.setHoverStyle(rect, zrUtil.extend( graphic.setHoverStyle(rect, zrUtil.extend(
node.getModel('itemStyle.emphasis').getItemStyle(), graphic.setTextStyle(hoverStyle, labelHoverModel, {
graphic.setTextStyle({}, labelHoverModel, {
text: labelHoverModel.get('show') text: labelHoverModel.get('show')
? seriesModel.getFormattedLabel(node.dataIndex, 'emphasis') || node.id ? seriesModel.getFormattedLabel(node.dataIndex, 'emphasis')
: null, : null
textFill: labelHoverModel.getTextColor()
}, {isRectText: true, forMerge: true}) }, {isRectText: true, forMerge: true})
)); ));
......
...@@ -135,7 +135,6 @@ define(function (require) { ...@@ -135,7 +135,6 @@ define(function (require) {
? seriesModel.getFormattedLabel(indices[j - 1], 'normal') ? seriesModel.getFormattedLabel(indices[j - 1], 'normal')
|| data.getName(indices[j - 1]) || data.getName(indices[j - 1])
: null, : null,
textFill: labelModel.getTextColor(),
textVerticalAlign: 'middle' textVerticalAlign: 'middle'
}); });
......
...@@ -812,37 +812,32 @@ ...@@ -812,37 +812,32 @@
text = iconChar ? iconChar + ' ' + text : text; text = iconChar ? iconChar + ' ' + text : text;
} }
setText( var normalLabelModel = nodeModel.getModel(
text, normalStyle, nodeModel, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL, upperLabelRect ? PATH_UPPERLABEL_NORMAL : PATH_LABEL_NOAMAL
visualColor, width, height, upperLabelRect
); );
setText( graphic.setText(normalStyle, normalLabelModel, visualColor);
text, emphasisStyle, nodeModel, upperLabelRect ? PATH_UPPERLABEL_EMPHASIS : PATH_LABEL_EMPHASIS,
visualColor, width, height, upperLabelRect, true
);
}
function setText(text, style, nodeModel, labelPath, visualColor, width, height, upperLabelRect, isEmphasis) {
var labelModel = nodeModel.getModel(labelPath);
graphic.setText(style, labelModel, visualColor, isEmphasis); upperLabelRect && (normalStyle.textPositionRect = zrUtil.clone(upperLabelRect));
upperLabelRect && (style.textPositionRect = zrUtil.clone(upperLabelRect)); var textRect = normalLabelModel.getTextRect(text);
if (!normalLabelModel.getShallow('show') || textRect.height > height) {
var textRect = labelModel.getTextRect(text); normalStyle.text = null;
if (!labelModel.getShallow('show') || textRect.height > height) {
style.text = null;
} }
else if (textRect.width > width) { else if (textRect.width > width) {
style.text = labelModel.get('ellipsis') normalStyle.text = normalLabelModel.get('ellipsis')
? labelModel.truncateText( ? normalLabelModel.truncateText(
text, width, null, {minChar: 2} text, width, null, {minChar: 2}
) )
: null; : null;
} }
else { else {
style.text = text; normalStyle.text = text;
} }
var emphasisLabelModel = nodeModel.getModel(
upperLabelRect ? PATH_UPPERLABEL_EMPHASIS : PATH_UPPERLABEL_EMPHASIS
);
graphic.setText(emphasisStyle, emphasisLabelModel, false);
} }
function giveGraphic(storageName, Ctor, depth, z) { function giveGraphic(storageName, Ctor, depth, z) {
......
...@@ -315,10 +315,7 @@ define(function (require) { ...@@ -315,10 +315,7 @@ define(function (require) {
this._yearTextPositionControl(posPoints[pos], orient, pos, margin) this._yearTextPositionControl(posPoints[pos], orient, pos, margin)
) )
); );
graphic.setTextStyle(yearText.style, yearLabel, { graphic.setTextStyle(yearText.style, yearLabel, {text: content});
text: content,
textFill: yearLabel.getTextColor()
});
group.add(yearText); group.add(yearText);
}, },
...@@ -408,10 +405,7 @@ define(function (require) { ...@@ -408,10 +405,7 @@ define(function (require) {
var monthText = new graphic.Text({z2: 30}); var monthText = new graphic.Text({z2: 30});
zrUtil.extend( zrUtil.extend(
graphic.setTextStyle(monthText.style, monthLabel, { graphic.setTextStyle(monthText.style, monthLabel, {text: content}),
text: content,
textFill: monthLabel.getTextColor()
}),
this._monthTextPositionControl(tmp, isCenter, orient, pos, margin) this._monthTextPositionControl(tmp, isCenter, orient, pos, margin)
); );
...@@ -484,10 +478,7 @@ define(function (require) { ...@@ -484,10 +478,7 @@ define(function (require) {
var weekText = new graphic.Text({z2: 30}); var weekText = new graphic.Text({z2: 30});
zrUtil.extend( zrUtil.extend(
graphic.setTextStyle(weekText.style, dayLabel, { graphic.setTextStyle(weekText.style, dayLabel, {text: nameMap[day]}),
text: nameMap[day],
textFill: dayLabel.getTextColor()
}),
this._weekTextPositionControl(point, orient, pos, margin, cellSize) this._weekTextPositionControl(point, orient, pos, margin, cellSize)
); );
group.add(weekText); group.add(weekText);
......
...@@ -247,14 +247,12 @@ define(function (require) { ...@@ -247,14 +247,12 @@ define(function (require) {
graphic.setTextStyle(textEl.style, labelModel, { graphic.setTextStyle(textEl.style, labelModel, {
text: showLabel ? (formattedStr || region.name) : null, text: showLabel ? (formattedStr || region.name) : null,
textFill: labelModel.getTextColor(),
textAlign: 'center', textAlign: 'center',
textVerticalAlign: 'middle' textVerticalAlign: 'middle'
}); });
graphic.setTextStyle(textEl.hoverStyle = {}, hoverLabelModel, { graphic.setTextStyle(textEl.hoverStyle = {}, hoverLabelModel, {
text: hoverShowLabel ? (hoverFormattedStr || region.name) : null, text: hoverShowLabel ? (hoverFormattedStr || region.name) : null
textFill: hoverLabelModel.getTextColor()
}, {forMerge: true}); }, {forMerge: true});
regionGroup.add(textEl); regionGroup.add(textEl);
......
...@@ -226,27 +226,18 @@ define(function (require) { ...@@ -226,27 +226,18 @@ define(function (require) {
var defaultValue = areaData.getName(idx) || ''; var defaultValue = areaData.getName(idx) || '';
var textColor = color || polygon.style.fill; var textColor = color || polygon.style.fill;
if (labelModel.getShallow('show')) { graphic.setText(polygon.style, labelModel, textColor);
graphic.setText(polygon.style, labelModel, textColor); polygon.style.text = labelModel.getShallow('show')
polygon.style.text = zrUtil.retrieve( ? zrUtil.retrieve(
maModel.getFormattedLabel(idx, 'normal'), maModel.getFormattedLabel(idx, 'normal'),
defaultValue defaultValue
); )
} : null;
else {
polygon.style.text = null;
}
if (labelHoverModel.getShallow('show')) { graphic.setText(polygon.hoverStyle, labelHoverModel, false);
graphic.setTextStyle(polygon.hoverStyle, labelHoverModel, textColor, true); polygon.hoverStyle.text = labelHoverModel.getShallow('show')
polygon.hoverStyle.text = zrUtil.retrieve( ? maModel.getFormattedLabel(idx, 'emphasis')
maModel.getFormattedLabel(idx, 'emphasis'), : null;
defaultValue
);
}
else {
polygon.hoverStyle.text = null;
}
graphic.setHoverStyle(polygon, {}); graphic.setHoverStyle(polygon, {});
......
...@@ -403,17 +403,16 @@ define(function (require) { ...@@ -403,17 +403,16 @@ define(function (require) {
var hoverLabelModel = itemModel.getModel('label.emphasis'); var hoverLabelModel = itemModel.getModel('label.emphasis');
var tickCoord = axis.dataToCoord(tick); var tickCoord = axis.dataToCoord(tick);
var textEl = new graphic.Text({ var textEl = new graphic.Text({
style: graphic.setTextStyle({}, normalLabelModel, {
text: labels[dataIndex],
textAlign: layoutInfo.labelAlign,
textVerticalAlign: layoutInfo.labelBaseline,
textFill: normalLabelModel.getTextColor()
}),
position: [tickCoord, 0], position: [tickCoord, 0],
rotation: layoutInfo.labelRotation - layoutInfo.rotation, rotation: layoutInfo.labelRotation - layoutInfo.rotation,
onclick: bind(this._changeTimeline, this, dataIndex), onclick: bind(this._changeTimeline, this, dataIndex),
silent: false silent: false
}); });
graphic.setTextStyle(textEl.style, normalLabelModel, {
text: labels[dataIndex],
textAlign: layoutInfo.labelAlign,
textVerticalAlign: layoutInfo.labelBaseline
});
group.add(textEl); group.add(textEl);
graphic.setHoverStyle( graphic.setHoverStyle(
......
...@@ -133,7 +133,7 @@ define(function (require) { ...@@ -133,7 +133,7 @@ define(function (require) {
y: -itemSize / 2, y: -itemSize / 2,
width: itemSize, width: itemSize,
height: itemSize height: itemSize
} }
); );
path.setStyle(iconStyleModel.getModel('normal').getItemStyle()); path.setStyle(iconStyleModel.getModel('normal').getItemStyle());
path.hoverStyle = iconStyleModel.getModel('emphasis').getItemStyle(); path.hoverStyle = iconStyleModel.getModel('emphasis').getItemStyle();
...@@ -181,7 +181,7 @@ define(function (require) { ...@@ -181,7 +181,7 @@ define(function (require) {
// May be background element // May be background element
if (hoverStyle && titleText) { if (hoverStyle && titleText) {
var rect = textContain.getBoundingRect( var rect = textContain.getBoundingRect(
titleText, hoverStyle.font titleText, textContain.makeFont(hoverStyle)
); );
var offsetX = icon.position[0] + group.position[0]; var offsetX = icon.position[0] + group.position[0];
var offsetY = icon.position[1] + group.position[1] + itemSize; var offsetY = icon.position[1] + group.position[1] + itemSize;
......
...@@ -8,12 +8,13 @@ define(function (require) { ...@@ -8,12 +8,13 @@ define(function (require) {
return { return {
/** /**
* Get color property or get color from option.textStyle.color * Get color property or get color from option.textStyle.color
* @param {boolean} [noDefault]
* @return {string} * @return {string}
*/ */
getTextColor: function () { getTextColor: function (noDefault) {
var ecModel = this.ecModel; var ecModel = this.ecModel;
return this.getShallow('color') return this.getShallow('color')
|| (ecModel && ecModel.get(PATH_COLOR)); || (!noDefault && ecModel && ecModel.get(PATH_COLOR));
}, },
/** /**
......
...@@ -16,6 +16,8 @@ define(function(require) { ...@@ -16,6 +16,8 @@ define(function(require) {
var mathMax = Math.max; var mathMax = Math.max;
var mathMin = Math.min; var mathMin = Math.min;
var EMPTY_OBJ = {};
var graphic = {}; var graphic = {};
graphic.Group = require('zrender/container/Group'); graphic.Group = require('zrender/container/Group');
...@@ -265,10 +267,10 @@ define(function(require) { ...@@ -265,10 +267,10 @@ define(function(require) {
// }, // },
// where properties of `emphasis` may not appear in `normal`. We previously use // where properties of `emphasis` may not appear in `normal`. We previously use
// module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`. // module:echarts/util/model#defaultEmphasis to merge `normal` to `emphasis`.
// But consider rich text, it is impossible to cover all properties in merge. // But consider rich text and setOption in merge mode, it is impossible to cover
// So we use merge mode when setting style here, where only properties that // all properties in merge. So we use merge mode when setting style here, where
// is not `null/undefined` can be set. The disadventage: null/undefined can not // only properties that is not `null/undefined` can be set. The disadventage:
// be used to remove style any more in `emphasis`. // null/undefined can not be used to remove style any more in `emphasis`.
el.style.extendFrom(el.__hoverStl); el.style.extendFrom(el.__hoverStl);
el.dirty(false); el.dirty(false);
el.z2 += 1; el.z2 += 1;
...@@ -415,56 +417,68 @@ define(function(require) { ...@@ -415,56 +417,68 @@ define(function(require) {
/** /**
* Set basic textStyle properties. * Set basic textStyle properties.
* @param {Object|module:zrender/graphic/Style} style * @param {Object|module:zrender/graphic/Style} textStyle
* @param {module:echarts/model/Model} model * @param {module:echarts/model/Model} model
* @param {Object} [specifiedTextStyle] Can be overrided by settings in model. * @param {Object} [specifiedTextStyle] Can be overrided by settings in model.
* @param {Object} [opt] See `opt` of `setTextStyleCommon`. * @param {Object} [opt] See `opt` of `setTextStyleCommon`.
*/ */
graphic.setTextStyle = function (style, textStyleModel, specifiedTextStyle, opt) { graphic.setTextStyle = function (textStyle, textStyleModel, specifiedTextStyle, opt) {
setTextStyleCommon(style, textStyleModel, opt); setTextStyleCommon(textStyle, textStyleModel, opt);
specifiedTextStyle && zrUtil.extend(style, specifiedTextStyle); specifiedTextStyle && zrUtil.extend(textStyle, specifiedTextStyle);
style.dirty && style.dirty(); textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);
return style; return textStyle;
}; };
/** /**
* Set text option in the style * Set text option in the style
* @param {Object} textStyle * @param {Object} textStyle
* @param {module:echarts/model/Model} labelModel * @param {module:echarts/model/Model} labelModel
* @param {string} color * @param {string|boolean} defaultColor Default text color.
* @param {boolean} isEmphasis * If set as false, it will be processed as a emphasis style.
*/ */
graphic.setText = function (textStyle, labelModel, color, isEmphasis) { graphic.setText = function (textStyle, labelModel, defaultColor) {
setTextStyleCommon(textStyle, labelModel, { var opt = {isRectText: true};
isRectText: true, if (defaultColor === false) {
forMerge: isEmphasis, opt.forMerge = true;
defaultTextColor: color }
}); else {
opt.defaultTextColor = defaultColor;
opt.getDefaultTextColor = getDefaultTextColorForSetText;
}
setTextStyleCommon(textStyle, labelModel, opt);
textStyle.host && textStyle.host.dirty && textStyle.host.dirty(false);
}; };
function getDefaultTextColorForSetText(labelModel, opt, textPosition) {
return (textPosition && textPosition.indexOf('inside') >= 0)
? '#fff'
: opt.defaultTextColor;
}
/** /**
* { * {
* disableBox: boolean, Whether diable drawing box of block (outer most). * disableBox: boolean, Whether diable drawing box of block (outer most).
* isRectText: boolean, * isRectText: boolean,
* autoColor: string, specify a color when color is 'auto', * autoColor: string, specify a color when color is 'auto',
* for textFill, textStroke, textBackgroundColor, and textBorderColor, * for textFill, textStroke, textBackgroundColor, and textBorderColor,
* defaultTextColor: defaultTextColor, * defaultTextColor: string,
* getDefaultTextColor: function, higher priority than `defaultTextColor`.
* forceRich: boolean, * forceRich: boolean,
* forMerge: boolean * forMerge: boolean
* } * }
*/ */
function setTextStyleCommon(textStyle, textStyleModel, opt) { function setTextStyleCommon(textStyle, textStyleModel, opt) {
// Consider there will be abnormal when merge hover style to normal style if given default value. // Consider there will be abnormal when merge hover style to normal style if given default value.
var forMerge = opt && opt.forMerge; opt = opt || EMPTY_OBJ;
if (opt && opt.isRectText) { if (opt.isRectText) {
textStyle.textPosition = textStyleModel.getShallow('position') || (forMerge ? null : 'inside'); textStyle.textPosition = textStyleModel.getShallow('position') || (opt.forMerge ? null : 'inside');
textStyle.textOffset = textStyleModel.getShallow('offset'); textStyle.textOffset = textStyleModel.getShallow('offset');
var labelRotate = textStyleModel.getShallow('rotate'); var labelRotate = textStyleModel.getShallow('rotate');
labelRotate != null && (labelRotate *= Math.PI / 180); labelRotate != null && (labelRotate *= Math.PI / 180);
textStyle.textRotation = labelRotate; textStyle.textRotation = labelRotate;
textStyle.textDistance = textStyleModel.getShallow('distance') || (forMerge ? null : 5); textStyle.textDistance = textStyleModel.getShallow('distance') || (opt.forMerge ? null : 5);
} }
var ecModel = textStyleModel.ecModel; var ecModel = textStyleModel.ecModel;
...@@ -487,29 +501,38 @@ define(function(require) { ...@@ -487,29 +501,38 @@ define(function(require) {
setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, true); setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, true);
if (opt && opt.forceRich && !opt.textStyle) { if (opt.forceRich && !opt.textStyle) {
opt.textStyle = {}; opt.textStyle = {};
} }
return textStyle; return textStyle;
} }
function setTokenTextStyle(textStyle, textStyleModel, globalTextStyle, opt, isBlock) { function setTokenTextStyle(textStyle, textStyleModel, defaultTextStyle, opt, isBlock) {
var textPosition = textStyle.textPosition; var textPosition = textStyle.textPosition;
textStyle.textFill = getAutoColor(textStyleModel.getTextColor(), opt) || ( // In merge mode, default value should not be given.
(opt && opt.forMerge) defaultTextStyle = !opt.forMerge && defaultTextStyle || EMPTY_OBJ;
textStyle.textFill = getAutoColor(textStyleModel.getTextColor(opt.forMerge), opt) || (
opt.forMerge
? null ? null
: (textPosition && textPosition.indexOf('inside') >= 0) : opt.getDefaultTextColor
? '#fff' ? opt.getDefaultTextColor(textStyleModel, opt, textPosition)
: (opt && opt.defaultTextColor) : opt.defaultTextColor
); );
textStyle.textStroke = getAutoColor( textStyle.textStroke = getAutoColor(
textStyleModel.getShallow('textBorderColor') textStyleModel.getShallow('textBorderColor') || defaultTextStyle.textBorderColor
|| (globalTextStyle && globalTextStyle.textBorderColor)
); );
textStyle.textLineWidth = textStyleModel.getShallow('textBorderWidth'); textStyle.textLineWidth = textStyleModel.getShallow('textBorderWidth');
textStyle.textFont = textStyleModel.getFont();
// Do not use `getFont` here, because merge should be supported, where
// part of these properties may be changed in emphasis style, and the
// others should remain their original value got from normal style.
textStyle.fontStyle = textStyleModel.getShallow('fontStyle') || defaultTextStyle.fontStyle;
textStyle.fontWeight = textStyleModel.getShallow('fontWeight') || defaultTextStyle.fontWeight;
textStyle.fontSize = textStyleModel.getShallow('fontSize') || defaultTextStyle.fontSize;
textStyle.fontFamily = textStyleModel.getShallow('fontFamily') || defaultTextStyle.fontFamily;
textStyle.textAlign = textStyleModel.getShallow('align'); textStyle.textAlign = textStyleModel.getShallow('align');
textStyle.textVerticalAlign = textStyleModel.getShallow('verticalAlign') textStyle.textVerticalAlign = textStyleModel.getShallow('verticalAlign')
...@@ -520,7 +543,7 @@ define(function(require) { ...@@ -520,7 +543,7 @@ define(function(require) {
textStyle.textHeight = textStyleModel.getShallow('height'); textStyle.textHeight = textStyleModel.getShallow('height');
textStyle.textTag = textStyleModel.getShallow('tag'); textStyle.textTag = textStyleModel.getShallow('tag');
if (!opt || !isBlock || !opt.disableBox) { if (!isBlock || !opt.disableBox) {
textStyle.textBackgroundColor = getAutoColor(textStyleModel.getShallow('backgroundColor'), opt); textStyle.textBackgroundColor = getAutoColor(textStyleModel.getShallow('backgroundColor'), opt);
textStyle.textPadding = textStyleModel.getShallow('padding'); textStyle.textPadding = textStyleModel.getShallow('padding');
textStyle.textBorderColor = getAutoColor(textStyleModel.getShallow('borderColor'), opt); textStyle.textBorderColor = getAutoColor(textStyleModel.getShallow('borderColor'), opt);
...@@ -534,13 +557,13 @@ define(function(require) { ...@@ -534,13 +557,13 @@ define(function(require) {
} }
textStyle.textShadowColor = textStyleModel.getShallow('textShadowColor') textStyle.textShadowColor = textStyleModel.getShallow('textShadowColor')
|| (globalTextStyle && globalTextStyle.textShadowColor); || defaultTextStyle.textShadowColor;
textStyle.textShadowBlur = textStyleModel.getShallow('textShadowBlur') textStyle.textShadowBlur = textStyleModel.getShallow('textShadowBlur')
|| (globalTextStyle && globalTextStyle.textShadowBlur); || defaultTextStyle.textShadowBlur;
textStyle.textShadowOffsetX = textStyleModel.getShallow('textShadowOffsetX') textStyle.textShadowOffsetX = textStyleModel.getShallow('textShadowOffsetX')
|| (globalTextStyle && globalTextStyle.textShadowOffsetX); || defaultTextStyle.textShadowOffsetX;
textStyle.textShadowOffsetY = textStyleModel.getShallow('textShadowOffsetY') textStyle.textShadowOffsetY = textStyleModel.getShallow('textShadowOffsetY')
|| (globalTextStyle && globalTextStyle.textShadowOffsetY); || defaultTextStyle.textShadowOffsetY;
} }
function getAutoColor(color, opt) { function getAutoColor(color, opt) {
...@@ -548,7 +571,8 @@ define(function(require) { ...@@ -548,7 +571,8 @@ define(function(require) {
} }
graphic.getFont = function (opt, ecModel) { graphic.getFont = function (opt, ecModel) {
var gTextStyleModel = ecModel && ecModel.getModel('textStyle'); // ecModel or default text style model.
var gTextStyleModel = ecModel || ecModel.getModel('textStyle');
return [ return [
// FIXME in node-canvas fontWeight is before fontStyle // FIXME in node-canvas fontWeight is before fontStyle
opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '', opt.fontStyle || gTextStyleModel && gTextStyleModel.getShallow('fontStyle') || '',
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册