
Security News
/Research
Wallet-Draining npm Package Impersonates Nodemailer to Hijack Crypto Transactions
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
模板版本:v0.2.2
@ohmi/art
[!TIP] Gitee 地址
该项目基于react-native-svg开发。
npm install @ohmi/art
yarn add @ohmi/art
下面的代码展示了这个库的基本使用场景:
[!WARNING] 使用时 import 的库名不变。
// @flow
import React from 'react';
import {StyleSheet, Dimensions} from 'react-native';
import {
Surface,
Shape,
Group
} from '@react-native-community/art';
const HEART_SHAPE =
'M 10,30 A 20,20 0,0,1 50,30 A 20,20 0,0,1 90,30 Q 90,60 50,90 Q 10,60 10,30 z';
const App = () => {
return (
const surfaceDimensions = Dimensions.get('window').width;
return (
<Surface
width={surfaceDimensions}
height={surfaceDimensions / 2}
style={styles.surface}>
<Group
x={surfaceDimensions / 2 - 50}
y={surfaceDimensions / 4 - 50}
visible={true}>
<Shape
d={HEART_SHAPE}
strokeWidth={5}
stroke={'#00ff00'}
visible={true}
/>
</Group>
</Surface>
);
);
};
export default App;
const styles = StyleSheet.create({
surface: {
backgroundColor: 'black',
}
});
本库 HarmonyOS 侧实现依赖@react-native-oh-tpl/react-native-svg 的原生端代码,如已在 HarmonyOS 工程中引入过该库,则无需再次引入,可跳过本章节步骤,直接使用。
如未引入请参照react-native-svg-capi 进行引入
[!TIP] "Platform"列表示该属性在原三方库上支持的平台。
[!TIP] "HarmonyOS Support"列为 yes 表示 HarmonyOS 平台支持该属性;no 则表示不支持;partially 表示部分支持。使用方法跨平台一致,效果对标 iOS 或 Android 的效果。
Surface:绘图元素容器(组件)
属性名称 | 类型 | 默认值 | 描述 | 说明 | 是否必需 | 支持平台 | HarmonyOS 支持 |
---|---|---|---|---|---|---|---|
width | string | number | 0 | 盒子的宽,支持百分比 | 否 | All | 是 | |
height | number | 0 | 盒子的高,不支持百分比 | 否 | All | 是 |
Group:多个图形和文本元素组合在一起(组件)
属性名称 | 类型 | 默认值 | 描述 | 说明 | 是否必需 | 支持平台 | HarmonyOS 支持 |
---|---|---|---|---|---|---|---|
width | number | 0 | 否 | N | 否 | ||
height | number | 0 | 否 | N | 否 |
Text:文本(组件)
属性名称 | 类型 | 默认值 | 描述 | 说明 | 是否必需 | 支持平台 | HarmonyOS 支持 |
---|---|---|---|---|---|---|---|
font | string | 属性的值是一个字符串,格式为 "font-weight font-size font-family" | 1.font-weight:只支持 normal 和 bold,不支持其他样式(如 italic)。 2.font-size 的单位是像素(px),不能使用其他单位(如 % 或 em)。 3.font-family 必须是系统支持的字体或已导入的自定义字体。 | 否 | All | 是 | |
alignment | string | left | 用于控制文本的对齐方式 | 1.left:文本将从指定的(0,0) 坐标开始,向左对齐。 2.center:文本将从指定的(0,0) 坐标开始,居中对齐。 3.right:文本将从指定的 (0,0) 坐标开始,向右对齐。 | 否 | All | 是 |
fill | string | LinearGradient | RadialGradient | 用于控制文本的颜色 | 如 #000,red,LinearGradient 注:0.61上的RadialGradient对象不生效,0.72上修复了这个bug,可以生效 | 否 | All | 是 | |
stroke | string | 设置文本的描边颜色 | 否 | All | 是 | ||
strokeWidth | number | 1 | 设置描边的宽度(单位为像素) | 否 | All | 是 | |
strokeCap | string | round | 设置描边端点的样式。 | 1.butt:描边端点是平的。 2.square:描边端点是方形的。 3.round:描边端点是圆形的。 注:需要搭配strokeDash使用才可以看出效果 | 否 | All | 是 |
strokeDash | Array | 设置描边的虚线样式 | 例如:[10, 5] 表示绘制 10 像素的实线,然后绘制 5 像素的空白,如此循环。 | 否 | All | 是 | |
strokeJoin | string | miter | 设置描边连接处的样式。 | 1.bevel:连接处是斜面的。 2.miter:连接处是尖锐的。 3.round:连接处是圆形的。 | 否 | All | 是 |
Path:路径绘制(类)
方法名称 | 参数 | 描述 | 说明 | 支持平台 | HarmonyOS 支持 | HarmonyOS 支持 |
---|---|---|---|---|---|---|
move | dx:x 轴方向的偏移量 dy:y 轴方向的偏移量 | 相对坐标移动 | 将路径的起点从当前位置沿着 x 轴和 y 轴方向移动偏移量 dx 和 dy。 | All | 是 | 是 |
moveTo | x:移动到的目标 x 坐标。 y:移动到的目标 y 坐标。 | 绝对坐标移动 | 将路径的起点移动到指定的绝对坐标 (x, y)。 | All | 是 | 是 |
line | dx:x 轴方向的距离 dy:y 轴方向的距离 | 相对坐标绘制直线 | 从当前路径的起点绘制一条直线,移动距离为 dx 和 dy。 | All | 是 | 是 |
lineTo | x:绘制到的目标 x 坐标。 y:绘制到的目标 y 坐标。 | 绝对坐标绘制直线 | 从当前路径的起点绘制一条直线到指定的坐标 | All | 是 | 是 |
curve | c1x (number): 第一个控制点的 x 坐标。 c1y (number): 第一个控制点的 y 坐标。 c2x (number): 第二个控制点的 x 坐标。 c2y (number): 第二个控制点的 y 坐标。 ex (number): 结束点的 x 坐标(相对于当前点的偏移量)。 ey (number): 结束点的 y 坐标(相对于当前点的偏移量) | 相对坐标绘制贝塞尔曲线 | curve 方法使用相对坐标来指定结束点的位置,即结束点的坐标是相对于当前点的偏移量。 2个参数:(dx, dy) 绘制一条直线,从当前点到 (当前点 + dx, 当前点 + dy)。 3个参数:(c1x, c1y, ex) 绘制一条二次贝塞尔曲线,使用一个控制点。 ex = ex,ey = 整个坐标系y 0 4个参数:(c1x, c1y, ex, ey) 绘制一条二次贝塞尔曲线,使用一个控制点。 5个参数:(c1x, c1y, c2x, c2y, ex) 绘制一条三次贝塞尔曲线,使用俩个控制点。ex = ex,ey = 整个坐标系y 0 6个参数:(c1x, c1y, c2x, c2y, ex, ey) 绘制一条三次贝塞尔曲线,使用俩个控制点。 注:curve使用1个参数会报错 | All | 是 | 是 |
curveTo | c1x (number): 第一个控制点的 x 坐标。 c1y (number): 第一个控制点的 y 坐标。 c2x (number): 第二个控制点的 x 坐标。 c2y (number): 第二个控制点的 y 坐标。 ex (number): 结束点的 x 坐标(绝对坐标)。 ey (number): 结束点的 y 坐标(绝对坐标) | 绝对坐标绘制贝塞尔曲线 | curveTo 方法使用绝对坐标来指定结束点的位置,即结束点的坐标是相对于整个坐标系的。 2个参数:(dx, dy) 绘制一条直线,从当前点到 (整个坐标系的dx, 整个坐标系的dy)。 4个参数:(c1x, c1y, ex, ey) 绘制一条二次贝塞尔曲线,使用一个控制点。 6个参数:(c1x, c1y, c2x, c2y, ex, ey) 绘制一条三次贝塞尔曲线,使用俩个控制点。 注:curveTo使用1个参数,3个参数或5个参数会报错 | All | 是 | 是 |
arc | x (number): 终点的 x 坐标,相对于当前点的偏移量。 y (number): 终点的 y 坐标,相对于当前点的偏移量。 rx (number): 圆弧在 x 轴方向的半径。 ry (number): 圆弧在 y 轴方向的半径。 outer (boolean): 是否为外侧弧线。(若两点间的圆心角超过 180 度,设置 outer=true 会绘制较长的弧,false则绘制小弧) counterClockwise (boolean): 是否逆时针绘制弧线。true 表示逆时针,false 表示顺时针。 rotation (number): 旋转角度。 | 相对坐标绘制弧线 | 使用一个参数会报错 | All | 是 | 是 |
arcTo | x (number): 终点的 x 坐标,相对于整个坐标系的值。 y (number): 终点的 y 坐标,相对于整个坐标系的值。 rx (number): 圆弧在 x 轴方向的半径。 ry (number): 圆弧在 y 轴方向的半径。 outer (boolean): 是否为外侧弧线。(若两点间的圆心角超过 180 度,设置 outer=true 会绘制较长的弧,false则绘制小弧) counterClockwise (boolean): 是否逆时针绘制弧线。true 表示逆时针,false 表示顺时针。 rotation (number): 旋转角度。 | 绝对坐标绘制弧线 | 使用一个参数会报错 | All | 是 | 是 |
counterArc | x (number): 终点的 x 坐标,相对于当前点的偏移量。 y (number): 终点的 y 坐标,相对于当前点的偏移量。 rx (number): 圆弧在 x 轴方向的半径。 ry (number): 圆弧在 y 轴方向的半径。 outer (boolean): 是否为外侧弧线。(若两点间的圆心角超过 180 度,设置 outer=true 会绘制较长的弧,false则绘制小弧) | 相对坐标绘制弧线 | counterArc: function(x, y, rx, ry, outer){ return this.arc(x, y, rx, ry, outer, true); } 经过观察源码,发现只是将arc的第六个参数counterClockwise使用逆时针进行使用而已,且只有5个参数值,用法与效果与arc5个参数效果一致 | All | 是 | 是 |
counterArcTo | x (number): 终点的 x 坐标,相对于整个坐标系的值。 y (number): 终点的 y 坐标,相对于整个坐标系的值。 rx (number): 圆弧在 x 轴方向的半径。 ry (number): 圆弧在 y 轴方向的半径。 outer (boolean): 是否为外侧弧线。(若两点间的圆心角超过 180 度,设置 outer=true 会绘制较长的弧,false则绘制小弧) | 绝对坐标绘制弧线 | counterArcTo: function(x, y, rx, ry, outer){ return this.arcTo(x, y, rx, ry, outer, true); } 经过观察源码,发现只是将arc的第六个参数counterClockwise使用逆时针进行使用而已,且只有5个参数值,用法与效果与arcTo5个参数效果一致 | All | 是 | 是 |
close | 无 | 闭合路线 | All | 是 | 是 | |
reset | 无 | 重置路径 | All | 是 | 是 | |
initialize | Path对象 | 克隆Path相关路径 | All | 是 | 是 |
Shape:创建和渲染矢量图形(组件)
属性名称 | 类型 | 默认值 | 描述 | 说明 | 是否必需 | 支持平台 | HarmonyOS 支持 |
---|---|---|---|---|---|---|---|
d | string | Path对象 | SVG格式的字符串 或者new Path()的对象 | 否 | All | 是 | ||
height | number | 盒子的高。 不知道有啥用,源码上有这个属性,但显示的内容,大小是根据d这个属性来决定的 | 否 | All | 是 | ||
width | number | 盒子的高。 不知道有啥用,源码上有这个属性,但显示的内容,大小是根据d这个属性来决定的 | 否 | All | 是 | ||
fill | string | LinearGradient | RadialGradient | 用于控制文本的颜色 | 如 #000,red,LinearGradient 注:0.61上的RadialGradient对象不生效,0.72上修复了这个bug,可以生效 | 否 | All | 是 | |
stroke | string | 设置文本的描边颜色 | 否 | All | 是 | ||
strokeWidth | number | 1 | 设置描边的宽度(单位为像素) | 否 | All | 是 | |
strokeCap | string | round | 设置描边端点的样式。 | 1.butt:描边端点是平的。 2.square:描边端点是方形的。 3.round:描边端点是圆形的。 | 否 | All | 是 |
strokeDash | Array | 设置描边的虚线样式 | 例如:[10, 5] 表示绘制 10 像素的实线,然后绘制 5 像素的空白,如此循环。 | 否 | All | 是 | |
strokeJoin | string | miter | 设置描边连接处的样式。 | 1.bevel:连接处是斜面的。 2.miter:连接处是尖锐的。 3.round:连接处是圆形的。 | 否 | All | 是 |
ClippingRectangle:图形裁剪(组件)0.61不支持
属性名称 | 类型 | 默认值 | 描述 | 说明 | 是否必需 | 支持平台 | HarmonyOS 支持 |
---|---|---|---|---|---|---|---|
width | number | 0 | 盒子的宽 | 否 | N | 否 | |
height | number | 0 | 盒子的高 | 否 | N | 否 |
LinearGradient:线性渐变填充(构造函数,下列是参数列表)
属性名称 | 类型 | 默认值 | 描述 | 说明 | 是否必需 | 支持平台 | HarmonyOS 支持 |
---|---|---|---|---|---|---|---|
stops | type GradientStops = {[key: string]: ColorType} | Array; | 渐变的颜色停止点数组 | 否 | All | 是 | ||
x1 | number | 渐变起始点的 x 坐标 | 否 | All | 是 | ||
y1 | number | 渐变起始点的 y 坐标 | 否 | All | 是 | ||
x2 | number | 渐变结束点的 x 坐标 | 否 | All | 是 | ||
y2 | number | 渐变结束点的 y 坐标 | 否 | All | 是 |
RadialGradient:径向渐变填充(构造函数,下列是参数列表)0.61没有效果
属性名称 | 类型 | 默认值 | 描述 | 说明 | 是否必需 | 支持平台 | HarmonyOS 支持 |
---|---|---|---|---|---|---|---|
stops | type GradientStops = {[key: string]: ColorType} | Array; | 渐变的颜色停止点数组 | 否 | N | 是 | ||
fx | number | 0.5 | 渐变焦点的 x 坐标 | 否 | N | 是 | |
fy | number | 0.5 | 渐变焦点的 y 坐标 | 否 | N | 是 | |
rx | number | 0.5 | 渐变外环的 x 半径 | 否 | N | 是 | |
ry | number | 0.5 | 渐变外环的 y 半径 | 否 | N | 是 | |
cx | number | 0.5 | 渐变中心点的 x 坐标 | 否 | N | 是 | |
cy | number | 0.5 | 渐变中心点的 y 坐标 | 否 | N | 是 |
Transform:图形进行变换操作(构造函数,下列是参数列表)
属性名称 | 类型 | 默认值 | 描述 | 说明 | 是否必需 | 支持平台 | HarmonyOS 支持 |
---|---|---|---|---|---|---|---|
xx | number | 1 | X轴方向的缩放因子。 | 否 | All | 是 | |
yx | number | 0 | Y轴方向的倾斜因子(相对于X轴)。 | 否 | All | 是 | |
xy | number | 0 | X轴方向的倾斜因子(相对于Y轴)。 | 否 | All | 是 | |
yy | number | 1 | Y轴方向的缩放因子。 | 否 | All | 是 | |
x | number | 0 | X轴方向的平移距离。 | 否 | All | 是 | |
y | number | 0 | Y轴方向的平移距离。 | ||||
方法名称 | 参数 | 描述 | 说明 | 是否必需 | 支持平台 | HarmonyOS 支持 | |
transform | xx yx xy yy x y | 用法与new Transform(...arg) 一致 | 否 | All | 是 | ||
translate | x y | 沿X | Y轴的平移距离。 | 正值向右移动,负值向左移动。 | 否 | All | 是 | |
move | x y | 与translate用法一致 | 否 | All | 是 | ||
moveTo | x y | 与translate用法一致 | 否 | All | 是 | ||
scale | xx yy | 缩放比例。 | 大于1表示放大,小于1表示缩小。 | 否 | All | 是 | |
rotate | deg 旋转角度 x 旋转的中心点x轴 y 旋转的中心点y轴 | 否 | All | 是 | |||
rotateTo | deg 旋转角度 x 旋转的中心点x轴 y 旋转的中心点y轴 | 与rotate用法一致 | 否 | All | 是 |
公共属性:Common props 组件属性 HarmonyOS 侧支持情况(Surface与ClippingRectangle不生效,shadow系列的属性仅对Text和Shape组件生效)
属性名称 | 类型 | 默认值 | 描述 | 说明 | 是否必需 | 支持平台 | HarmonyOS 支持 |
---|---|---|---|---|---|---|---|
opacity | number | 1 | 透明度(0-1) | 否 | All | 是 | |
originX | number | 0 | 原点 X 坐标 | 需搭配rotation使用 | 否 | All | 是 |
originY | number | 0 | 原点 Y 坐标 | 需搭配rotation使用 | 否 | All | 是 |
rotation | number | 0 | 旋转角度 | 否 | All | 是 | |
scaleX | number | 1 | X 轴方向的缩放比例 | 否 | All | 是 | |
scaleY | number | 1 | Y 轴方向的缩放比例 | 否 | All | 是 | |
scale | number | 1 | 统一缩放比例(同时影响 X 轴和 Y 轴) | 否 | All | 是 | |
x | number | 0 | 横坐标位移 | 否 | All | 是 | |
y | number | 0 | 纵坐标位移 | 否 | All | 是 | |
visible | boolean | true | 是否可见 | 否 | All | 是 | |
shadowColor | string | #000 | 设置阴影的颜色 | 否 | All | 是 | |
shadowOffset | object | { x: 0, y: 0 } | 设置阴影的偏移量 | 包含 x 和 y 两个属性,分别表示水平和垂直方向的偏移量。 | 否 | All | 是 |
shadowOpacity | number | 1 | 设置阴影的透明度 | 否 | All | 是 | |
shadowRadius | number | 0 | 设置阴影的模糊半径,值越大阴影越模糊。 | 目前72上面这个属性不生效(OS底层暂时不支持) | 否 | 否 |
FAQs
> 模板版本:v0.2.2
We found that @ohmi/art demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.