You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by ov...@apache.org on 2022/07/26 06:47:12 UTC

[echarts] branch fix-subpixel created (now 749b64e94)

This is an automated email from the ASF dual-hosted git repository.

ovilia pushed a change to branch fix-subpixel
in repository https://gitbox.apache.org/repos/asf/echarts.git


      at 749b64e94 fix(bar-race): provide subPixelOptimize option to solve #14679

This branch includes the following new commits:

     new 749b64e94 fix(bar-race): provide subPixelOptimize option to solve #14679

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org


[echarts] 01/01: fix(bar-race): provide subPixelOptimize option to solve #14679

Posted by ov...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ovilia pushed a commit to branch fix-subpixel
in repository https://gitbox.apache.org/repos/asf/echarts.git

commit 749b64e94d53ecc5e4ac4fc217762cae86c2fc5b
Author: Ovilia <zw...@gmail.com>
AuthorDate: Tue Jul 26 14:46:14 2022 +0800

    fix(bar-race): provide subPixelOptimize option to solve #14679
---
 src/component/axis/AxisBuilder.ts       | 24 ++++++++++++++++--------
 src/component/axis/CartesianAxisView.ts | 14 ++++++++++++--
 src/component/axis/SingleAxisView.ts    |  7 ++++++-
 src/coord/axisCommonTypes.ts            |  1 +
 test/bar-race.html                      |  3 ++-
 5 files changed, 37 insertions(+), 12 deletions(-)

diff --git a/src/component/axis/AxisBuilder.ts b/src/component/axis/AxisBuilder.ts
index b0e31e08f..e338453ed 100644
--- a/src/component/axis/AxisBuilder.ts
+++ b/src/component/axis/AxisBuilder.ts
@@ -343,13 +343,17 @@ const builders: Record<'axisLine' | 'axisTickLabel' | 'axisName', AxisElementsBu
     },
 
     axisTickLabel(opt, axisModel, group, transformGroup) {
+        let subPixelOptimize = axisModel.get('subPixelOptimize');
+        if (subPixelOptimize == null) {
+            subPixelOptimize = true;
+        }
 
-        const ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt);
+        const ticksEls = buildAxisMajorTicks(group, transformGroup, axisModel, opt, subPixelOptimize);
         const labelEls = buildAxisLabel(group, transformGroup, axisModel, opt);
 
         fixMinMaxLabelShow(axisModel, labelEls, ticksEls);
 
-        buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection);
+        buildAxisMinorTicks(group, transformGroup, axisModel, opt.tickDirection, subPixelOptimize);
 
         // This bit fixes the label overlap issue for the time chart.
         // See https://github.com/apache/echarts/issues/14266 for more.
@@ -611,7 +615,8 @@ function createTicks(
     tickTransform: matrixUtil.MatrixArray,
     tickEndCoord: number,
     tickLineStyle: PathStyleProps,
-    anidPrefix: string
+    anidPrefix: string,
+    subPixelOptimize: boolean
 ) {
     const tickEls = [];
     const pt1: number[] = [];
@@ -630,7 +635,7 @@ function createTicks(
         }
         // Tick line, Not use group transform to have better line draw
         const tickEl = new graphic.Line({
-            subPixelOptimize: true,
+            subPixelOptimize,
             shape: {
                 x1: pt1[0],
                 y1: pt1[1],
@@ -652,7 +657,8 @@ function buildAxisMajorTicks(
     group: graphic.Group,
     transformGroup: graphic.Group,
     axisModel: AxisBaseModel,
-    opt: AxisBuilderCfg
+    opt: AxisBuilderCfg,
+    subPixelOptimize: boolean
 ) {
     const axis = axisModel.axis;
 
@@ -676,7 +682,7 @@ function buildAxisMajorTicks(
         {
             stroke: axisModel.get(['axisLine', 'lineStyle', 'color'])
         }
-    ), 'ticks');
+    ), 'ticks', subPixelOptimize);
 
     for (let i = 0; i < ticksEls.length; i++) {
         group.add(ticksEls[i]);
@@ -689,7 +695,8 @@ function buildAxisMinorTicks(
     group: graphic.Group,
     transformGroup: graphic.Group,
     axisModel: AxisBaseModel,
-    tickDirection: number
+    tickDirection: number,
+    subPixelOptimize: boolean
 ) {
     const axis = axisModel.axis;
 
@@ -719,7 +726,8 @@ function buildAxisMinorTicks(
 
     for (let i = 0; i < minorTicksCoords.length; i++) {
         const minorTicksEls = createTicks(
-            minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i
+            minorTicksCoords[i], transformGroup.transform, tickEndCoord, minorTickLineStyle, 'minorticks_' + i,
+            subPixelOptimize
         );
         for (let k = 0; k < minorTicksEls.length; k++) {
             group.add(minorTicksEls[k]);
diff --git a/src/component/axis/CartesianAxisView.ts b/src/component/axis/CartesianAxisView.ts
index e04039890..e1a74b6df 100644
--- a/src/component/axis/CartesianAxisView.ts
+++ b/src/component/axis/CartesianAxisView.ts
@@ -139,6 +139,12 @@ const axisElementBuilders: Record<typeof selfBuilderAttrs[number], AxisElementBu
         const p2 = [];
 
         const lineStyle = lineStyleModel.getLineStyle();
+
+        let subPixelOptimize = axisModel.get('subPixelOptimize');
+        if (subPixelOptimize == null) {
+            subPixelOptimize = true;
+        }
+
         for (let i = 0; i < ticksCoords.length; i++) {
             const tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);
 
@@ -159,7 +165,7 @@ const axisElementBuilders: Record<typeof selfBuilderAttrs[number], AxisElementBu
             const tickValue = ticksCoords[i].tickValue;
             axisGroup.add(new graphic.Line({
                 anid: tickValue != null ? 'line_' + ticksCoords[i].tickValue : null,
-                subPixelOptimize: true,
+                subPixelOptimize,
                 autoBatch: true,
                 shape: {
                     x1: p1[0],
@@ -193,6 +199,10 @@ const axisElementBuilders: Record<typeof selfBuilderAttrs[number], AxisElementBu
 
         const lineStyle = lineStyleModel.getLineStyle();
 
+        let subPixelOptimize = axisModel.get('subPixelOptimize');
+        if (subPixelOptimize == null) {
+            subPixelOptimize = true;
+        }
 
         for (let i = 0; i < minorTicksCoords.length; i++) {
             for (let k = 0; k < minorTicksCoords[i].length; k++) {
@@ -213,7 +223,7 @@ const axisElementBuilders: Record<typeof selfBuilderAttrs[number], AxisElementBu
 
                 axisGroup.add(new graphic.Line({
                     anid: 'minor_line_' + minorTicksCoords[i][k].tickValue,
-                    subPixelOptimize: true,
+                    subPixelOptimize,
                     autoBatch: true,
                     shape: {
                         x1: p1[0],
diff --git a/src/component/axis/SingleAxisView.ts b/src/component/axis/SingleAxisView.ts
index 06cf5e326..d206fc8cd 100644
--- a/src/component/axis/SingleAxisView.ts
+++ b/src/component/axis/SingleAxisView.ts
@@ -109,6 +109,11 @@ const axisElementBuilders: Record<typeof selfBuilderAttrs[number], AxisElementBu
         const p1 = [];
         const p2 = [];
 
+        let subPixelOptimize = axisModel.get('subPixelOptimize');
+        if (subPixelOptimize == null) {
+            subPixelOptimize = true;
+        }
+
         for (let i = 0; i < ticksCoords.length; ++i) {
             const tickCoord = axis.toGlobalCoord(ticksCoords[i].coord);
             if (isHorizontal) {
@@ -126,7 +131,7 @@ const axisElementBuilders: Record<typeof selfBuilderAttrs[number], AxisElementBu
             const colorIndex = (lineCount++) % lineColors.length;
             splitLines[colorIndex] = splitLines[colorIndex] || [];
             splitLines[colorIndex].push(new graphic.Line({
-                subPixelOptimize: true,
+                subPixelOptimize,
                 shape: {
                     x1: p1[0],
                     y1: p1[1],
diff --git a/src/coord/axisCommonTypes.ts b/src/coord/axisCommonTypes.ts
index e3241cb02..a3309a18c 100644
--- a/src/coord/axisCommonTypes.ts
+++ b/src/coord/axisCommonTypes.ts
@@ -63,6 +63,7 @@ export interface AxisBaseOptionCommon extends ComponentOption,
     splitLine?: SplitLineOption;
     minorSplitLine?: MinorSplitLineOption;
     splitArea?: SplitAreaOption;
+    subPixelOptimize?: boolean;
 
     /**
      * Min value of the axis. can be:
diff --git a/test/bar-race.html b/test/bar-race.html
index 766ae138e..9916d7738 100644
--- a/test/bar-race.html
+++ b/test/bar-race.html
@@ -75,7 +75,8 @@ under the License.
                         formatter: function (n) {
                             return Math.round(n);
                         }
-                    }
+                    },
+                    subPixelOptimize: false
                 },
                 dataset: {
                     source: data.slice(1).filter(d => {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org