Skip to content
Merged

Release #2108

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 11 additions & 7 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,33 +1,37 @@
# 构建产物
# build
dist/
build/
lib/
esm/
coverage/
types/

# 依赖目录
# dependencies
node_modules/

# 配置文件
# configs
.commitlintrc.cjs
.eslintrc.cjs
.lintstagedrc.mjs
babel.config.mjs
rollup.config.mjs
vite.config.mjs
vite.config.js
jest.unit.config.js
jest.visual.config.js

# 大型包目录(可选择性排除)
# large packages
packages/g-devtool/
packages/g-webgpu-compiler/
packages/site/

# 测试文件
# tests
__tests__/
scripts/

# 其他
# docs
site/

# others
*.min.js
gui.min.js
gui.min.js
16 changes: 8 additions & 8 deletions README-zh_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,19 @@
- [webgpu-graph](https://g-next.antv.vision/zh/docs/api/gpgpu/webgpu-graph) 使用 GPU 加速的图分析算法库
- 可扩展的插件机制以及丰富的插件集:
- 渲染相关
- [g-plugin-canvas-renderer](https://g-next.antv.vision/zh/docs/plugins/canvas-renderer) 基于 Canvas2D 渲染 2D 图形
- [g-plugin-svg-renderer](https://g-next.antv.vision/zh/docs/plugins/svg-renderer) 基于 SVG 渲染 2D 图形
- [g-plugin-device-renderer](https://g-next.antv.vision/zh/docs/plugins/device-renderer) 基于 GPUDevice 渲染 2D 图形
- [g-plugin-html-renderer](https://g-next.antv.vision/zh/docs/plugins/html-renderer) 渲染 DOM 元素
- [canvas-renderer](https://g-next.antv.vision/zh/docs/plugins/canvas-renderer) 基于 Canvas2D 渲染 2D 图形
- [svg-renderer](https://g-next.antv.vision/zh/docs/plugins/svg-renderer) 基于 SVG 渲染 2D 图形
- [device-renderer](https://g-next.antv.vision/zh/docs/plugins/device-renderer) 基于 GPUDevice 渲染 2D 图形
- [html-renderer](https://g-next.antv.vision/zh/docs/plugins/html-renderer) 渲染 DOM 元素
- [g-plugin-3d](https://g-next.antv.vision/zh/docs/plugins/3d) 基于 g-plugin-device-renderer 扩展 3D 能力
- [g-plugin-rough-canvas-renderer](https://g-next.antv.vision/zh/docs/plugins/rough-canvas-renderer) 使用 [rough.js](https://roughjs.com/) 和 Canvs2D 进行手绘风格渲染
- [g-plugin-rough-svg-renderer](https://g-next.antv.vision/zh/docs/plugins/rough-svg-renderer) 使用 [rough.js](https://roughjs.com/) 和 SVG 进行手绘风格渲染
- [g-plugin-canvaskit-renderer](https://g-next.antv.vision/zh/docs/plugins/canvaskit-renderer) 基于 [Skia](https://skia.org/docs/user/modules/quickstart) 渲染 2D 图形
- [canvaskit-renderer](https://g-next.antv.vision/zh/docs/plugins/canvaskit-renderer) 基于 [Skia](https://skia.org/docs/user/modules/quickstart) 渲染 2D 图形
- 拾取
- [g-plugin-canvas-picker](https://g-next.antv.vision/zh/docs/plugins/canvas-picker) 基于 Canvas2D
- [g-plugin-svg-picker](https://g-next.antv.vision/zh/docs/plugins/svg-picker) 基于 SVG
- [canvas-picker](https://g-next.antv.vision/zh/docs/plugins/canvas-picker) 基于 Canvas2D
- [svg-picker](https://g-next.antv.vision/zh/docs/plugins/svg-picker) 基于 SVG
- 交互
- [g-plugin-dom-interaction](https://g-next.antv.vision/zh/docs/plugins/dom-interaction) 基于 DOM API 绑定事件
- [dom-interaction](https://g-next.antv.vision/zh/docs/plugins/dom-interaction) 基于 DOM API 绑定事件
- [g-plugin-control](https://g-next.antv.vision/zh/docs/plugins/control) 为 3D 场景提供相机交互
- [g-plugin-dragndrop](https://g-next.antv.vision/en/docs/plugins/dragndrop) 基于 PointerEvents 提供 Drag 'n' Drop
Comment thread
wang1212 marked this conversation as resolved.
- 物理引擎
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,19 @@ As the underlying rendering engine of AntV, G is dedicated to provide consistent
Extensible plug-in mechanism and rich set of plug-ins:

- Rendering Related
- [g-plugin-canvas-renderer](https://g-next.antv.vision/en/docs/plugins/canvas-renderer) Rendering 2D graphics based on Canvas2D.
- [g-plugin-svg-renderer](https://g-next.antv.vision/en/docs/plugins/svg-renderer) Rendering 2D graphics based on SVG.
- [canvas-renderer](https://g-next.antv.vision/en/docs/plugins/canvas-renderer) Rendering 2D graphics based on Canvas2D.
- [svg-renderer](https://g-next.antv.vision/en/docs/plugins/svg-renderer) Rendering 2D graphics based on SVG.
- [g-plugin-device-renderer](https://g-next.antv.vision/en/docs/plugins/device-renderer) Rendering 2D graphics based on GPUDevice.
- [g-plugin-html-renderer](https://g-next.antv.vision/en/docs/plugins/html-renderer) Rendering DOM with HTML.
- [html-renderer](https://g-next.antv.vision/en/docs/plugins/html-renderer) Rendering DOM with HTML.
- [g-plugin-3d](https://g-next.antv.vision/en/docs/plugins/3d) Extended 3D capabilities.
- [g-plugin-rough-canvas-renderer](https://g-next.antv.vision/en/docs/plugins/rough-canvas-renderer) Perform hand-drawn style rendering with [rough.js](https://roughjs.com/) and Canvs2D.
- [g-plugin-rough-svg-renderer](https://g-next.antv.vision/en/docs/plugins/rough-svg-renderer) Perform hand-drawn style rendering with [rough.js](https://roughjs.com/) and SVG.
- [g-plugin-canvaskit-renderer](https://g-next.antv.vision/en/docs/plugins/canvaskit-renderer) Rendering 2D graphics based on [Skia](https://skia.org/docs/user/modules/quickstart).
- [canvaskit-renderer](https://g-next.antv.vision/en/docs/plugins/canvaskit-renderer) Rendering 2D graphics based on [Skia](https://skia.org/docs/user/modules/quickstart).
- Picking
- [g-plugin-canvas-picker](https://g-next.antv.vision/en/docs/plugins/canvas-picker) Do picking with Canvas2D and mathematical calculations.
- [g-plugin-svg-picker](https://g-next.antv.vision/en/docs/plugins/svg-picker) Do picking with SVG and DOM API.
- [canvas-picker](https://g-next.antv.vision/en/docs/plugins/canvas-picker) Do picking with Canvas2D and mathematical calculations.
- [svg-picker](https://g-next.antv.vision/en/docs/plugins/svg-picker) Do picking with SVG and DOM API.
- Interaction
- [g-plugin-dom-interaction](https://g-next.antv.vision/en/docs/plugins/dom-interaction) Binds event listeners with DOM API.
- [dom-interaction](https://g-next.antv.vision/en/docs/plugins/dom-interaction) Binds event listeners with DOM API.
- [g-plugin-control](https://g-next.antv.vision/en/docs/plugins/control) Provides camera interaction for 3D scenes.
- [g-plugin-dragndrop](https://g-next.antv.vision/en/docs/plugins/dragndrop) Provides Drag 'n' Drop based on PointerEvents.
Comment thread
wang1212 marked this conversation as resolved.
- Physics Engine
Expand Down
3 changes: 1 addition & 2 deletions __tests__/demos/2d/clippath.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Circle, Rect, Path, Group } from '@antv/g';
import { Sector } from '@antv/g-components';
import { Circle, Rect, Path, Group, Sector } from '@antv/g';

export async function clipPath(context) {
const { canvas } = context;
Expand Down
3 changes: 1 addition & 2 deletions __tests__/demos/2d/custom-element.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Path, Polyline, Line } from '@antv/g';
import { Arrow } from '@antv/g-components';
import { Path, Polyline, Line, Arrow } from '@antv/g';

export async function customElement(context) {
const { canvas } = context;
Expand Down
3 changes: 1 addition & 2 deletions __tests__/demos/2d/pattern2.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { Circle, Rect } from '@antv/g';
import { dots, lines } from '@antv/g-pattern';
import { Circle, Rect, dots, lines } from '@antv/g';
import * as d3 from 'd3';

export async function pattern2(context) {
Expand Down
55 changes: 43 additions & 12 deletions __tests__/demos/plugin/exporter.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import * as d3 from 'd3';
import { HTML, Rectangle } from '@antv/g';
import { ImageExporter } from '@antv/g-image-exporter';
import { HTML, Rectangle, ImageExporter } from '@antv/g';

export async function exporter(context) {
const { canvas, gui } = context;
Expand All @@ -13,7 +12,9 @@ export async function exporter(context) {

const drawBars = async () => {
// 1. Access data
const dataset = await d3.json('https://gw.alipayobjects.com/os/bmw-prod/8e7cfeb6-28e5-4e78-8d16-c08468360f5f.json');
const dataset = await d3.json(
'https://gw.alipayobjects.com/os/bmw-prod/8e7cfeb6-28e5-4e78-8d16-c08468360f5f.json',
);
const metricAccessor = (d) => d.humidity;
const yAccessor = (d) => d.length;

Expand All @@ -31,8 +32,10 @@ export async function exporter(context) {
boundedWidth: 0,
boundedHeight: 0,
};
dimensions.boundedWidth = dimensions.width - dimensions.margin.left - dimensions.margin.right;
dimensions.boundedHeight = dimensions.height - dimensions.margin.top - dimensions.margin.bottom;
dimensions.boundedWidth =
dimensions.width - dimensions.margin.left - dimensions.margin.right;
dimensions.boundedHeight =
dimensions.height - dimensions.margin.top - dimensions.margin.bottom;

// 3. Draw canvas
const wrapper = d3.select(
Expand All @@ -41,7 +44,10 @@ export async function exporter(context) {

const bounds = wrapper
.append('g')
.style('transform', `translate(${dimensions.margin.left}px, ${dimensions.margin.top}px)`);
.style(
'transform',
`translate(${dimensions.margin.left}px, ${dimensions.margin.top}px)`,
);

// 4. Create scales

Expand All @@ -51,7 +57,11 @@ export async function exporter(context) {
.range([0, dimensions.boundedWidth])
.nice();

const binsGenerator = d3.bin().domain(xScale.domain()).value(metricAccessor).thresholds(12);
const binsGenerator = d3
.bin()
.domain(xScale.domain())
.value(metricAccessor)
.thresholds(12);

const bins = binsGenerator(dataset);

Expand All @@ -63,14 +73,20 @@ export async function exporter(context) {

// 5. Draw data
const binsGroup = bounds.append('g');
const binGroups = binsGroup.selectAll('g').data(bins).join('g').attr('class', 'bin');
const binGroups = binsGroup
.selectAll('g')
.data(bins)
.join('g')
.attr('class', 'bin');

const barPadding = 1;
const barRects = binGroups
.append('rect')
.attr('x', (d) => xScale(d.x0) + barPadding / 2)
.attr('y', (d) => yScale(yAccessor(d)))
.attr('width', (d) => d3.max([0, xScale(d.x1) - xScale(d.x0) - barPadding]))
.attr('width', (d) =>
d3.max([0, xScale(d.x1) - xScale(d.x0) - barPadding]),
)
.attr('height', (d) => dimensions.boundedHeight - yScale(yAccessor(d)))
.attr('fill', 'cornflowerblue')
.on('mouseenter', function (e) {
Expand Down Expand Up @@ -174,7 +190,12 @@ export async function exporter(context) {
ignoreElements: (element) => {
return [gui.domElement].indexOf(element) > -1;
},
clippingRegion: new Rectangle(clippingRegionX, clippingRegionY, clippingRegionWidth, clippingRegionHeight),
clippingRegion: new Rectangle(
clippingRegionX,
clippingRegionY,
clippingRegionWidth,
clippingRegionHeight,
),
beforeDrawImage: (context) => {
if (enableBackgroundColor) {
context.fillStyle = backgroundColor;
Expand Down Expand Up @@ -207,7 +228,12 @@ export async function exporter(context) {
ignoreElements: (element) => {
return [gui.domElement].indexOf(element) > -1;
},
clippingRegion: new Rectangle(clippingRegionX, clippingRegionY, clippingRegionWidth, clippingRegionHeight),
clippingRegion: new Rectangle(
clippingRegionX,
clippingRegionY,
clippingRegionWidth,
clippingRegionHeight,
),
beforeDrawImage: (context) => {
if (enableBackgroundColor) {
context.fillStyle = backgroundColor;
Expand Down Expand Up @@ -255,7 +281,12 @@ export async function exporter(context) {
exporterFolder.add(exporterConfig, 'enableBackgroundColor');
exporterFolder.addColor(exporterConfig, 'backgroundColor');
exporterFolder.add(exporterConfig, 'enableWatermark');
exporterFolder.add(exporterConfig, 'type', ['image/png', 'image/jpeg', 'image/webp', 'image/bmp']);
exporterFolder.add(exporterConfig, 'type', [
'image/png',
'image/jpeg',
'image/webp',
'image/bmp',
]);
exporterFolder.add(exporterConfig, 'encoderOptions', 0, 1);
exporterFolder.add(exporterConfig, 'toDataURL');
exporterFolder.add(exporterConfig, 'downloadImage');
Expand Down
5 changes: 2 additions & 3 deletions __tests__/demos/plugin/html-renderer.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { HTML } from '@antv/g';
import { Plugin as HTMLRenderingPlugin } from '@antv/g-plugin-html-renderer';
import { HTML, HTMLRenderer } from '@antv/g';
import { ExampleLayoutManager } from '../_helper/example-layout-manager';

export async function htmlRenderer(context) {
const { canvas, renderer } = context;

renderer.registerPlugin(new HTMLRenderingPlugin());
renderer.registerPlugin(new HTMLRenderer.Plugin());

await canvas.ready;

Expand Down
1 change: 0 additions & 1 deletion __tests__/main.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Stats from 'stats.js';
import * as lil from 'lil-gui';
import '@antv/g-camera-api';
import { Canvas, CanvasEvent, runtime } from '@antv/g';
import { Renderer as CanvasRenderer } from '@antv/g-canvas';
import { Renderer as CanvaskitRenderer } from '@antv/g-canvaskit';
Expand Down
Loading
Loading