next-element-vue 0.3.6 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -1
- package/dist/index.js +217 -54
- package/dist/index.min.js +3 -3
- package/dist/index.umd.js +216 -54
- package/dist/index.umd.min.js +3 -3
- package/dist/packages/components/labelimg/src/config.d.ts +11 -0
- package/dist/packages/components/labelimg/src/hooks/canvas-context-hook.d.ts +4 -40
- package/dist/packages/components/labelimg/src/hooks/canvas-drag-zoom.d.ts +57 -0
- package/dist/packages/components/labelimg/src/widgets/draggable-rect.d.ts +2 -2
- package/dist/packages/components/labelme/src/hooks/canvas-drag-zoom.d.ts +31 -0
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
.next-upload .el-upload-list__item-thumbnail{-o-object-fit:cover;object-fit:cover}
|
|
13
13
|
.next-video-player{border-radius:5px;height:100%;min-height:200px;overflow:hidden;position:relative;width:100%}.next-video-player .vjs-default-skin{height:100%!important;left:0;min-height:200px;padding:unset!important;position:absolute;top:0;width:100%}.next-video-player .screemshot-btn{align-items:center;background-color:rgba(0,0,0,.6);border-radius:50%;cursor:pointer;display:inline-flex;height:45px;justify-content:center;opacity:0;position:absolute;right:10px;top:50%;transform:translateY(-50%);transition:all .5s ease-in-out;width:45px}.next-video-player .screemshot-btn i{transition:all .3s ease-in-out}.next-video-player .screemshot-btn:hover i{transform:scale(1.1)}.next-video-player:hover .screemshot-btn{opacity:1}.next-video-player-recongition{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;z-index:99}
|
|
14
14
|
.next-drag-resize{position:relative}
|
|
15
|
-
.next-labelimg-loading .next-spin-loading-mask__text{text-shadow:unset}.next-labelimg{border:1px solid #eee;border-radius:3px;box-sizing:border-box;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.next-labelimg-header{box-shadow:0 0 4px 0 rgba(0,0,0,.15);font-size:12px;justify-content:space-between;padding:10px 12px}.next-labelimg-header,.next-labelimg-header__tool,.next-labelimg-header__tool>li{align-items:center;display:flex}.next-labelimg-header__tool>li{cursor:pointer;margin:0 6px}.next-labelimg-header__tool>li.hover:hover{color:var(--el-color-primary)}.next-labelimg-header__tool>li.hover:hover svg{fill:var(--el-color-primary)}.next-labelimg-main{align-items:center;display:flex;justify-content:space-between}.next-labelimg-main__content.el-scrollbar{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADZJREFUOE9jZKAQMFKon2HUAAYah8HZs2f/MzAw3DY2NlbDFVt4Y4FiA4hJI6PpgNbpgJhYAAB1/AoRxXg31wAAAABJRU5ErkJggg==)}.next-labelimg-main__content.el-scrollbar .el-scrollbar__wrap{width:100%}.next-labelimg-main__content{align-items:center;display:flex;flex:1 1 100%;justify-content:center}.next-labelimg-main .next-labelimg-loading{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.next-labelimg-main .next-labelimg-canvas{height:100%;min-height:500px;position:relative;width:100%}.next-labelimg-main .next-labelimg-canvas__context{height:100%;position:absolute;width:100%;z-index:3}.next-labelimg-main .next-labelimg-canvas__rect{height:100%;position:absolute;width:100%;z-index:1}.next-labelimg-main .next-labelimg-right{box-sizing:border-box;flex:0 0 200px;height:inherit;padding:10px;text-align:left}.next-labelimg-main .next-labelimg-right>ul{border-radius:5px;box-shadow:0 0 4px 0 rgba(0,0,0,.15);box-sizing:border-box;height:100%;padding:10px}.next-labelimg-main .next-labelimg-right>ul li{align-items:center;border:1px solid #ddd;border-radius:3px;display:flex;font-size:12px;justify-content:space-between;line-height:20px;margin:5px 0;padding:3px 6px}.next-labelimg-main .next-labelimg-right>ul li .el-icon{cursor:pointer}.next-labelimg-main .next-labelimg-right>ul li:hover{border:1px solid var(--el-color-primary)}.next-labelimg-main .next-labelimg-right>ul li .label-line{border-radius:3px;display:inline-block;height:10px;margin-right:6px;width:3px}.next-labelimg-footer{align-items:center;display:flex;justify-content:space-between;padding:20px 12px 8px}.next-labelimg-footer .left-right,.next-labelimg-footer .next-labelimg-footer__left,.next-labelimg-footer .next-labelimg-footer__right{align-items:center;display:flex;flex:0 0 50px;justify-content:center}.next-labelimg-footer .left-right .el-icon:hover,.next-labelimg-footer .next-labelimg-footer__left .el-icon:hover,.next-labelimg-footer .next-labelimg-footer__right .el-icon:hover{cursor:pointer}.next-labelimg-footer__center{flex:1 1 auto}.next-labelimg-footer__center--list{align-items:center;display:flex;flex-wrap:nowrap;justify-content:flex-start;min-height:80px}.next-labelimg-footer__center--list>li{background-color:#fff;border:1px solid #eee;box-sizing:border-box;cursor:pointer;flex:0 0 100px;height:80px;margin:0 5px;overflow:hidden;text-align:center}.next-labelimg-footer__center--list>li.is-activate,.next-labelimg-footer__center--list>li:hover{border:1px solid var(--el-color-primary)}.next-labelimg .next-labelimg-contextmenu-label{background-color:#fff;border-radius:8px;box-shadow:0 0 50px 3px #ccc;padding:10px 15px;position:fixed;transition:all .3s;white-space:nowrap;z-index:9999}.next-labelimg .next-labelimg-contextmenu-label>.label-head{align-items:center;display:flex;font-size:14px;justify-content:space-between;padding-bottom:10px}.next-labelimg .next-labelimg-contextmenu-label>.label-head .el-icon{transition:all .3s}.next-labelimg .next-labelimg-contextmenu-label>.label-head .el-icon:hover{cursor:pointer;transform:rotate(90deg)}.next-labelimg .next-labelimg-contextmenu-label>.label-main{scrollbar-face-color:transparent;scrollbar-3dlight-color:#aaa;scrollbar-highlight-color:#aaa;scrollbar-shadow-color:#aaa;scrollbar-base-color:#aaa;scrollbar-track-color:transparent;scrollbar-arrow-color:transparent;max-height:300px;overflow-y:auto}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar{background-color:transparent;border-radius:6px;height:10px;max-width:6px;width:6px}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar-thumb{background-color:hsla(0,0%,67%,.2);border-radius:6px}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar-thumb:hover{background-color:#aaa}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar-thumb:inactive{background-color:#eee}.next-labelimg .next-labelimg-contextmenu-label>.label-main:hover::-webkit-scrollbar-thumb{background-color:hsla(0,0%,67%,.5)}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar-track-piece{background-color:transparent;border-radius:6px}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-resizer,.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar-corner{background-color:transparent}.next-labelimg .next-labelimg-contextmenu-label>.label-main>li{align-items:center;display:flex;font-size:12px;padding:3px 0}.next-labelimg .next-labelimg-contextmenu-label>.label-main>li .label-line{border-radius:3px;display:inline-block;height:10px;margin-right:6px;width:3px}.next-labelimg .next-labelimg-contextmenu-label>.label-main>li.activate-label{color:var(--el-color-primary)}.next-labelimg .next-labelimg-draggable-rect{background-color:hsla(0,0%,99%,.5);cursor:move;position:absolute;z-index:999}.next-labelimg .next-labelimg-draggable-rect__resize{height:100%;position:relative;width:100%}.next-labelimg .next-labelimg-draggable-rect__resize .bottom-center,.next-labelimg .next-labelimg-draggable-rect__resize .bottom-left,.next-labelimg .next-labelimg-draggable-rect__resize .bottom-right,.next-labelimg .next-labelimg-draggable-rect__resize .dot,.next-labelimg .next-labelimg-draggable-rect__resize .left-center,.next-labelimg .next-labelimg-draggable-rect__resize .right-center,.next-labelimg .next-labelimg-draggable-rect__resize .top-center,.next-labelimg .next-labelimg-draggable-rect__resize .top-left,.next-labelimg .next-labelimg-draggable-rect__resize .top-right{background-color:var(--el-color-primary);border:1px solid var(--el-color-primary);box-sizing:border-box;height:10px;position:absolute;width:10px}.next-labelimg .next-labelimg-draggable-rect__resize .top-left{cursor:nw-resize;left:-5px;top:-5px}.next-labelimg .next-labelimg-draggable-rect__resize .top-center{cursor:s-resize;left:50%;top:-5px;transform:translateX(-50%)}.next-labelimg .next-labelimg-draggable-rect__resize .top-right{cursor:sw-resize;right:-5px;top:-5px}.next-labelimg .next-labelimg-draggable-rect__resize .left-center{cursor:w-resize;left:-5px;top:50%;transform:translateY(-50%)}.next-labelimg .next-labelimg-draggable-rect__resize .right-center{cursor:w-resize;right:-5px;top:50%;transform:translateY(-50%)}.next-labelimg .next-labelimg-draggable-rect__resize .bottom-left{bottom:-5px;cursor:sw-resize;left:-5px}.next-labelimg .next-labelimg-draggable-rect__resize .bottom-center{bottom:-5px;cursor:s-resize;left:50%;transform:translateX(-50%)}.next-labelimg .next-labelimg-draggable-rect__resize .bottom-right{bottom:-5px;cursor:nw-resize;right:-5px}.next-labelimg-fullscreen{background-color:#fff;bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;transition:all .3s;z-index:999}.next-labelimg-preview{display:inline-block;height:100%}
|
|
15
|
+
.next-labelimg-loading .next-spin-loading-mask__text{text-shadow:unset}.next-labelimg{border:1px solid #eee;border-radius:3px;box-sizing:border-box;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.next-labelimg-header{box-shadow:0 0 4px 0 rgba(0,0,0,.15);font-size:12px;justify-content:space-between;padding:10px 12px}.next-labelimg-header,.next-labelimg-header__tool,.next-labelimg-header__tool>li{align-items:center;display:flex}.next-labelimg-header__tool>li{cursor:pointer;margin:0 6px}.next-labelimg-header__tool>li.hover:hover{color:var(--el-color-primary)}.next-labelimg-header__tool>li.hover:hover svg{fill:var(--el-color-primary)}.next-labelimg-main{align-items:center;display:flex;justify-content:space-between}.next-labelimg-main__content.el-scrollbar{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADZJREFUOE9jZKAQMFKon2HUAAYah8HZs2f/MzAw3DY2NlbDFVt4Y4FiA4hJI6PpgNbpgJhYAAB1/AoRxXg31wAAAABJRU5ErkJggg==)}.next-labelimg-main__content.el-scrollbar .el-scrollbar__wrap{width:100%}.next-labelimg-main__content{align-items:center;display:flex;flex:1 1 100%;justify-content:center}.next-labelimg-main .next-labelimg-loading{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.next-labelimg-main .next-labelimg-canvas{border:1px solid #eee;height:100%;min-height:500px;position:relative;width:100%}.next-labelimg-main .next-labelimg-canvas__context{height:100%;position:absolute;width:100%;z-index:3}.next-labelimg-main .next-labelimg-canvas__rect{height:100%;position:absolute;width:100%;z-index:1}.next-labelimg-main .next-labelimg-right{box-sizing:border-box;flex:0 0 200px;height:inherit;padding:10px;text-align:left}.next-labelimg-main .next-labelimg-right>ul{border-radius:5px;box-shadow:0 0 4px 0 rgba(0,0,0,.15);box-sizing:border-box;height:100%;padding:10px}.next-labelimg-main .next-labelimg-right>ul li{align-items:center;border:1px solid #ddd;border-radius:3px;display:flex;font-size:12px;justify-content:space-between;line-height:20px;margin:5px 0;padding:3px 6px}.next-labelimg-main .next-labelimg-right>ul li .el-icon{cursor:pointer}.next-labelimg-main .next-labelimg-right>ul li:hover{border:1px solid var(--el-color-primary)}.next-labelimg-main .next-labelimg-right>ul li .label-line{border-radius:3px;display:inline-block;height:10px;margin-right:6px;width:3px}.next-labelimg-footer{align-items:center;display:flex;justify-content:space-between;padding:20px 12px 8px}.next-labelimg-footer .left-right,.next-labelimg-footer .next-labelimg-footer__left,.next-labelimg-footer .next-labelimg-footer__right{align-items:center;display:flex;flex:0 0 50px;justify-content:center}.next-labelimg-footer .left-right .el-icon:hover,.next-labelimg-footer .next-labelimg-footer__left .el-icon:hover,.next-labelimg-footer .next-labelimg-footer__right .el-icon:hover{cursor:pointer}.next-labelimg-footer__center{flex:1 1 auto}.next-labelimg-footer__center--list{align-items:center;display:flex;flex-wrap:nowrap;justify-content:flex-start;min-height:80px}.next-labelimg-footer__center--list>li{background-color:#fff;border:1px solid #eee;box-sizing:border-box;cursor:pointer;flex:0 0 100px;height:80px;margin:0 5px;overflow:hidden;text-align:center}.next-labelimg-footer__center--list>li.is-activate,.next-labelimg-footer__center--list>li:hover{border:1px solid var(--el-color-primary)}.next-labelimg .next-labelimg-contextmenu-label{background-color:#fff;border-radius:8px;box-shadow:0 0 50px 3px #ccc;padding:10px 15px;position:fixed;transition:all .3s;white-space:nowrap;z-index:9999}.next-labelimg .next-labelimg-contextmenu-label>.label-head{align-items:center;display:flex;font-size:14px;justify-content:space-between;padding-bottom:10px}.next-labelimg .next-labelimg-contextmenu-label>.label-head .el-icon{transition:all .3s}.next-labelimg .next-labelimg-contextmenu-label>.label-head .el-icon:hover{cursor:pointer;transform:rotate(90deg)}.next-labelimg .next-labelimg-contextmenu-label>.label-main{scrollbar-face-color:transparent;scrollbar-3dlight-color:#aaa;scrollbar-highlight-color:#aaa;scrollbar-shadow-color:#aaa;scrollbar-base-color:#aaa;scrollbar-track-color:transparent;scrollbar-arrow-color:transparent;max-height:300px;overflow-y:auto}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar{background-color:transparent;border-radius:6px;height:10px;max-width:6px;width:6px}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar-thumb{background-color:hsla(0,0%,67%,.2);border-radius:6px}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar-thumb:hover{background-color:#aaa}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar-thumb:inactive{background-color:#eee}.next-labelimg .next-labelimg-contextmenu-label>.label-main:hover::-webkit-scrollbar-thumb{background-color:hsla(0,0%,67%,.5)}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar-track-piece{background-color:transparent;border-radius:6px}.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-resizer,.next-labelimg .next-labelimg-contextmenu-label>.label-main::-webkit-scrollbar-corner{background-color:transparent}.next-labelimg .next-labelimg-contextmenu-label>.label-main>li{align-items:center;display:flex;font-size:12px;padding:3px 0}.next-labelimg .next-labelimg-contextmenu-label>.label-main>li .label-line{border-radius:3px;display:inline-block;height:10px;margin-right:6px;width:3px}.next-labelimg .next-labelimg-contextmenu-label>.label-main>li.activate-label{color:var(--el-color-primary)}.next-labelimg .next-labelimg-draggable-rect{background-color:hsla(0,0%,99%,.5);cursor:move;position:absolute;z-index:999}.next-labelimg .next-labelimg-draggable-rect__resize{height:100%;position:relative;width:100%}.next-labelimg .next-labelimg-draggable-rect__resize .bottom-center,.next-labelimg .next-labelimg-draggable-rect__resize .bottom-left,.next-labelimg .next-labelimg-draggable-rect__resize .bottom-right,.next-labelimg .next-labelimg-draggable-rect__resize .dot,.next-labelimg .next-labelimg-draggable-rect__resize .left-center,.next-labelimg .next-labelimg-draggable-rect__resize .right-center,.next-labelimg .next-labelimg-draggable-rect__resize .top-center,.next-labelimg .next-labelimg-draggable-rect__resize .top-left,.next-labelimg .next-labelimg-draggable-rect__resize .top-right{background-color:var(--el-color-primary);border:1px solid var(--el-color-primary);box-sizing:border-box;height:10px;position:absolute;width:10px}.next-labelimg .next-labelimg-draggable-rect__resize .top-left{cursor:nw-resize;left:-5px;top:-5px}.next-labelimg .next-labelimg-draggable-rect__resize .top-center{cursor:s-resize;left:50%;top:-5px;transform:translateX(-50%)}.next-labelimg .next-labelimg-draggable-rect__resize .top-right{cursor:sw-resize;right:-5px;top:-5px}.next-labelimg .next-labelimg-draggable-rect__resize .left-center{cursor:w-resize;left:-5px;top:50%;transform:translateY(-50%)}.next-labelimg .next-labelimg-draggable-rect__resize .right-center{cursor:w-resize;right:-5px;top:50%;transform:translateY(-50%)}.next-labelimg .next-labelimg-draggable-rect__resize .bottom-left{bottom:-5px;cursor:sw-resize;left:-5px}.next-labelimg .next-labelimg-draggable-rect__resize .bottom-center{bottom:-5px;cursor:s-resize;left:50%;transform:translateX(-50%)}.next-labelimg .next-labelimg-draggable-rect__resize .bottom-right{bottom:-5px;cursor:nw-resize;right:-5px}.next-labelimg-fullscreen{background-color:#fff;bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;transition:all .3s;z-index:999}.next-labelimg-preview{display:inline-block;height:100%}
|
|
16
16
|
.next-labelme-loading .next-spin-loading-mask__text{text-shadow:unset}.next-labelme-fullscreen{background-color:#fff;bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;transition:all .3s;z-index:999}.next-labelme{border:1px solid #eee;border-radius:3px;box-sizing:border-box;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.next-labelme-header{box-shadow:0 0 4px 0 rgba(0,0,0,.15);font-size:12px;justify-content:space-between;padding:10px 12px}.next-labelme-header,.next-labelme-header__tool,.next-labelme-header__tool>li{align-items:center;display:flex}.next-labelme-header__tool>li{cursor:pointer;justify-content:center;margin:0 6px;text-align:center}.next-labelme-header__tool>li>.label-text{line-height:normal;margin:0;padding:5px 8px}.next-labelme-header__tool>li.tool-item{flex-direction:column}.next-labelme-header__tool>li.tool-item:hover{color:var(--el-color-primary)}.next-labelme-header__tool>li.tool-item:hover svg{fill:var(--el-color-primary)}.next-labelme-main{align-items:center;display:flex;justify-content:space-between}.next-labelme-main__content{align-items:center;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAADZJREFUOE9jZKAQMFKon2HUAAYah8HZs2f/MzAw3DY2NlbDFVt4Y4FiA4hJI6PpgNbpgJhYAAB1/AoRxXg31wAAAABJRU5ErkJggg==);display:flex;flex:1 1 100%;height:100%;justify-content:center}.next-labelme-main .next-labelme-loading{align-items:center;display:flex;justify-content:center;width:100%}.next-labelme-main .next-labelme-canvas{height:100%;min-height:500px;position:relative;width:100%}.next-labelme-main .next-labelme-canvas__context{height:100%;position:absolute;width:100%;z-index:3}.next-labelme-main .next-labelme-canvas__rect{height:100%;position:absolute;width:100%;z-index:1}.next-labelme-footer{align-items:center;display:flex;justify-content:space-between;padding:20px 12px 8px}.next-labelme-footer .left-right,.next-labelme-footer .next-labelme-footer__left,.next-labelme-footer .next-labelme-footer__right{align-items:center;display:flex;flex:0 0 50px;justify-content:center}.next-labelme-footer .left-right .el-icon:hover,.next-labelme-footer .next-labelme-footer__left .el-icon:hover,.next-labelme-footer .next-labelme-footer__right .el-icon:hover{cursor:pointer}.next-labelme-footer__center{flex:1 1 auto}.next-labelme-footer__center--list{align-items:center;display:flex;flex-wrap:nowrap;justify-content:flex-start;min-height:80px}.next-labelme-footer__center--list>li{background-color:#fff;border:1px solid #eee;box-sizing:border-box;cursor:pointer;flex:0 0 100px;height:80px;margin:0 5px;overflow:hidden;text-align:center}.next-labelme-footer__center--list>li.is-activate,.next-labelme-footer__center--list>li:hover{border:1px solid var(--el-color-primary)}
|
package/dist/index.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* 作 者:huangteng
|
|
4
4
|
* 邮 箱:htengweb@163.com
|
|
5
|
-
* 当前版本:0.3.
|
|
6
|
-
* 发布日期:2024-09-
|
|
5
|
+
* 当前版本:0.3.7 v
|
|
6
|
+
* 发布日期:2024-09-21
|
|
7
7
|
* 地 址:https://www.npmjs.com/package/next-element-vue
|
|
8
8
|
*/
|
|
9
9
|
|
|
@@ -6024,7 +6024,7 @@ var ToolHeader = defineComponent({
|
|
|
6024
6024
|
},
|
|
6025
6025
|
emits: [ "fullscreen", "save" ],
|
|
6026
6026
|
setup(props, {emit: emit}) {
|
|
6027
|
-
const _ns = inject("ns", {}), {t: t} = useLocale(), switchFillscreen = val => {
|
|
6027
|
+
const _ns = inject("ns", {}), scaleTranslateManager = inject("scaleTranslateManager", {}), scaleTranslate = scaleTranslateManager.scaleTranslate, {t: t} = useLocale(), switchFillscreen = val => {
|
|
6028
6028
|
emit("fullscreen", val), document.body.style.overflow = val ? "hidden" : "auto";
|
|
6029
6029
|
};
|
|
6030
6030
|
return () => createVNode(Fragment, null, [ createVNode(Fragment, null, [ createVNode("ul", {
|
|
@@ -6051,7 +6051,28 @@ var ToolHeader = defineComponent({
|
|
|
6051
6051
|
style: "padding-left: 3px"
|
|
6052
6052
|
}, [ t("next.labelimg.saveLabel") ]) ]) ]), createVNode("ul", {
|
|
6053
6053
|
class: [ _ns.be("header", "tool") ]
|
|
6054
|
-
}, [
|
|
6054
|
+
}, [ createVNode("li", {
|
|
6055
|
+
class: "hover",
|
|
6056
|
+
onClick: () => scaleTranslateManager.onResetScaleTranslate()
|
|
6057
|
+
}, [ createVNode("svg", {
|
|
6058
|
+
t: "1725840994827",
|
|
6059
|
+
class: "icon",
|
|
6060
|
+
viewBox: "0 0 1024 1024",
|
|
6061
|
+
version: "1.1",
|
|
6062
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
6063
|
+
"p-id": "6051",
|
|
6064
|
+
width: "18",
|
|
6065
|
+
height: "18"
|
|
6066
|
+
}, [ createVNode("path", {
|
|
6067
|
+
d: "M322.794667 445.205333a34.133333 34.133333 0 0 1 2.218666 45.824l-2.218666 2.432a34.133333 34.133333 0 0 1-45.824 2.218667l-2.432-2.218667-149.333334-149.333333a34.133333 34.133333 0 0 1-2.218666-45.824l2.218666-2.432 149.333334-149.333333a34.133333 34.133333 0 0 1 50.474666 45.824l-2.218666 2.432-91.050667 91.050666L640 285.866667c160.234667 0 290.133333 129.898667 290.133333 290.133333 0 158.016-126.314667 286.506667-283.477333 290.048L640 866.133333H234.666667a34.133333 34.133333 0 0 1-3.114667-68.117333L234.666667 797.866667h405.333333c122.538667 0 221.866667-99.328 221.866667-221.866667 0-120.533333-96.106667-218.602667-215.850667-221.781333L640 354.133333l-408.256-0.021333 91.050667 91.093333z",
|
|
6068
|
+
"p-id": "6052"
|
|
6069
|
+
}, null) ]), createVNode("span", {
|
|
6070
|
+
style: "padding-left: 3px"
|
|
6071
|
+
}, [ t("next.labelimg.zoomRestore") ]) ]), createVNode("li", null, [ createVNode("span", null, [ createTextVNode("缩放比例") ]), createVNode("span", null, [ parseInt((100 * scaleTranslate.value.scale).toString()), createTextVNode("%") ]), createVNode("span", {
|
|
6072
|
+
style: "padding: 0 10px;"
|
|
6073
|
+
}, [ createTextVNode("偏移量") ]), createVNode("span", {
|
|
6074
|
+
style: "min-width: 120px; text-align: left;"
|
|
6075
|
+
}, [ createTextVNode("X: "), scaleTranslate.value.x, createTextVNode(", Y: "), scaleTranslate.value.y ]) ]), props.imageLength ? createVNode("li", null, [ createVNode("span", null, [ createTextVNode("第 "), props.imageIndex + 1, createTextVNode(" 张") ]), createVNode("em", {
|
|
6055
6076
|
style: "padding: 0 5px;"
|
|
6056
6077
|
}, [ createTextVNode("/") ]), createVNode("span", null, [ createTextVNode("共 "), props.imageLength, createTextVNode(" 张") ]) ]) : null, createVNode("li", {
|
|
6057
6078
|
style: "margin-right: 30px;",
|
|
@@ -6072,7 +6093,7 @@ var ToolHeader = defineComponent({
|
|
|
6072
6093
|
}) ]),
|
|
6073
6094
|
default: () => createVNode("ul", {
|
|
6074
6095
|
style: "font-size: 12px;white-space: nowrap;"
|
|
6075
|
-
}, [ createVNode("li", null, [ createVNode("span", null, [ createTextVNode("W:") ]), createVNode("span", null, [ createTextVNode("鼠标移入图片中,长按W键,鼠标按下左键,移动鼠标开始绘制,鼠标抬起结束绘制") ]) ]), createVNode("li", null, [ createVNode("span", null, [ createTextVNode("A:") ]), createVNode("span", null, [ createTextVNode("A键进入上一张图片进行标注") ]) ]), createVNode("li", null, [ createVNode("span", null, [ createTextVNode("D:") ]), createVNode("span", null, [ createTextVNode("D键进入下一张图片进行标注") ]) ]) ])
|
|
6096
|
+
}, [ createVNode("li", null, [ createVNode("span", null, [ createTextVNode("W:") ]), createVNode("span", null, [ createTextVNode("鼠标移入图片中,长按W键,鼠标按下左键,移动鼠标开始绘制,鼠标抬起结束绘制") ]) ]), createVNode("li", null, [ createVNode("span", null, [ createTextVNode("A:") ]), createVNode("span", null, [ createTextVNode("A键进入上一张图片进行标注") ]) ]), createVNode("li", null, [ createVNode("span", null, [ createTextVNode("D:") ]), createVNode("span", null, [ createTextVNode("D键进入下一张图片进行标注") ]) ]), createVNode("li", null, [ createVNode("span", null, [ createTextVNode("Ctrl+鼠标滚轮:") ]), createVNode("span", null, [ createTextVNode("长按Ctrl+鼠标滚轮对图片进行缩放") ]) ]), createVNode("li", null, [ createVNode("span", null, [ createTextVNode("Ctrl+鼠标左键:") ]), createVNode("span", null, [ createTextVNode("长按Ctrl+鼠标左键对图片进行拖拽移动") ]) ]) ])
|
|
6076
6097
|
}) ]), props.isFullscreen ? createVNode("li", {
|
|
6077
6098
|
class: "hover",
|
|
6078
6099
|
onClick: () => switchFillscreen(!1)
|
|
@@ -6220,6 +6241,101 @@ var ContextMenuLabel = defineComponent({
|
|
|
6220
6241
|
}
|
|
6221
6242
|
});
|
|
6222
6243
|
|
|
6244
|
+
class CanvasSceneDragZoom {
|
|
6245
|
+
canvas;
|
|
6246
|
+
canvasWidth;
|
|
6247
|
+
canvasHeight;
|
|
6248
|
+
ctx;
|
|
6249
|
+
scaleFactor=1;
|
|
6250
|
+
preScaleFactor=1;
|
|
6251
|
+
offset={
|
|
6252
|
+
x: 0,
|
|
6253
|
+
y: 0
|
|
6254
|
+
};
|
|
6255
|
+
preOffset={
|
|
6256
|
+
x: 0,
|
|
6257
|
+
y: 0
|
|
6258
|
+
};
|
|
6259
|
+
mousePositioin={
|
|
6260
|
+
x: 0,
|
|
6261
|
+
y: 0
|
|
6262
|
+
};
|
|
6263
|
+
maxScale=8;
|
|
6264
|
+
minScale=.5;
|
|
6265
|
+
scaleStep=.1;
|
|
6266
|
+
clickX=0;
|
|
6267
|
+
clickY=0;
|
|
6268
|
+
observers=[];
|
|
6269
|
+
constructor(canvas) {
|
|
6270
|
+
this.canvas = canvas, this.canvasWidth = canvas.width, this.canvasHeight = canvas.height,
|
|
6271
|
+
this.ctx = canvas.getContext("2d"), this.canvasMousedown = this.canvasMousedown.bind(this),
|
|
6272
|
+
this.canvasMousemove = this.canvasMousemove.bind(this), this.canvasMouseup = this.canvasMouseup.bind(this),
|
|
6273
|
+
this.canvas.addEventListener("mousedown", this.canvasMousedown), this.canvas.addEventListener("wheel", this.canvasMousewheel, {
|
|
6274
|
+
passive: !1
|
|
6275
|
+
}), window.addEventListener("wheel", this.onWindowWheel, {
|
|
6276
|
+
passive: !1
|
|
6277
|
+
});
|
|
6278
|
+
}
|
|
6279
|
+
notifyObservers(scale, offset) {
|
|
6280
|
+
this.observers.forEach((listener => {
|
|
6281
|
+
listener({
|
|
6282
|
+
scale: scale,
|
|
6283
|
+
...offset
|
|
6284
|
+
});
|
|
6285
|
+
}));
|
|
6286
|
+
}
|
|
6287
|
+
changeZoom(callback) {
|
|
6288
|
+
this.observers.push(callback);
|
|
6289
|
+
}
|
|
6290
|
+
reset() {
|
|
6291
|
+
this.scaleFactor = 1, this.preScaleFactor = 1, this.offset = {
|
|
6292
|
+
x: 0,
|
|
6293
|
+
y: 0
|
|
6294
|
+
}, this.preOffset = {
|
|
6295
|
+
x: 0,
|
|
6296
|
+
y: 0
|
|
6297
|
+
}, this.mousePositioin = {
|
|
6298
|
+
x: 0,
|
|
6299
|
+
y: 0
|
|
6300
|
+
}, this.zoom();
|
|
6301
|
+
}
|
|
6302
|
+
render() {
|
|
6303
|
+
this.canvas.width = this.canvasWidth, this.notifyObservers(this.scaleFactor, this.offset);
|
|
6304
|
+
}
|
|
6305
|
+
zoom() {
|
|
6306
|
+
const offset_x = this.mousePositioin.x - (this.mousePositioin.x - this.offset.x) * this.scaleFactor / this.preScaleFactor, offset_y = this.mousePositioin.y - (this.mousePositioin.y - this.offset.y) * this.scaleFactor / this.preScaleFactor;
|
|
6307
|
+
this.offset.x = Math.ceil(offset_x), this.offset.y = Math.ceil(offset_y), this.render(),
|
|
6308
|
+
this.preScaleFactor = this.scaleFactor, this.preOffset.x = this.offset.x, this.preOffset.y = this.offset.y;
|
|
6309
|
+
}
|
|
6310
|
+
onWindowWheel=e => {
|
|
6311
|
+
e.ctrlKey && e.preventDefault();
|
|
6312
|
+
};
|
|
6313
|
+
canvasMousewheel=event => {
|
|
6314
|
+
event.preventDefault(), event.ctrlKey && (this.mousePositioin.x = event.offsetX,
|
|
6315
|
+
this.mousePositioin.y = event.offsetY, event.deltaY > 0 ? (this.scaleFactor = parseFloat((this.scaleFactor + this.scaleStep).toFixed(1)),
|
|
6316
|
+
this.scaleFactor > this.maxScale && (this.scaleFactor = this.maxScale)) : (this.scaleFactor = parseFloat((this.scaleFactor - this.scaleStep).toFixed(1)),
|
|
6317
|
+
this.scaleFactor < this.minScale && (this.scaleFactor = this.minScale)), this.zoom());
|
|
6318
|
+
};
|
|
6319
|
+
canvasMousedown(event) {
|
|
6320
|
+
event.preventDefault(), 0 === event.button && event.ctrlKey && (this.clickX = event.offsetX,
|
|
6321
|
+
this.clickY = event.offsetY, this.canvas.addEventListener("mousemove", this.canvasMousemove),
|
|
6322
|
+
this.canvas.addEventListener("mouseup", this.canvasMouseup));
|
|
6323
|
+
}
|
|
6324
|
+
canvasMousemove(event) {
|
|
6325
|
+
event.preventDefault(), event.ctrlKey && (this.offset.x = Math.ceil(this.preOffset.x + (event.offsetX - this.clickX)),
|
|
6326
|
+
this.offset.y = Math.ceil(this.preOffset.y + (event.offsetY - this.clickY)), this.render());
|
|
6327
|
+
}
|
|
6328
|
+
canvasMouseup(event) {
|
|
6329
|
+
event.preventDefault(), event.ctrlKey && (this.preOffset.x = this.offset.x, this.preOffset.y = this.offset.y,
|
|
6330
|
+
this.canvas.removeEventListener("mousemove", this.canvasMousemove), this.canvas.removeEventListener("mouseup", this.canvasMouseup));
|
|
6331
|
+
}
|
|
6332
|
+
destroy() {
|
|
6333
|
+
this.canvas.removeEventListener("mousedown", this.canvasMousedown), this.canvas.removeEventListener("mousemove", this.canvasMousemove),
|
|
6334
|
+
this.canvas.removeEventListener("mouseup", this.canvasMouseup), this.canvas.removeEventListener("wheel", this.canvasMousewheel),
|
|
6335
|
+
window.removeEventListener("wheel", this.onWindowWheel);
|
|
6336
|
+
}
|
|
6337
|
+
}
|
|
6338
|
+
|
|
6223
6339
|
const {hexToRgb: hexToRgb} = useChangeColor();
|
|
6224
6340
|
|
|
6225
6341
|
var DraggableRect = defineComponent({
|
|
@@ -6239,7 +6355,7 @@ var DraggableRect = defineComponent({
|
|
|
6239
6355
|
},
|
|
6240
6356
|
emits: [ "draggle-resize", "contextmenu" ],
|
|
6241
6357
|
setup(props, {emit: emit}) {
|
|
6242
|
-
const isDraggle = ref(!1), isResizeCorner = ref({
|
|
6358
|
+
const scaleTranslate = inject("scaleTranslateManager", {}).scaleTranslate, isDraggle = ref(!1), isResizeCorner = ref({
|
|
6243
6359
|
topLeft: !1,
|
|
6244
6360
|
topCenter: !1,
|
|
6245
6361
|
topRight: !1,
|
|
@@ -6259,66 +6375,68 @@ var DraggableRect = defineComponent({
|
|
|
6259
6375
|
isResizeCorner.value.rightCenter = !1, isResizeCorner.value.bottomLeft = !1, isResizeCorner.value.bottomCenter = !1,
|
|
6260
6376
|
isResizeCorner.value.bottomRight = !1, emit("draggle-resize", rect.value);
|
|
6261
6377
|
}, onMousemove = e => {
|
|
6378
|
+
const {scale: scale, x: x, y: y} = scaleTranslate.value, min_size = 30 / scale, startX = Math.ceil(rect.value.startX * scale + x), startY = Math.ceil(rect.value.startY * scale + y);
|
|
6262
6379
|
if (isDraggle.value) {
|
|
6263
|
-
const newLeft = e.clientX - parentRect.left - draggleOffset.value.diff_x, newTop = e.clientY - parentRect.top - draggleOffset.value.diff_y;
|
|
6264
|
-
rect.value.startX = Math.max(0, Math.min(
|
|
6265
|
-
rect.value.startY = Math.max(0, Math.min(
|
|
6380
|
+
const newLeft = e.clientX - parentRect.left - draggleOffset.value.diff_x, newTop = e.clientY - parentRect.top - draggleOffset.value.diff_y, offsetX = Math.ceil((newLeft - x) / scale), offsetY = Math.ceil((newTop - y) / scale);
|
|
6381
|
+
rect.value.startX = Math.max(0, Math.min(offsetX, parentRect.width - rect.value.rectWidth)),
|
|
6382
|
+
rect.value.startY = Math.max(0, Math.min(offsetY, parentRect.height - rect.value.rectHeight));
|
|
6266
6383
|
}
|
|
6267
6384
|
if (isResizeCorner.value.bottomCenter) {
|
|
6268
|
-
let newHeight = e.clientY - parentRect.top -
|
|
6269
|
-
newHeight <
|
|
6385
|
+
let newHeight = Math.floor((e.clientY - parentRect.top - startY) / scale);
|
|
6386
|
+
newHeight < min_size && (newHeight = min_size), newHeight + rect.value.startY > parentRect.height && (newHeight = parentRect.height - rect.value.startY),
|
|
6270
6387
|
rect.value.rectHeight = newHeight;
|
|
6271
6388
|
}
|
|
6272
6389
|
if (isResizeCorner.value.topCenter) {
|
|
6273
|
-
let newTop = e.clientY - parentRect.top, newHeight = rect.value.startY - newTop + rect.value.rectHeight;
|
|
6390
|
+
let newTop = Math.floor((e.clientY - parentRect.top - y) / scale), newHeight = rect.value.startY - newTop + rect.value.rectHeight;
|
|
6274
6391
|
if (newTop < 0) return;
|
|
6275
|
-
if (newHeight <
|
|
6392
|
+
if (newHeight < min_size) return;
|
|
6276
6393
|
rect.value.rectHeight = newHeight, rect.value.startY = Math.max(0, Math.min(newTop, parentRect.height - rect.value.rectHeight));
|
|
6277
6394
|
}
|
|
6278
6395
|
if (isResizeCorner.value.leftCenter) {
|
|
6279
|
-
let newLeft = e.clientX - parentRect.left, newWidth = rect.value.startX - newLeft + rect.value.rectWidth;
|
|
6396
|
+
let newLeft = Math.floor((e.clientX - parentRect.left - x) / scale), newWidth = rect.value.startX - newLeft + rect.value.rectWidth;
|
|
6280
6397
|
if (newLeft < 0) return;
|
|
6281
|
-
if (newWidth <
|
|
6398
|
+
if (newWidth < min_size) return;
|
|
6282
6399
|
rect.value.startX = Math.max(0, Math.min(newLeft, parentRect.width - rect.value.rectWidth)),
|
|
6283
6400
|
rect.value.rectWidth = newWidth;
|
|
6284
6401
|
}
|
|
6285
6402
|
if (isResizeCorner.value.rightCenter) {
|
|
6286
|
-
let newWidth = e.clientX - parentRect.left -
|
|
6287
|
-
newWidth <
|
|
6403
|
+
let newWidth = Math.floor((e.clientX - parentRect.left - startX) / scale);
|
|
6404
|
+
newWidth < min_size && (newWidth = min_size), newWidth + rect.value.startX > parentRect.width && (newWidth = parentRect.width - rect.value.startX),
|
|
6288
6405
|
rect.value.rectWidth = newWidth;
|
|
6289
6406
|
}
|
|
6290
6407
|
if (isResizeCorner.value.bottomRight) {
|
|
6291
|
-
let newWidth = e.clientX - parentRect.left -
|
|
6292
|
-
newWidth <
|
|
6408
|
+
let newWidth = Math.floor((e.clientX - parentRect.left - startX) / scale), newHeight = Math.floor((e.clientY - parentRect.top - startY) / scale);
|
|
6409
|
+
newWidth < min_size && (newWidth = min_size), newHeight < min_size && (newHeight = min_size),
|
|
6410
|
+
newWidth + rect.value.startX > parentRect.width && (newWidth = parentRect.width - rect.value.startX),
|
|
6293
6411
|
newHeight + rect.value.startY > parentRect.height && (newHeight = parentRect.height - rect.value.startY),
|
|
6294
6412
|
rect.value.rectWidth = newWidth, rect.value.rectHeight = newHeight;
|
|
6295
6413
|
}
|
|
6296
6414
|
if (isResizeCorner.value.bottomLeft) {
|
|
6297
|
-
let newLeft = e.clientX - parentRect.left, newWidth = rect.value.startX - newLeft + rect.value.rectWidth, newHeight = e.clientY - parentRect.top -
|
|
6415
|
+
let newLeft = Math.floor((e.clientX - parentRect.left - x) / scale), newWidth = rect.value.startX - newLeft + rect.value.rectWidth, newHeight = Math.floor((e.clientY - parentRect.top - startY) / scale);
|
|
6298
6416
|
if (newLeft < 0) return;
|
|
6299
|
-
if (newWidth <
|
|
6300
|
-
newHeight <
|
|
6417
|
+
if (newWidth < min_size) return;
|
|
6418
|
+
newHeight < min_size && (newHeight = min_size), newHeight + rect.value.startY > parentRect.height && (newHeight = parentRect.height - rect.value.startY),
|
|
6301
6419
|
rect.value.startX = Math.max(0, Math.min(newLeft, parentRect.width - rect.value.rectWidth)),
|
|
6302
6420
|
rect.value.rectWidth = newWidth, rect.value.rectHeight = newHeight;
|
|
6303
6421
|
}
|
|
6304
6422
|
if (isResizeCorner.value.topLeft) {
|
|
6305
|
-
let newTop = e.clientY - parentRect.top, newHeight = rect.value.startY - newTop + rect.value.rectHeight;
|
|
6423
|
+
let newTop = Math.floor((e.clientY - parentRect.top - y) / scale), newHeight = rect.value.startY - newTop + rect.value.rectHeight;
|
|
6306
6424
|
if (newTop < 0) return;
|
|
6307
|
-
if (newHeight <
|
|
6425
|
+
if (newHeight < min_size) return;
|
|
6308
6426
|
rect.value.rectHeight = newHeight, rect.value.startY = Math.max(0, Math.min(newTop, parentRect.height - rect.value.rectHeight));
|
|
6309
|
-
let newLeft = e.clientX - parentRect.left, newWidth = rect.value.startX - newLeft + rect.value.rectWidth;
|
|
6427
|
+
let newLeft = Math.floor((e.clientX - parentRect.left - x) / scale), newWidth = rect.value.startX - newLeft + rect.value.rectWidth;
|
|
6310
6428
|
if (newLeft < 0) return;
|
|
6311
|
-
if (newWidth <
|
|
6429
|
+
if (newWidth < min_size) return;
|
|
6312
6430
|
rect.value.startX = Math.max(0, Math.min(newLeft, parentRect.width - rect.value.rectWidth)),
|
|
6313
6431
|
rect.value.rectWidth = newWidth;
|
|
6314
6432
|
}
|
|
6315
6433
|
if (isResizeCorner.value.topRight) {
|
|
6316
|
-
let newTop = e.clientY - parentRect.top, newHeight = rect.value.startY - newTop + rect.value.rectHeight;
|
|
6434
|
+
let newTop = Math.floor((e.clientY - parentRect.top - y) / scale), newHeight = rect.value.startY - newTop + rect.value.rectHeight;
|
|
6317
6435
|
if (newTop < 0) return;
|
|
6318
|
-
if (newHeight <
|
|
6436
|
+
if (newHeight < min_size) return;
|
|
6319
6437
|
rect.value.rectHeight = newHeight, rect.value.startY = Math.max(0, Math.min(newTop, parentRect.height - rect.value.rectHeight));
|
|
6320
|
-
let newWidth = e.clientX - parentRect.left -
|
|
6321
|
-
newWidth <
|
|
6438
|
+
let newWidth = Math.floor((e.clientX - parentRect.left - startX) / scale);
|
|
6439
|
+
newWidth < min_size && (newWidth = min_size), newWidth + rect.value.startX > parentRect.width && (newWidth = parentRect.width - rect.value.startX),
|
|
6322
6440
|
rect.value.rectWidth = newWidth;
|
|
6323
6441
|
}
|
|
6324
6442
|
};
|
|
@@ -6343,11 +6461,23 @@ var DraggableRect = defineComponent({
|
|
|
6343
6461
|
};
|
|
6344
6462
|
},
|
|
6345
6463
|
render() {
|
|
6346
|
-
const _ns = inject("ns", {}), props = this.$props;
|
|
6464
|
+
const _ns = inject("ns", {}), scaleTranslate = inject("scaleTranslateManager", {}).scaleTranslate, props = this.$props;
|
|
6347
6465
|
return createVNode("div", {
|
|
6348
6466
|
class: [ _ns.b("draggable-rect") ],
|
|
6349
6467
|
style: (() => {
|
|
6350
|
-
const {startX: startX, startY: startY, rectWidth: rectWidth, rectHeight: rectHeight} =
|
|
6468
|
+
const {startX: startX, startY: startY, rectWidth: rectWidth, rectHeight: rectHeight} = ((rect, scaleOffset) => {
|
|
6469
|
+
const {startX: startX, startY: startY, rectWidth: rectWidth, rectHeight: rectHeight} = rect, {scale: scale, x: x, y: y} = scaleOffset;
|
|
6470
|
+
return {
|
|
6471
|
+
startX: Math.ceil(startX * scale + x),
|
|
6472
|
+
startY: Math.ceil(startY * scale + y),
|
|
6473
|
+
rectWidth: Math.ceil(rectWidth * scale),
|
|
6474
|
+
rectHeight: Math.ceil(rectHeight * scale),
|
|
6475
|
+
canvasWidth: rect.canvasWidth,
|
|
6476
|
+
canvasHeight: rect.canvasHeight,
|
|
6477
|
+
originWidth: rect.originWidth,
|
|
6478
|
+
originHeight: rect.originHeight
|
|
6479
|
+
};
|
|
6480
|
+
})(this.rect, scaleTranslate.value), style = {
|
|
6351
6481
|
top: startY + "px",
|
|
6352
6482
|
left: startX + "px",
|
|
6353
6483
|
width: rectWidth + "px",
|
|
@@ -6408,7 +6538,7 @@ var DraggableRect = defineComponent({
|
|
|
6408
6538
|
},
|
|
6409
6539
|
emits: [ "change" ],
|
|
6410
6540
|
setup(props, {emit: emit, expose: expose}) {
|
|
6411
|
-
const ns = inject("ns", {}), _emit = inject("_emit", null), mainBasaeRef = ref(), canvasMainRef = ref(), canvasBaseRef = ref(), canvasRectRef = ref(), labels = ref([]), drawBaseCanvas = ref({}), formatLabelsType = () => {
|
|
6541
|
+
const ns = inject("ns", {}), _emit = inject("_emit", null), scaleTranslateManager = inject("scaleTranslateManager", {}), mainBasaeRef = ref(), canvasMainRef = ref(), canvasBaseRef = ref(), canvasRectRef = ref(), labels = ref([]), drawBaseCanvas = ref({}), canvasDragZoom = ref(), formatLabelsType = () => {
|
|
6412
6542
|
const _labels = deepClone(labels.value);
|
|
6413
6543
|
let yolo_label = [];
|
|
6414
6544
|
return {
|
|
@@ -6470,9 +6600,9 @@ var DraggableRect = defineComponent({
|
|
|
6470
6600
|
return scale_rects;
|
|
6471
6601
|
})(labels.value, canvasHeight);
|
|
6472
6602
|
const {updateLabels: updateLabels, addDrawRect: addDrawRect, hitCanvasLabel: hitCanvasLabel} = (options => {
|
|
6473
|
-
const {canvas: canvas, ctx: ctx, labels: labels, image: image, canvasWidth: canvasWidth, canvasHeight: canvasHeight} = options, updateLabels =
|
|
6474
|
-
|
|
6475
|
-
ctx.scale(scaleOffset.scale, scaleOffset.scale)), ctx.clearRect(0, 0, canvasWidth, canvasHeight),
|
|
6603
|
+
const {canvas: canvas, ctx: ctx, labels: labels, image: image, canvasWidth: canvasWidth, canvasHeight: canvasHeight, scaleOffset: scaleOffset} = options, updateLabels = () => {
|
|
6604
|
+
canvas.width = canvasWidth, scaleOffset.value && (ctx.save(), ctx.translate(scaleOffset.value.x, scaleOffset.value.y),
|
|
6605
|
+
ctx.scale(scaleOffset.value.scale, scaleOffset.value.scale)), ctx.clearRect(0, 0, canvasWidth, canvasHeight),
|
|
6476
6606
|
ctx.drawImage(image, 0, 0, canvasWidth, canvasHeight);
|
|
6477
6607
|
for (let i = 0; i < labels.length; i++) {
|
|
6478
6608
|
const rect = labels[i], {startX: startX, startY: startY, rectWidth: rectWidth, rectHeight: rectHeight, type: type} = rect, color = colors$1[type % colors$1.length];
|
|
@@ -6512,7 +6642,8 @@ var DraggableRect = defineComponent({
|
|
|
6512
6642
|
canvasWidth: canvasWidth,
|
|
6513
6643
|
canvasHeight: canvasHeight,
|
|
6514
6644
|
labels: labels.value,
|
|
6515
|
-
scaleFactor: scaleFactor
|
|
6645
|
+
scaleFactor: scaleFactor,
|
|
6646
|
+
scaleOffset: scaleTranslateManager.scaleTranslate
|
|
6516
6647
|
});
|
|
6517
6648
|
drawBaseCanvas.value.updateLabels = updateLabels, drawBaseCanvas.value.addDrawRect = addDrawRect,
|
|
6518
6649
|
drawBaseCanvas.value.hitCanvasLabel = hitCanvasLabel;
|
|
@@ -6579,30 +6710,45 @@ var DraggableRect = defineComponent({
|
|
|
6579
6710
|
originWidth: originWidth,
|
|
6580
6711
|
originHeight: originHeight
|
|
6581
6712
|
}, ((rect, {endX: endX, endY: endY}) => {
|
|
6582
|
-
activate_add_label.value = rect
|
|
6713
|
+
activate_add_label.value = rect;
|
|
6714
|
+
const newRect = ((rect, scaleOffset) => {
|
|
6715
|
+
const {startX: startX, startY: startY, rectWidth: rectWidth, rectHeight: rectHeight} = rect, {scale: scale, x: x, y: y} = scaleOffset;
|
|
6716
|
+
return {
|
|
6717
|
+
startX: Math.ceil((startX - x) / scale),
|
|
6718
|
+
startY: Math.ceil((startY - y) / scale),
|
|
6719
|
+
rectWidth: Math.ceil(rectWidth / scale),
|
|
6720
|
+
rectHeight: Math.ceil(rectHeight / scale),
|
|
6721
|
+
canvasWidth: rect.canvasWidth,
|
|
6722
|
+
canvasHeight: rect.canvasHeight,
|
|
6723
|
+
originWidth: rect.originWidth,
|
|
6724
|
+
originHeight: rect.originHeight
|
|
6725
|
+
};
|
|
6726
|
+
})(rect, scaleTranslateManager.scaleTranslate.value);
|
|
6727
|
+
drawBaseCanvas.value.addDrawRect(newRect), updateContextmenuLabelFixed(endX, endY, newRect);
|
|
6583
6728
|
}), (() => {
|
|
6584
6729
|
onCloseDraggableRectFixed();
|
|
6585
6730
|
}));
|
|
6586
|
-
drawBaseCanvas.value.clearCanvasRect = clearCanvas, drawBaseCanvas.value.removeEventAll = removeEventAll
|
|
6731
|
+
drawBaseCanvas.value.clearCanvasRect = clearCanvas, drawBaseCanvas.value.removeEventAll = removeEventAll,
|
|
6732
|
+
canvasDragZoom.value = new CanvasSceneDragZoom(canvasBaseRef.value), canvasDragZoom.value.changeZoom((scaleOffset => {
|
|
6733
|
+
scaleTranslateManager.onChangeScaleTranslate(scaleOffset), drawBaseCanvas.value.updateLabels();
|
|
6734
|
+
}));
|
|
6587
6735
|
}, image.onerror = () => {
|
|
6588
6736
|
loadingImage.value = !1;
|
|
6589
6737
|
};
|
|
6590
6738
|
}
|
|
6591
6739
|
canvasBaseRef.value.addEventListener("contextmenu", (e => {
|
|
6592
6740
|
e.preventDefault();
|
|
6593
|
-
const
|
|
6741
|
+
const offsetX = e.offsetX, offsetY = e.offsetY, {scale: scale, x: x, y: y} = scaleTranslateManager.scaleTranslate.value, new_x = Math.floor((offsetX - x) / scale), new_y = Math.floor((offsetY - y) / scale), {hit_rect: hit_rect} = drawBaseCanvas.value.hitCanvasLabel(new_x, new_y);
|
|
6594
6742
|
onCloseContentmenuLabel(), onCloseDraggableRectFixed(), hit_rect && nextTick((() => {
|
|
6595
|
-
updateContextmenuLabelFixed(
|
|
6743
|
+
updateContextmenuLabelFixed(offsetX, offsetY, hit_rect);
|
|
6596
6744
|
}));
|
|
6597
6745
|
})), canvasBaseRef.value.addEventListener("click", (e => {
|
|
6598
6746
|
if (e.ctrlKey) return;
|
|
6599
|
-
const
|
|
6747
|
+
const offsetX = e.offsetX, offsetY = e.offsetY, {scale: scale, x: x, y: y} = scaleTranslateManager.scaleTranslate.value, new_x = Math.floor((offsetX - x) / scale), new_y = Math.floor((offsetY - y) / scale), {hit_rect: hit_rect, hit_index: hit_index, color: color} = drawBaseCanvas.value.hitCanvasLabel(new_x, new_y);
|
|
6600
6748
|
onCloseDraggableRectFixed(), onCloseContentmenuLabel(), hit_rect && nextTick((() => {
|
|
6601
|
-
updateDraggableRectFixed(
|
|
6749
|
+
updateDraggableRectFixed(offsetX, offsetY, hit_rect, hit_index, color);
|
|
6602
6750
|
}));
|
|
6603
6751
|
}));
|
|
6604
|
-
}, onWindowWheel = e => {
|
|
6605
|
-
e.ctrlKey && e.preventDefault();
|
|
6606
6752
|
};
|
|
6607
6753
|
onMounted((() => {
|
|
6608
6754
|
watch((() => props.rowInfo), (info => {
|
|
@@ -6620,11 +6766,9 @@ var DraggableRect = defineComponent({
|
|
|
6620
6766
|
const rowInfo = toRaw(props.rowInfo);
|
|
6621
6767
|
renderImageLabel(rowInfo);
|
|
6622
6768
|
}
|
|
6623
|
-
}))
|
|
6624
|
-
passive: !1
|
|
6625
|
-
});
|
|
6769
|
+
}));
|
|
6626
6770
|
})), onUnmounted((() => {
|
|
6627
|
-
drawBaseCanvas.value.removeEventAll?.(),
|
|
6771
|
+
drawBaseCanvas.value.removeEventAll?.(), canvasDragZoom.value.destroy();
|
|
6628
6772
|
}));
|
|
6629
6773
|
const contextmenuLabelFixed = ref({
|
|
6630
6774
|
show: !1,
|
|
@@ -6711,6 +6855,9 @@ var DraggableRect = defineComponent({
|
|
|
6711
6855
|
const rowInfo = toRaw(props.rowInfo);
|
|
6712
6856
|
renderImageLabel(rowInfo);
|
|
6713
6857
|
}));
|
|
6858
|
+
},
|
|
6859
|
+
resetScaleOffset: () => {
|
|
6860
|
+
canvasDragZoom.value.reset();
|
|
6714
6861
|
}
|
|
6715
6862
|
});
|
|
6716
6863
|
return () => createVNode(Fragment, null, [ createVNode(NextSpinLoading, {
|
|
@@ -6912,7 +7059,11 @@ var Element$1 = defineComponent({
|
|
|
6912
7059
|
label_txt: label_txt
|
|
6913
7060
|
}, (imageItem => {
|
|
6914
7061
|
labelImages.value[activateNodeIndex.value] = imageItem || node, activateNodeIndex.value = index,
|
|
6915
|
-
loading.value = !1
|
|
7062
|
+
loading.value = !1, scaleTranslate.value = {
|
|
7063
|
+
scale: 1,
|
|
7064
|
+
x: 0,
|
|
7065
|
+
y: 0
|
|
7066
|
+
};
|
|
6916
7067
|
}), (() => {
|
|
6917
7068
|
loading.value = !1;
|
|
6918
7069
|
})), !0);
|
|
@@ -6945,8 +7096,20 @@ var Element$1 = defineComponent({
|
|
|
6945
7096
|
isFullscreen.value = val, updateMainContentHeight(), nextTick((() => {
|
|
6946
7097
|
canvasContextRef.value.rerenderImage();
|
|
6947
7098
|
}));
|
|
6948
|
-
}
|
|
6949
|
-
|
|
7099
|
+
}, scaleTranslate = ref({
|
|
7100
|
+
scale: 1,
|
|
7101
|
+
x: 0,
|
|
7102
|
+
y: 0
|
|
7103
|
+
});
|
|
7104
|
+
provide("scaleTranslateManager", {
|
|
7105
|
+
scaleTranslate: scaleTranslate,
|
|
7106
|
+
onChangeScaleTranslate: val => {
|
|
7107
|
+
scaleTranslate.value = val;
|
|
7108
|
+
},
|
|
7109
|
+
onResetScaleTranslate: () => {
|
|
7110
|
+
canvasContextRef.value.resetScaleOffset();
|
|
7111
|
+
}
|
|
7112
|
+
}), expose({
|
|
6950
7113
|
convertToLabel: convertToLabel,
|
|
6951
7114
|
canvertToCanvas: canvertToCanvas
|
|
6952
7115
|
});
|
|
@@ -7899,7 +8062,7 @@ const zoomDialog = app => {
|
|
|
7899
8062
|
}));
|
|
7900
8063
|
}
|
|
7901
8064
|
});
|
|
7902
|
-
}, version = "0.3.
|
|
8065
|
+
}, version = "0.3.7", install = function(app) {
|
|
7903
8066
|
Object.keys(components).forEach((key => {
|
|
7904
8067
|
const component = components[key];
|
|
7905
8068
|
app.component(component.name, component);
|
|
@@ -7909,7 +8072,7 @@ const zoomDialog = app => {
|
|
|
7909
8072
|
};
|
|
7910
8073
|
|
|
7911
8074
|
var index = {
|
|
7912
|
-
version: "0.3.
|
|
8075
|
+
version: "0.3.7",
|
|
7913
8076
|
install: install
|
|
7914
8077
|
};
|
|
7915
8078
|
|