Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
tomleePHP
uni-app
提交
91525bb2
U
uni-app
项目概览
tomleePHP
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
91525bb2
编写于
12月 14, 2018
作者:
郭
郭胜强
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 实现API:uni.canvasGetImageData、uni.canvasPutImageData
上级
540e825e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
203 addition
and
8 deletion
+203
-8
src/core/helpers/protocol/canvas.js
src/core/helpers/protocol/canvas.js
+49
-0
src/core/helpers/protocol/context.js
src/core/helpers/protocol/context.js
+10
-2
src/core/service/api/context/canvas.js
src/core/service/api/context/canvas.js
+82
-4
src/core/view/components/canvas/index.vue
src/core/view/components/canvas/index.vue
+62
-2
未找到文件。
src/core/helpers/protocol/canvas.js
0 → 100644
浏览文件 @
91525bb2
export
const
canvasGetImageData
=
{
canvasId
:
{
type
:
String
,
required
:
true
},
x
:
{
type
:
Number
,
required
:
true
},
y
:
{
type
:
Number
,
required
:
true
},
width
:
{
type
:
Number
,
required
:
true
},
height
:
{
type
:
Number
,
required
:
true
}
}
export
const
canvasPutImageData
=
{
canvasId
:
{
type
:
String
,
required
:
true
},
data
:
{
type
:
Uint8ClampedArray
,
required
:
true
},
x
:
{
type
:
Number
,
required
:
true
},
y
:
{
type
:
Number
,
required
:
true
},
width
:
{
type
:
Number
,
required
:
true
},
height
:
{
type
:
Number
,
required
:
false
}
}
src/core/helpers/protocol/context.js
浏览文件 @
91525bb2
...
...
@@ -2,8 +2,16 @@ const validator = [{
name
:
'
id
'
,
type
:
String
,
required
:
true
}]
}]
export
const
createAudioContext
=
validator
export
const
createVideoContext
=
validator
export
const
createMapContext
=
validator
export
const
createMapContext
=
validator
export
const
createCanvasContext
=
[{
name
:
'
canvasId
'
,
type
:
String
,
required
:
true
},
{
name
:
'
componentInstance
'
,
type
:
Object
}]
src/core/service/api/context/canvas.js
浏览文件 @
91525bb2
...
...
@@ -3,12 +3,22 @@ import createCallbacks from 'uni-helpers/callbacks'
const
canvasEventCallbacks
=
createCallbacks
(
'
canvasEvent
'
)
UniServiceJSBridge
.
subscribe
(
'
onDrawCanvas
'
,
({
req
Id
,
res
callback
Id
,
data
})
=>
{
const
callback
=
canvasEventCallbacks
.
pop
(
req
Id
)
const
callback
=
canvasEventCallbacks
.
pop
(
callback
Id
)
if
(
callback
)
{
callback
(
res
)
callback
(
data
)
}
})
UniServiceJSBridge
.
subscribe
(
'
onCanvasMethodCallback
'
,
({
callbackId
,
data
})
=>
{
const
callback
=
canvasEventCallbacks
.
pop
(
callbackId
)
if
(
callback
)
{
callback
(
data
)
}
})
...
...
@@ -559,3 +569,71 @@ export function createCanvasContext (id, context) {
UniServiceJSBridge
.
emit
(
'
onError
'
,
'
createCanvasContext:fail
'
)
}
}
const
{
invokeCallbackHandler
:
invoke
}
=
UniServiceJSBridge
export
function
canvasGetImageData
({
canvasId
,
x
,
y
,
width
,
height
},
callbackId
)
{
var
pageId
const
app
=
getApp
()
if
(
app
.
$route
&&
app
.
$route
.
params
.
__id__
)
{
pageId
=
app
.
$route
.
params
.
__id__
}
else
{
invoke
(
callbackId
,
{
errMsg
:
'
canvasGetImageData:fail
'
})
return
}
var
cId
=
canvasEventCallbacks
.
push
(
function
(
data
)
{
var
imgData
=
data
.
data
if
(
imgData
&&
imgData
.
length
)
{
data
.
data
=
new
Uint8ClampedArray
(
imgData
)
}
invoke
(
callbackId
,
data
)
})
operateCanvas
(
canvasId
,
pageId
,
'
getImageData
'
,
{
x
,
y
,
width
,
height
,
callbackId
:
cId
})
}
export
function
canvasPutImageData
({
canvasId
,
data
,
x
,
y
,
width
,
height
},
callbackId
)
{
var
pageId
const
app
=
getApp
()
if
(
app
.
$route
&&
app
.
$route
.
params
.
__id__
)
{
pageId
=
app
.
$route
.
params
.
__id__
}
else
{
invoke
(
callbackId
,
{
errMsg
:
'
canvasPutImageData:fail
'
})
return
}
var
cId
=
canvasEventCallbacks
.
push
(
function
(
data
)
{
invoke
(
callbackId
,
data
)
})
operateCanvas
(
canvasId
,
pageId
,
'
putImageData
'
,
{
data
:
[...
data
],
x
,
y
,
width
,
height
,
callbackId
:
cId
})
}
src/core/view/components/canvas/index.vue
浏览文件 @
91525bb2
...
...
@@ -198,8 +198,10 @@ export default {
}
if
(
!
this
.
actionsWaiting
&&
callbackId
)
{
UniViewJSBridge
.
publishHandler
(
'
onDrawCanvas
'
,
{
errMsg
:
'
drawCanvas:ok
'
,
callbackId
callbackId
,
data
:
{
errMsg
:
'
drawCanvas:ok
'
}
},
this
.
$page
.
id
)
}
},
...
...
@@ -316,6 +318,64 @@ export default {
}
return
false
}
},
getImageData
({
x
,
y
,
width
,
height
,
callbackId
})
{
var
imgData
try
{
imgData
=
this
.
$refs
.
canvas
.
getContext
(
'
2d
'
).
getImageData
(
x
,
y
,
width
,
height
)
}
catch
(
error
)
{
UniViewJSBridge
.
publishHandler
(
'
onCanvasMethodCallback
'
,
{
callbackId
,
data
:
{
errMsg
:
'
canvasGetImageData:fail
'
}
},
this
.
$page
.
id
)
return
}
UniViewJSBridge
.
publishHandler
(
'
onCanvasMethodCallback
'
,
{
callbackId
,
data
:
{
errMsg
:
'
canvasGetImageData:ok
'
,
data
:
[...
imgData
.
data
],
width
,
height
}
},
this
.
$page
.
id
)
},
putImageData
({
data
,
x
,
y
,
width
,
height
,
callbackId
})
{
try
{
if
(
!
height
)
{
height
=
data
.
length
/
4
/
width
}
this
.
$refs
.
canvas
.
getContext
(
'
2d
'
).
putImageData
(
new
ImageData
(
new
Uint8ClampedArray
(
data
),
width
,
height
),
x
,
y
)
}
catch
(
error
)
{
UniViewJSBridge
.
publishHandler
(
'
onCanvasMethodCallback
'
,
{
callbackId
,
data
:
{
errMsg
:
'
canvasPutImageData:fail
'
}
},
this
.
$page
.
id
)
return
}
UniViewJSBridge
.
publishHandler
(
'
onCanvasMethodCallback
'
,
{
callbackId
,
data
:
{
errMsg
:
'
canvasPutImageData:ok
'
}
},
this
.
$page
.
id
)
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录