@@ -2284,11 +2284,29 @@ var JSONResponse = {
22842284
22852285 var  x  =  bbox . x  ||  bbox . x0  ||  bbox . x1  ||  bbox . startX  ||  bbox . xStart  ||  bbox . leftTopX  ||  bbox . topLeftX  ||  bbox . start_x  ||  bbox . x_start  ||  bbox . left_top_x  ||  bbox . top_left_x  ||  0 ; 
22862286 var  y  =  bbox . y  ||  bbox . y0  ||  bbox . y1  ||  bbox . startY  ||  bbox . yStart  ||  bbox . leftTopY  ||  bbox . topLeftY  ||  bbox . start_y  ||  bbox . y_start  ||  bbox . left_top_y  ||  bbox . top_left_y  ||  0 ; 
2287-  var  w  =  bbox . w  ||  bbox . width  ||  ( ( bbox . x2  ||  bbox . x1  ||  bbox . rbx  ||  bbox . brx  ||  bbox . endX  ||  bbox . xEnd  ||  bbox . rightBottomX  ||  bbox . bottomRightX  ||  bbox . end_x  ||  bbox . x_end  ||  bbox . right_bottom_x  ||  bbox . bottom_right_x  ||  0 )  -  x ) ; 
2288-  var  h  =  bbox . h  ||  bbox . height  ||  ( ( bbox . y2  ||  bbox . y1  ||  bbox . rby  ||  bbox . bry  ||  bbox . endY  ||  bbox . yEnd  ||  bbox . rightBottomY  ||  bbox . bottomRightY  ||  bbox . end_y  ||  bbox . y_end  ||  bbox . right_bottom_y  ||  bbox . bottom_right_y  ||  0 )  -  y ) ; 
2287+  var  w  =  bbox . width  ||  bbox . w  ||  ( ( bbox . x2  ||  bbox . x1  ||  bbox . rbx  ||  bbox . brx  ||  bbox . endX  ||  bbox . xEnd  ||  bbox . rightBottomX  ||  bbox . bottomRightX  ||  bbox . end_x  ||  bbox . x_end  ||  bbox . right_bottom_x  ||  bbox . bottom_right_x  ||  0 )  -  x ) ; 
2288+  var  h  =  bbox . height  ||  bbox . h  ||  ( ( bbox . y2  ||  bbox . y1  ||  bbox . rby  ||  bbox . bry  ||  bbox . endY  ||  bbox . yEnd  ||  bbox . rightBottomY  ||  bbox . bottomRightY  ||  bbox . end_y  ||  bbox . y_end  ||  bbox . right_bottom_y  ||  bbox . bottom_right_y  ||  0 )  -  y ) ; 
22892289 var  d  =  bbox . degree  ||  bbox . angle  ||  bbox . rotate  ||  bbox . perspective  ||  bbox . d  ||  bbox . r  ||  bbox . p  ||  bbox . a ; 
22902290 return  [ +  ( x  ||  0 ) ,  +  ( y  ||  0 ) ,  +  ( w  ||  0 ) ,  +  ( h  ||  0 ) ,  +  ( d  ||  0 ) ] ; 
22912291 } , 
2292+  getXYXYD : function  ( bbox )  { 
2293+  if  ( bbox  ==  null )  { 
2294+  return  null ; 
2295+  } 
2296+  if  ( JSONResponse . isString ( bbox ) )  { 
2297+  bbox  =  StringUtil . split ( bbox ,  ',' ,  true ) ; 
2298+  } 
2299+  if  ( bbox  instanceof  Array )  { 
2300+  return  [ +  ( bbox [ 0 ]  ||  0 ) ,  +  ( bbox [ 1 ]  ||  0 ) ,  +  ( bbox [ 2 ]  ||  0 ) ,  +  ( bbox [ 3 ]  ||  0 ) ,  +  ( bbox [ 4 ]  ||  0 ) ] ; 
2301+  } 
2302+ 
2303+  var  x  =  bbox . x  ||  bbox . x0  ||  bbox . x1  ||  bbox . startX  ||  bbox . xStart  ||  bbox . leftTopX  ||  bbox . topLeftX  ||  bbox . start_x  ||  bbox . x_start  ||  bbox . left_top_x  ||  bbox . top_left_x  ||  0 ; 
2304+  var  y  =  bbox . y  ||  bbox . y0  ||  bbox . y1  ||  bbox . startY  ||  bbox . yStart  ||  bbox . leftTopY  ||  bbox . topLeftY  ||  bbox . start_y  ||  bbox . y_start  ||  bbox . left_top_y  ||  bbox . top_left_y  ||  0 ; 
2305+  var  x2  =  bbox . x2  ||  bbox . x1  ||  bbox . rbx  ||  bbox . brx  ||  bbox . endX  ||  bbox . xEnd  ||  bbox . rightBottomX  ||  bbox . bottomRightX  ||  bbox . end_x  ||  bbox . x_end  ||  bbox . right_bottom_x  ||  bbox . bottom_right_x  ||  ( ( bbox . width  ||  bbox . w  ||  0 )  +  x ) ; 
2306+  var  y2  =  bbox . y2  ||  bbox . y1  ||  bbox . rby  ||  bbox . bry  ||  bbox . endY  ||  bbox . yEnd  ||  bbox . rightBottomY  ||  bbox . bottomRightY  ||  bbox . end_y  ||  bbox . y_end  ||  bbox . right_bottom_y  ||  bbox . bottom_right_y  ||  ( ( bbox . height  ||  bbox . h  ||  0 )  +  y ) ; 
2307+  var  d  =  bbox . degree  ||  bbox . angle  ||  bbox . rotate  ||  bbox . perspective  ||  bbox . d  ||  bbox . r  ||  bbox . p  ||  bbox . a ; 
2308+  return  [ +  ( x  ||  0 ) ,  +  ( y  ||  0 ) ,  +  ( x2  ||  0 ) ,  +  ( y2  ||  0 ) ,  +  ( d  ||  0 ) ] ; 
2309+  } , 
22922310 /** 
22932311 * 计算两个 bbox([x, y, w, h, r])的 IoU 
22942312 */ 
@@ -2528,7 +2546,7 @@ var JSONResponse = {
25282546 } 
25292547
25302548 const  [ r ,  g ,  b ,  a ]  =  color  ||  [ 0 ,  255 ,  0 ,  255 ] ; 
2531-  const  rgba  =  `rgba(${ r } ${ g } ${ b } ${ hoverBoxId  !=  null  ||  !  isHovered  ? 0.3  : Math . min ( 0.5 ,  a  <  1  ? a  : a  /  255 ) }  ; 
2549+  const  rgba  =  `rgba(${ r } ${ g } ${ b } ${ hoverBoxId  !=  null  &&  !  isHovered  ? 0.3  : Math . min ( 0.5 ,  a  <  1  ? a  : a  /  255 ) }  ; 
25322550
25332551 const  reversedRgba  =  `rgba(${ 255  -  r } ${ 255  -  g } ${ 255  -  b } ${ isHovered  ||  hoverBoxId  ==  null  ? 1  : 0.3 }  ; 
25342552 // const luma = 0.299 * r + 0.587 * g + 0.114 * b; 
@@ -2553,8 +2571,16 @@ var JSONResponse = {
25532571 return 
25542572 } 
25552573
2574+  is_before  =  item [ '@before' ] ; 
2575+  mark  =  '' ; 
2576+  if  ( markable  &&  is_before  !=  true )  { 
2577+  const  isWrong  =  wrongs . indexOf ( isDiff  ? item [ '@index' ]  : index )  >=  0 ;  // item.correct === false; 
2578+  // 绘制 √ 和 × 
2579+  mark  =  isWrong  ? '× '  : '✓ ' ; 
2580+  } 
2581+ 
25562582 // Label 
2557-  const  label  =  ( isDiff  ? ( item [ '@before' ]  ? '- '  : '+ ' )  : '' )  +  `${ item . ocr  ||  item . label  ||  '' } ${ item . id  ||  '' } ${ ( ( JSONResponse . getScore ( item )  ||  0 ) * 100 ) . toFixed ( 0 ) } ${ angle  ==  0  ? ''  : ' '  +  Math . round ( angle )  +  '°' }  ; 
2583+  const  label  =  mark   +   ( isDiff  ? ( is_before  ? '- '  : '+ ' )  : '' )  +  `${ item . ocr  ||  item . label  ||  '' } ${ item . id  ||  '' } ${ ( ( JSONResponse . getScore ( item )  ||  0 ) * 100 ) . toFixed ( 0 ) } ${ angle  ==  0  ? ''  : ' '  +  Math . round ( angle )  +  '°' }  ; 
25582584 // ctx.font = 'bold 36px'; 
25592585 // const size = ctx.measureText(label); 
25602586 // const textHeight = size.height || height*0.1; // Math.max(height*0.1, size.height); 
@@ -2606,17 +2632,6 @@ var JSONResponse = {
26062632 ctx . fillText ( label ,  labelX ,  labelY ) ; 
26072633 ctx . restore ( ) ; 
26082634
2609-  if  ( markable  &&  item [ '@before' ]  !=  true )  { 
2610-  const  isWrong  =  wrongs . indexOf ( isDiff  ? item [ '@index' ]  : index )  >=  0 ;  // item.correct === false; 
2611-  // 绘制 √ 和 × 
2612-  ctx . font  =  `bold ${ fontSize }  ; 
2613-  // ctx.fillStyle = isWrong ? 'red' : 'green'; 
2614-  ctx . fillStyle  =  isWrong  ? 'red'  : 'green' ; 
2615-  const  checkX  =  labelX  +  textWidth  +  4 ; 
2616-  const  checkY  =  labelY ; 
2617-  ctx . fillText ( isWrong  ? '×'  : '√' ,  checkX ,  checkY ) ; 
2618-  } 
2619- 
26202635 JSONResponse . drawDetections ( canvas ,  item ,  options ,  img ,  ctx ) ; 
26212636 } ) ; 
26222637 } 
@@ -2629,12 +2644,12 @@ var JSONResponse = {
26292644 return ; 
26302645 } 
26312646
2632-  var  [ x ,  y ,  w ,   h ,  d ]  =  JSONResponse . getXYWHD ( item ) ; 
2633-  const  isRate  =  Math . abs ( x )  <  1  &&  Math . abs ( y )  <  1  &&  Math . abs ( w )  <  1  &&  Math . abs ( h )  <  1 ; 
2647+  var  [ x ,  y ,  x2 ,   y2 ,  d ]  =  JSONResponse . getXYXYD ( item ) ; 
2648+  const  isRate  =  Math . abs ( x )  <  1  &&  Math . abs ( y )  <  1  &&  Math . abs ( x2 )  <  1  &&  Math . abs ( y2 )  <  1 ; 
26342649 x  =  isRate  ? x * width  : x * xRate ; 
26352650 y  =  isRate  ? y * height  : y * yRate ; 
2636-  w  =  isRate  ? w * width  : w * xRate ; 
2637-  h  =  isRate  ? h * height  : h * yRate ; 
2651+  x2  =  isRate  ? x2 * width  : x2 * xRate ; 
2652+  y2  =  isRate  ? y2 * height  : y2 * yRate ; 
26382653
26392654 const  color  =  item . color  ||  detection . color  ||  detection . bbox ?. color ; 
26402655 const  rgba  =  color  ==  null  ||  color . length  <=  0  ? null  : `rgba(${ color . join ( ',' ) }  ; 
@@ -2645,7 +2660,7 @@ var JSONResponse = {
26452660
26462661 ctx . beginPath ( ) ; 
26472662 ctx . moveTo ( x ,  y ) ; 
2648-  ctx . lineTo ( x   +   w ,   y   +   h ) ; 
2663+  ctx . lineTo ( x2 ,   y2 ) ; 
26492664 ctx . stroke ( ) ; 
26502665
26512666 if  ( isRoot )  { 
0 commit comments