@@ -671,6 +671,59 @@ pzpr.classmgr.makeCommon({
671671 this . outbstr += cm ;
672672 } ,
673673
674+ decodeOuterBorder : function ( ) {
675+ var bstr = this . outbstr ,
676+ bd = this . board ,
677+ twi = [ 16 , 8 , 4 , 2 , 1 ] ;
678+ var pos = bstr
679+ ? Math . min ( ( ( bd . border . length + 4 ) / 5 ) | 0 , bstr . length )
680+ : 0 ,
681+ id = 0 ;
682+ for ( var i = 0 ; i < pos ; i ++ ) {
683+ var ca = parseInt ( bstr . charAt ( i ) , 32 ) ;
684+ for ( var w = 0 ; w < 5 ; w ++ ) {
685+ if ( ! ! bd . border [ id ] ) {
686+ bd . border [ id ] . ques = ca & twi [ w ] ? 1 : 0 ;
687+ id ++ ;
688+ }
689+ }
690+ }
691+ this . outbstr = bstr . substr ( pos ) ;
692+ } ,
693+ encodeOuterBorder : function ( ) {
694+ var hasoutside = 0 ,
695+ bd = this . board ;
696+ var bdinside = 2 * bd . cols * bd . rows - bd . cols - bd . rows ;
697+ for ( var id = bdinside ; id < bd . border . length && ! hasoutside ; id ++ ) {
698+ if ( bd . border [ id ] . isLineNG ( ) ) {
699+ hasoutside = true ;
700+ }
701+ }
702+ var num = 0 ,
703+ pass = 0 ,
704+ cm = "" ,
705+ twi = [ 16 , 8 , 4 , 2 , 1 ] ;
706+ for (
707+ var id = 0 , max = ! hasoutside ? bdinside : bd . border . length ;
708+ id < max ;
709+ id ++
710+ ) {
711+ if ( bd . border [ id ] . isLineNG ( ) ) {
712+ pass += twi [ num ] ;
713+ }
714+ num ++ ;
715+ if ( num === 5 ) {
716+ cm += pass . toString ( 32 ) ;
717+ num = 0 ;
718+ pass = 0 ;
719+ }
720+ }
721+ if ( num > 0 ) {
722+ cm += pass . toString ( 32 ) ;
723+ }
724+ this . outbstr += cm ;
725+ } ,
726+
674727 //---------------------------------------------------------------------------
675728 // enc.decodeCrossMark() 黒点をデコードする
676729 // enc.encodeCrossMark() 黒点をエンコードする
0 commit comments