|
@@ -582,8 +582,13 @@ var Clip = {
|
|
|
|
|
|
|
|
|
|
|
|
- screenshot: async ( rulerToolFactory /*unitText = '像素 : 米' */ )=>{ //测绘图下载。顶视图|侧视图
|
|
|
-
|
|
|
+ screenshot: async (ifShowRuler, rulerToolFactory /*unitText = '像素 : 米' */ )=>{ //测绘图下载。顶视图|侧视图
|
|
|
+ if(!rulerToolFactory){
|
|
|
+ ifShowRuler = false
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
let getRulerUnit = (num)=>{
|
|
|
let unitSystem = 'metric'
|
|
|
let str = viewer.unitConvert.convert(num, 'distance', 0, unitSystem, true ,
|
|
@@ -690,7 +695,7 @@ var Clip = {
|
|
|
|
|
|
|
|
|
let beforeScreenshot = ()=>{
|
|
|
- //if(rulerToolFactory){
|
|
|
+ //if(ifShowRuler){
|
|
|
let ruler = Clip.getRulerBound()
|
|
|
Object.assign(rulerBound,ruler)
|
|
|
//因为focusOnObject时有最小边界,所以当box很小时截图区域不止box
|
|
@@ -715,25 +720,25 @@ var Clip = {
|
|
|
const fontsize = math.linearClamp(w, [100, 700, 8000], [12, 20, 30])
|
|
|
|
|
|
const marginSelf = {//img外的margin(标尺内)
|
|
|
- left : rulerToolFactory ? 76 : 40,
|
|
|
- right : rulerToolFactory ? 30 : 40,
|
|
|
- bottom : (70 + fontsize*2) ,/* rulerToolFactory ? (70 + fontsize*2) : (40 + fontsize*2) ,*/
|
|
|
- top : rulerToolFactory ? 60 : 40,
|
|
|
+ left : ifShowRuler ? 76 : 40,
|
|
|
+ right : ifShowRuler ? 30 : 40,
|
|
|
+ bottom : (70 + fontsize*2) ,/* ifShowRuler ? (70 + fontsize*2) : (40 + fontsize*2) ,*/
|
|
|
+ top : ifShowRuler ? 60 : 40,
|
|
|
}
|
|
|
|
|
|
//文字的边距
|
|
|
- let bottomRatioToImg = - Math.min(fontsize*2.5, rulerToolFactory ? marginSelf.bottom : marginSelf.bottom*0.8 ) / h//- (marginSelf.bottom - fontsize)/ h //在img之下. text底部到img底部的距离
|
|
|
+ let bottomRatioToImg = - Math.min(fontsize*2.5, ifShowRuler ? marginSelf.bottom : marginSelf.bottom*0.8 ) / h//- (marginSelf.bottom - fontsize)/ h //在img之下. text底部到img底部的距离
|
|
|
|
|
|
let rulerMargin = 20//标尺外的margin px
|
|
|
let labelInfo = {
|
|
|
bottomRatioToImg, horizonCenter:true,//leftRatioToImg,
|
|
|
- textColor: rulerToolFactory ? {r: 0, g: 0, b: 0, a: 1} : { r: 255, g: 255, b: 255, a: 1 } ,
|
|
|
+ textColor: ifShowRuler ? {r: 0, g: 0, b: 0, a: 1} : { r: 221, g: 221, b: 221, a: 1 } ,
|
|
|
textBorderColor : { r: 30, g: 30, b: 30, a: 1 },
|
|
|
- textBorderThick : rulerToolFactory ? 0 : 1 ,
|
|
|
+ textBorderThick : ifShowRuler ? 0 : 1 ,
|
|
|
fontsize,
|
|
|
- fontWeight: rulerToolFactory ? 'normal' :'Bold' ,
|
|
|
+ fontWeight: ifShowRuler ? 'normal' :'Bold' ,
|
|
|
outputCanvas : true,
|
|
|
- bgColor: rulerToolFactory ? {r:255,g:255,b:255,a:255}:null
|
|
|
+ bgColor: ifShowRuler ? {r:255,g:255,b:255,a:255}:null
|
|
|
}
|
|
|
|
|
|
labelInfo.bgMargin = {//img外需要多少margin
|
|
@@ -767,26 +772,28 @@ var Clip = {
|
|
|
xNumTicks, yNumTicks, width, height, '#000000'
|
|
|
);
|
|
|
|
|
|
- rulerImg = new Image
|
|
|
- rulerImg.src = result.url
|
|
|
- //Common.downloadFile(result.url, 'ruler.png')
|
|
|
- drawRuler = ()=>{
|
|
|
- if(!labelGot || !rulerGot)return
|
|
|
- resultSrc = Potree.Common.imgAddLabel(canvas, rulerImg,{
|
|
|
- topRatioToImg : rulerMargin / canvas.height,
|
|
|
- leftRatioToImg : rulerMargin / canvas.width,
|
|
|
- })
|
|
|
- resolve( resultSrc )
|
|
|
+ if(ifShowRuler){
|
|
|
+ rulerImg = new Image
|
|
|
+ rulerImg.src = result.url
|
|
|
+ //Common.downloadFile(result.url, 'ruler.png')
|
|
|
+ drawRuler = ()=>{
|
|
|
+ if(!labelGot || !rulerGot)return
|
|
|
+ resultSrc = Potree.Common.imgAddLabel(canvas, rulerImg,{
|
|
|
+ topRatioToImg : rulerMargin / canvas.height,
|
|
|
+ leftRatioToImg : rulerMargin / canvas.width,
|
|
|
+ })
|
|
|
+ resolve( resultSrc )
|
|
|
+ }
|
|
|
+ rulerImg.onload = ()=>{
|
|
|
+ rulerGot = true
|
|
|
+ drawRuler()
|
|
|
+ }
|
|
|
}
|
|
|
- rulerImg.onload = ()=>{
|
|
|
- rulerGot = true
|
|
|
- drawRuler()
|
|
|
- }
|
|
|
|
|
|
console.log('xUnit', result.xUnit, 'yUnit', result.yUnit )
|
|
|
|
|
|
- unitLen = result.xUnit
|
|
|
- }else{
|
|
|
+ unitLen = result.xUnit //为了得到这个,不管需不需要绘制标尺都要rulerToolFactory
|
|
|
+ }else{//本地没有
|
|
|
unitLen = boundSize.x / 10 //假定一个
|
|
|
|
|
|
}
|
|
@@ -816,7 +823,7 @@ var Clip = {
|
|
|
ctx.lineTo(x+lenX, y+lenY/2);
|
|
|
|
|
|
// 设置线条样式(可选)
|
|
|
- ctx.strokeStyle = '#000';
|
|
|
+ ctx.strokeStyle = ifShowRuler ? '#000' : '#ddd';
|
|
|
ctx.lineWidth = 1; // 线条宽度
|
|
|
// 绘制线段
|
|
|
ctx.stroke();
|
|
@@ -831,7 +838,7 @@ var Clip = {
|
|
|
Clip.screenshoting = false
|
|
|
viewer.viewports = [viewer.mainViewport]
|
|
|
|
|
|
- if(rulerToolFactory){
|
|
|
+ if(ifShowRuler){
|
|
|
drawRuler()
|
|
|
}else{
|
|
|
resultSrc = canvas.toDataURL('image/png' )
|