Hex Artifact Content

Not logged in

Artifact efe9189ceabe7b50ac78b9e23af2ad2564d434fe:


0000: 23 69 6e 63 6c 75 64 65 20 22 73 74 64 61 66 78  #include "stdafx
0010: 2e 68 22 0d 0a 23 69 6e 63 6c 75 64 65 20 22 69  .h"..#include "i
0020: 70 5f 76 69 65 77 2e 68 22 0d 0a 75 73 69 6e 67  p_view.h"..using
0030: 20 6e 61 6d 65 73 70 61 63 65 20 65 64 69 74 77   namespace editw
0040: 69 6e 67 3b 0d 0a 75 73 69 6e 67 20 6e 61 6d 65  ing;..using name
0050: 73 70 61 63 65 20 65 64 69 74 77 69 6e 67 3a 3a  space editwing::
0060: 76 69 65 77 3b 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 3d  view;........//=
0070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0080: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0090: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
00a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
00b0: 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 2f 2f 2d 2d 2d 2d  ========..//----
00c0: 20 69 70 5f 77 72 61 70 2e 63 70 70 20 20 20 90   ip_wrap.cpp   .
00d0: dc 82 e8 95 d4 82 b5 0d 0a 2f 2f 0d 0a 2f 2f 09  .........//..//.
00e0: 09 44 6f 63 75 6d 65 6e 74 82 c5 95 b6 8e 9a 97  .Document.......
00f0: f1 83 66 81 5b 83 5e 82 aa 8d 58 90 56 82 b3 82  ..f.[.^...X.V...
0100: ea 82 e9 82 cc 82 f0 8e f3 82 af 82 c4 0d 0a 2f  .............../
0110: 2f 09 09 56 69 65 77 82 c5 82 cd 90 dc 82 e8 95  /..View.........
0120: d4 82 b5 88 ca 92 75 8f ee 95 f1 82 f0 8d 58 90  ......u.......X.
0130: 56 82 b7 82 e9 81 42 82 bb 82 cc 8f 88 97 9d 82  V.....B.........
0140: aa 83 52 83 52 81 42 0d 0a 2f 2f 0d 0a 2f 2f 2d  ..R.R.B..//..//-
0150: 2d 2d 2d 20 69 70 5f 74 65 78 74 2e 63 70 70 20  --- ip_text.cpp 
0160: 20 20 95 b6 8e 9a 97 f1 91 80 8d ec 81 45 91 bc    ...........E..
0170: 0d 0a 2f 2f 2d 2d 2d 2d 20 69 70 5f 70 61 72 73  ..//---- ip_pars
0180: 65 2e 63 70 70 20 20 83 4c 81 5b 83 8f 81 5b 83  e.cpp  .L.[...[.
0190: 68 89 f0 90 cd 0d 0a 2f 2f 2d 2d 2d 2d 20 69 70  h......//---- ip
01a0: 5f 73 63 72 6f 6c 6c 2e 63 70 70 20 83 58 83 4e  _scroll.cpp .X.N
01b0: 83 8d 81 5b 83 8b 0d 0a 2f 2f 2d 2d 2d 2d 20 69  ...[....//---- i
01c0: 70 5f 64 72 61 77 2e 63 70 70 20 20 20 95 60 89  p_draw.cpp   .`.
01d0: e6 81 45 91 bc 0d 0a 2f 2f 2d 2d 2d 2d 20 69 70  ..E....//---- ip
01e0: 5f 63 75 72 73 6f 72 2e 63 70 70 20 83 4a 81 5b  _cursor.cpp .J.[
01f0: 83 5c 83 8b 83 52 83 93 83 67 83 8d 81 5b 83 8b  .\...R...g...[..
0200: 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ..//============
0210: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0220: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0230: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0240: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d  =============...
0250: 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d  .....//---------
0260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0290: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02a0: 0d 0a 2f 2f 20 8f 89 8a fa 89 bb 0d 0a 2f 2f 2d  ..// ........//-
02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02f0: 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 56 69 65 77  --------....View
0300: 49 6d 70 6c 3a 3a 56 69 65 77 49 6d 70 6c 28 20  Impl::ViewImpl( 
0310: 56 69 65 77 26 20 76 77 2c 20 44 6f 63 49 6d 70  View& vw, DocImp
0320: 6c 26 20 64 63 20 29 0d 0a 09 3a 20 64 6f 63 5f  l& dc )...: doc_
0330: 20 20 20 28 20 64 63 20 29 0d 0a 09 2c 20 63 76     ( dc )..., cv
0340: 73 5f 20 20 20 28 20 76 77 20 29 0d 0a 09 2c 20  s_   ( vw )..., 
0350: 63 75 72 5f 20 20 20 28 20 76 77 2e 68 77 6e 64  cur_   ( vw.hwnd
0360: 28 29 2c 20 2a 74 68 69 73 2c 20 64 63 20 29 0d  (), *this, dc ).
0370: 0a 09 2c 20 68 77 6e 64 5f 20 20 28 20 76 77 2e  .., hwnd_  ( vw.
0380: 68 77 6e 64 28 29 20 29 0d 0a 09 2c 20 76 6c 4e  hwnd() )..., vlN
0390: 75 6d 5f 20 28 20 30 20 29 0d 0a 09 2c 20 74 65  um_ ( 0 )..., te
03a0: 78 74 43 78 5f 28 20 30 20 29 0d 0a 7b 0d 0a 09  xtCx_( 0 )..{...
03b0: 2f 2f 20 93 4b 93 96 82 c9 90 dc 82 e8 95 d4 82  // .K...........
03c0: b5 8f ee 95 f1 8f 89 8a fa 89 bb 0d 0a 09 49 6e  ..............In
03d0: 73 65 72 74 4d 75 6c 74 69 28 20 30 2c 20 64 6f  sertMulti( 0, do
03e0: 63 5f 2e 74 6c 6e 28 29 2d 31 20 29 3b 0d 0a 0d  c_.tln()-1 );...
03f0: 0a 09 2f 2f 20 93 4b 93 96 82 c9 83 58 83 4e 83  ..// .K.....X.N.
0400: 8d 81 5b 83 8b 8f ee 95 f1 8f 89 8a fa 89 bb 0d  ..[.............
0410: 0a 09 75 64 53 63 72 5f 2e 63 62 53 69 7a 65 20  ..udScr_.cbSize 
0420: 3d 20 72 6c 53 63 72 5f 2e 63 62 53 69 7a 65 20  = rlScr_.cbSize 
0430: 3d 20 73 69 7a 65 6f 66 28 75 64 53 63 72 5f 29  = sizeof(udScr_)
0440: 3b 0d 0a 09 75 64 53 63 72 5f 2e 66 4d 61 73 6b  ;...udScr_.fMask
0450: 20 20 3d 20 72 6c 53 63 72 5f 2e 66 4d 61 73 6b    = rlScr_.fMask
0460: 20 20 3d 20 53 49 46 5f 50 41 47 45 20 7c 20 53    = SIF_PAGE | S
0470: 49 46 5f 50 4f 53 20 7c 20 53 49 46 5f 52 41 4e  IF_POS | SIF_RAN
0480: 47 45 3b 0d 0a 09 75 64 53 63 72 5f 2e 6e 4d 69  GE;...udScr_.nMi
0490: 6e 20 20 20 3d 20 72 6c 53 63 72 5f 2e 6e 4d 69  n   = rlScr_.nMi
04a0: 6e 20 20 20 3d 20 30 3b 0d 0a 09 75 64 53 63 72  n   = 0;...udScr
04b0: 5f 2e 6e 50 6f 73 20 20 20 3d 20 72 6c 53 63 72  _.nPos   = rlScr
04c0: 5f 2e 6e 50 6f 73 20 20 20 3d 20 30 3b 0d 0a 09  _.nPos   = 0;...
04d0: 75 64 53 63 72 5f 2e 66 4d 61 73 6b 20 7c 3d 20  udScr_.fMask |= 
04e0: 53 49 46 5f 44 49 53 41 42 4c 45 4e 4f 53 43 52  SIF_DISABLENOSCR
04f0: 4f 4c 4c 3b 0d 0a 09 75 64 53 63 72 5f 74 6c 5f  OLL;...udScr_tl_
0500: 20 20 20 20 20 3d 20 75 64 53 63 72 5f 76 72 6c       = udScr_vrl
0510: 5f 20 20 20 20 3d 20 30 3b 0d 0a 09 52 65 53 65  _    = 0;...ReSe
0520: 74 53 63 72 6f 6c 6c 49 6e 66 6f 28 29 3b 0d 0a  tScrollInfo();..
0530: 7d 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d  }........//-----
0540: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0550: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0560: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0570: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0580: 2d 2d 2d 2d 0d 0a 2f 2f 20 8f f3 91 d4 95 cf 8d  ----..// .......
0590: 58 82 d6 82 cc 91 ce 89 9e 0d 0a 2f 2f 2d 2d 2d  X..........//---
05a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
05b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
05c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
05d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
05e0: 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 76 6f 69 64 20 56  ------....void V
05f0: 69 65 77 49 6d 70 6c 3a 3a 44 6f 52 65 73 69 7a  iewImpl::DoResiz
0600: 65 28 20 62 6f 6f 6c 20 77 72 61 70 57 69 64 74  e( bool wrapWidt
0610: 68 43 68 61 6e 67 65 64 20 29 0d 0a 7b 0d 0a 09  hChanged )..{...
0620: 2f 2f 20 90 dc 82 e8 95 d4 82 b5 88 ca 92 75 8d  // ...........u.
0630: c4 8c 76 8e 5a 0d 0a 09 69 66 28 20 77 72 61 70  ..v.Z...if( wrap
0640: 57 69 64 74 68 43 68 61 6e 67 65 64 20 29 0d 0a  WidthChanged )..
0650: 09 7b 0d 0a 09 09 52 65 57 72 61 70 41 6c 6c 28  .{....ReWrapAll(
0660: 29 3b 0d 0a 09 09 55 70 64 61 74 65 54 65 78 74  );....UpdateText
0670: 43 78 28 29 3b 0d 0a 09 7d 0d 0a 0d 0a 09 2f 2f  Cx();...}.....//
0680: 20 83 58 83 4e 83 8d 81 5b 83 8b 8f ee 95 f1 95   .X.N...[.......
0690: cf 8d 58 0d 0a 09 52 65 53 65 74 53 63 72 6f 6c  ..X...ReSetScrol
06a0: 6c 49 6e 66 6f 28 29 3b 0d 0a 09 69 66 28 20 77  lInfo();...if( w
06b0: 72 61 70 57 69 64 74 68 43 68 61 6e 67 65 64 20  rapWidthChanged 
06c0: 29 0d 0a 09 09 46 6f 72 63 65 53 63 72 6f 6c 6c  )....ForceScroll
06d0: 54 6f 28 20 75 64 53 63 72 5f 74 6c 5f 20 29 3b  To( udScr_tl_ );
06e0: 0d 0a 0d 0a 09 2f 2f 20 8d c4 95 60 89 e6 0d 0a  .....// ...`....
06f0: 09 52 65 44 72 61 77 28 20 41 4c 4c 20 29 3b 0d  .ReDraw( ALL );.
0700: 0a 09 63 75 72 5f 2e 52 65 73 65 74 50 6f 73 28  ..cur_.ResetPos(
0710: 29 3b 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 56 69  );..}....void Vi
0720: 65 77 49 6d 70 6c 3a 3a 44 6f 43 6f 6e 66 69 67  ewImpl::DoConfig
0730: 43 68 61 6e 67 65 28 29 0d 0a 7b 0d 0a 09 2f 2f  Change()..{...//
0740: 20 90 dc 82 e8 95 d4 82 b5 88 ca 92 75 8d c4 8c   ...........u...
0750: 76 8e 5a 0d 0a 09 52 65 57 72 61 70 41 6c 6c 28  v.Z...ReWrapAll(
0760: 29 3b 0d 0a 09 55 70 64 61 74 65 54 65 78 74 43  );...UpdateTextC
0770: 78 28 29 3b 0d 0a 0d 0a 09 2f 2f 20 83 58 83 4e  x();.....// .X.N
0780: 83 8d 81 5b 83 8b 8f ee 95 f1 95 cf 8d 58 0d 0a  ...[.........X..
0790: 09 52 65 53 65 74 53 63 72 6f 6c 6c 49 6e 66 6f  .ReSetScrollInfo
07a0: 28 29 3b 0d 0a 09 46 6f 72 63 65 53 63 72 6f 6c  ();...ForceScrol
07b0: 6c 54 6f 28 20 75 64 53 63 72 5f 74 6c 5f 20 29  lTo( udScr_tl_ )
07c0: 3b 0d 0a 0d 0a 09 2f 2f 20 8d c4 95 60 89 e6 0d  ;.....// ...`...
07d0: 0a 09 52 65 44 72 61 77 28 20 41 4c 4c 20 29 3b  ..ReDraw( ALL );
07e0: 0d 0a 09 63 75 72 5f 2e 52 65 73 65 74 50 6f 73  ...cur_.ResetPos
07f0: 28 29 3b 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 56  ();..}....void V
0800: 69 65 77 49 6d 70 6c 3a 3a 6f 6e 5f 74 65 78 74  iewImpl::on_text
0810: 5f 75 70 64 61 74 65 0d 0a 09 28 20 63 6f 6e 73  _update...( cons
0820: 74 20 44 50 6f 73 26 20 73 2c 20 63 6f 6e 73 74  t DPos& s, const
0830: 20 44 50 6f 73 26 20 65 2c 20 63 6f 6e 73 74 20   DPos& e, const 
0840: 44 50 6f 73 26 20 65 32 2c 20 62 6f 6f 6c 20 62  DPos& e2, bool b
0850: 41 66 74 2c 20 62 6f 6f 6c 20 6d 43 75 72 20 29  Aft, bool mCur )
0860: 0d 0a 7b 0d 0a 09 2f 2f 20 82 dc 82 b8 81 41 90  ..{...// .....A.
0870: dc 82 e8 95 d4 82 b5 88 ca 92 75 8d c4 8c 76 8e  ..........u...v.
0880: 5a 0d 0a 0d 0a 09 2f 2f 20 92 75 8a b7 94 cd 88  Z.....// .u.....
0890: cd 82 cc 90 e6 93 aa 8d 73 82 f0 92 b2 90 ae 0d  ........s.......
08a0: 0a 09 69 6e 74 20 72 33 20 3d 20 30 2c 20 72 32  ..int r3 = 0, r2
08b0: 20 3d 20 31 2c 20 72 31 20 3d 20 52 65 57 72 61   = 1, r1 = ReWra
08c0: 70 53 69 6e 67 6c 65 28 20 73 20 29 3b 0d 0a 0d  pSingle( s );...
08d0: 0a 09 2f 2f 20 8e 63 82 e8 82 f0 92 b2 90 ae 0d  ..// .c.........
08e0: 0a 09 69 66 28 20 73 2e 74 6c 20 21 3d 20 65 2e  ..if( s.tl != e.
08f0: 74 6c 20 29 0d 0a 09 09 72 32 20 3d 20 44 65 6c  tl )....r2 = Del
0900: 65 74 65 4d 75 6c 74 69 28 20 73 2e 74 6c 2b 31  eteMulti( s.tl+1
0910: 2c 20 20 65 2e 74 6c 20 29 3b 0d 0a 09 69 66 28  ,  e.tl );...if(
0920: 20 73 2e 74 6c 20 21 3d 20 65 32 2e 74 6c 20 29   s.tl != e2.tl )
0930: 0d 0a 09 09 72 33 20 3d 20 49 6e 73 65 72 74 4d  ....r3 = InsertM
0940: 75 6c 74 69 28 20 73 2e 74 6c 2b 31 2c 20 65 32  ulti( s.tl+1, e2
0950: 2e 74 6c 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 82 b1  .tl );.....// ..
0960: 82 cc 95 cf 8d 58 82 c5 89 a1 95 9d 82 aa 81 63  .....X.........c
0970: 0d 0a 09 2f 2f 20 69 66 28 20 22 92 b7 82 ad 82  ...// if( ".....
0980: c8 82 c1 82 bd 82 c8 82 c4 82 cd 82 a2 82 c8 82  ................
0990: a2 22 20 41 4e 44 20 22 92 5a 82 ad 82 c8 82 c1  ." AND ".Z......
09a0: 82 bf 82 e1 82 c1 82 bd 89 c2 94 5c 90 ab 82 a0  ...........\....
09b0: 82 e8 22 20 29 0d 0a 09 2f 2f 20 20 20 20 20 89  .." )...//     .
09c0: a1 95 9d 8d c4 8c 76 8e 5a 28 29 3b 0d 0a 09 69  ......v.Z();...i
09d0: 66 28 20 21 28 72 31 3d 3d 32 20 7c 7c 20 72 33  f( !(r1==2 || r3
09e0: 3d 3d 31 29 20 26 26 20 28 72 31 3d 3d 30 20 7c  ==1) && (r1==0 |
09f0: 7c 20 72 32 3d 3d 30 29 20 29 0d 0a 09 09 55 70  | r2==0) )....Up
0a00: 64 61 74 65 54 65 78 74 43 78 28 29 3b 0d 0a 0d  dateTextCx();...
0a10: 0a 09 2f 2f 20 83 58 83 4e 83 8d 81 5b 83 8b 83  ..// .X.N...[...
0a20: 6f 81 5b 8f 43 90 b3 0d 0a 09 52 65 44 72 61 77  o.[.C.....ReDraw
0a30: 54 79 70 65 20 74 20 3d 20 54 65 78 74 55 70 64  Type t = TextUpd
0a40: 61 74 65 5f 53 63 72 6f 6c 6c 42 61 72 28 20 73  ate_ScrollBar( s
0a50: 2c 20 65 2c 20 65 32 20 29 3b 0d 0a 09 62 6f 6f  , e, e2 );...boo
0a60: 6c 20 64 6f 52 65 73 69 7a 65 20 3d 20 66 61 6c  l doResize = fal
0a70: 73 65 3b 0d 0a 0d 0a 09 2f 2f 20 8d 73 90 94 82  se;.....// .s...
0a80: c9 95 cf 89 bb 82 aa 82 a0 82 c1 82 c4 81 41 8d  ..............A.
0a90: 73 94 d4 8d 86 95 5c 8e a6 88 e6 82 cc 95 9d 82  s.....\.........
0aa0: f0 95 cf 82 a6 82 c8 82 ab 82 e1 82 c8 82 e7 82  ................
0ab0: f1 8e 9e 0d 0a 09 69 66 28 20 65 2e 74 6c 21 3d  ......if( e.tl!=
0ac0: 65 32 2e 74 6c 20 26 26 20 63 76 73 5f 2e 6f 6e  e2.tl && cvs_.on
0ad0: 5f 74 6c 6e 5f 63 68 61 6e 67 65 28 20 64 6f 63  _tln_change( doc
0ae0: 5f 2e 74 6c 6e 28 29 20 29 20 29 0d 0a 09 7b 0d  _.tln() ) )...{.
0af0: 0a 09 09 64 6f 52 65 73 69 7a 65 20 3d 20 74 72  ...doResize = tr
0b00: 75 65 3b 0d 0a 09 7d 0d 0a 09 65 6c 73 65 20 69  ue;...}...else i
0b10: 66 28 20 62 41 66 74 20 26 26 20 74 21 3d 41 4c  f( bAft && t!=AL
0b20: 4c 20 29 0d 0a 09 7b 0d 0a 09 09 74 20 3d 20 41  L )...{....t = A
0b30: 46 54 45 52 3b 0d 0a 09 7d 0d 0a 0d 0a 09 2f 2f  FTER;...}.....//
0b40: 20 83 4a 81 5b 83 5c 83 8b 88 da 93 ae 0d 0a 09   .J.[.\.........
0b50: 63 75 72 5f 2e 6f 6e 5f 74 65 78 74 5f 75 70 64  cur_.on_text_upd
0b60: 61 74 65 28 20 73 2c 20 65 2c 20 65 32 2c 20 6d  ate( s, e, e2, m
0b70: 43 75 72 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 8d c4  Cur );.....// ..
0b80: 95 60 89 e6 0d 0a 09 69 66 28 20 64 6f 52 65 73  .`.....if( doRes
0b90: 69 7a 65 20 29 0d 0a 09 09 44 6f 52 65 73 69 7a  ize )....DoResiz
0ba0: 65 28 20 74 72 75 65 20 29 3b 0d 0a 09 65 6c 73  e( true );...els
0bb0: 65 0d 0a 09 7b 0d 0a 09 09 69 66 28 20 65 2e 74  e...{....if( e.t
0bc0: 6c 20 21 3d 20 65 32 2e 74 6c 20 29 20 2f 2f 20  l != e2.tl ) // 
0bd0: 8d 73 94 d4 8d 86 97 cc 88 e6 8d c4 95 60 89 e6  .s...........`..
0be0: 82 cc 95 4b 97 76 82 aa 82 a0 82 e9 82 c6 82 ab  ...K.v..........
0bf0: 0d 0a 09 09 09 52 65 44 72 61 77 28 20 4c 4e 41  .....ReDraw( LNA
0c00: 52 45 41 2c 20 30 20 29 3b 0d 0a 09 09 52 65 44  REA, 0 );....ReD
0c10: 72 61 77 28 20 74 2c 20 26 73 20 29 3b 0d 0a 09  raw( t, &s );...
0c20: 7d 0d 0a 7d 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d  }..}........//--
0c30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0c70: 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 90 dc 82 e8  -------..// ....
0c80: 95 d4 82 b5 88 ca 92 75 8c 76 8e 5a 95 e2 8f 95  .......u.v.Z....
0c90: 83 8b 81 5b 83 60 83 93 0d 0a 2f 2f 2d 2d 2d 2d  ...[.`....//----
0ca0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0cb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0cc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0cd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0ce0: 2d 2d 2d 2d 2d 0d 0a 0d 0a 76 6f 69 64 20 56 69  -----....void Vi
0cf0: 65 77 49 6d 70 6c 3a 3a 55 70 64 61 74 65 54 65  ewImpl::UpdateTe
0d00: 78 74 43 78 28 29 0d 0a 7b 0d 0a 09 69 66 28 20  xtCx()..{...if( 
0d10: 63 76 73 5f 2e 77 72 61 70 54 79 70 65 28 29 20  cvs_.wrapType() 
0d20: 3d 3d 20 4e 4f 57 52 41 50 20 29 0d 0a 09 7b 0d  == NOWRAP )...{.
0d30: 0a 09 09 2f 2f 20 90 dc 82 e8 95 d4 82 b5 82 c8  ...// ..........
0d40: 82 b5 82 c8 82 e7 81 41 90 94 82 a6 82 c4 82 dd  .......A........
0d50: 82 c8 82 a2 82 c6 89 a1 95 9d 82 cd 82 ed 82 a9  ................
0d60: 82 e7 82 c8 82 a2 0d 0a 09 09 75 6c 6f 6e 67 20  ..........ulong 
0d70: 63 78 3d 30 3b 0d 0a 09 09 66 6f 72 28 20 75 6c  cx=0;....for( ul
0d80: 6f 6e 67 20 69 3d 30 2c 20 69 65 3d 64 6f 63 5f  ong i=0, ie=doc_
0d90: 2e 74 6c 6e 28 29 3b 20 69 3c 69 65 3b 20 2b 2b  .tln(); i<ie; ++
0da0: 69 20 29 0d 0a 09 09 09 69 66 28 20 63 78 20 3c  i ).....if( cx <
0db0: 20 77 72 61 70 5f 5b 69 5d 2e 77 69 64 74 68 28   wrap_[i].width(
0dc0: 29 20 29 0d 0a 09 09 09 09 63 78 20 3d 20 77 72  ) )......cx = wr
0dd0: 61 70 5f 5b 69 5d 2e 77 69 64 74 68 28 29 3b 0d  ap_[i].width();.
0de0: 0a 09 09 74 65 78 74 43 78 5f 20 3d 20 63 78 3b  ...textCx_ = cx;
0df0: 0d 0a 09 7d 0d 0a 09 65 6c 73 65 0d 0a 09 7b 0d  ...}...else...{.
0e00: 0a 09 09 2f 2f 20 90 dc 82 e8 95 d4 82 b5 82 a0  ...// ..........
0e10: 82 e8 82 c8 82 e7 81 41 89 a1 95 9d 3a 3d 90 dc  .......A....:=..
0e20: 82 e8 95 d4 82 b5 95 9d 82 c6 82 b7 82 e9 0d 0a  ................
0e30: 09 09 74 65 78 74 43 78 5f 20 3d 20 63 76 73 5f  ..textCx_ = cvs_
0e40: 2e 77 72 61 70 57 69 64 74 68 28 29 3b 0d 0a 09  .wrapWidth();...
0e50: 7d 0d 0a 7d 0d 0a 0d 0a 75 6c 6f 6e 67 20 56 69  }..}....ulong Vi
0e60: 65 77 49 6d 70 6c 3a 3a 43 61 6c 63 4c 69 6e 65  ewImpl::CalcLine
0e70: 57 69 64 74 68 28 20 63 6f 6e 73 74 20 75 6e 69  Width( const uni
0e80: 63 6f 64 65 2a 20 74 78 74 2c 20 75 6c 6f 6e 67  code* txt, ulong
0e90: 20 6c 65 6e 20 29 20 63 6f 6e 73 74 0d 0a 7b 0d   len ) const..{.
0ea0: 0a 09 2f 2f 20 8d 73 82 f0 90 dc 82 e8 95 d4 82  ..// .s.........
0eb0: b3 82 b8 82 c9 8f 91 82 a2 82 bd 82 c6 82 ab 82  ................
0ec0: cc 89 a1 95 9d 82 f0 8c 76 8e 5a 82 b7 82 e9 0d  ........v.Z.....
0ed0: 0a 09 2f 2f 20 82 d9 82 c6 82 f1 82 c7 82 cc 8d  ..// ...........
0ee0: 73 82 aa 90 dc 82 e8 95 d4 82 b5 96 b3 82 b5 82  s...............
0ef0: c5 95 5c 8e a6 82 b3 82 ea 82 e9 83 65 83 4c 83  ..\.........e.L.
0f00: 58 83 67 82 cc 8f ea 8d 87 81 41 0d 0a 09 2f 2f  X.g.......A...//
0f10: 20 82 b1 82 cc 92 6c 82 f0 8c 76 8e 5a 82 b5 82   .....l...v.Z...
0f20: c4 82 a8 82 ad 82 b1 82 c6 82 c5 81 41 8f 88 97  ............A...
0f30: 9d 82 cc 8d 82 91 ac 89 bb 82 aa 89 c2 94 5c 81  ..............\.
0f40: 42 0d 0a 09 63 6f 6e 73 74 20 50 61 69 6e 74 65  B...const Painte
0f50: 72 26 20 70 20 3d 20 63 76 73 5f 2e 67 65 74 50  r& p = cvs_.getP
0f60: 61 69 6e 74 65 72 28 29 3b 0d 0a 0d 0a 09 75 6c  ainter();.....ul
0f70: 6f 6e 67 20 77 3d 30 3b 0d 0a 09 66 6f 72 28 20  ong w=0;...for( 
0f80: 75 6c 6f 6e 67 20 69 3d 30 3b 20 69 3c 6c 65 6e  ulong i=0; i<len
0f90: 3b 20 2b 2b 69 20 29 0d 0a 09 09 69 66 28 20 74  ; ++i )....if( t
0fa0: 78 74 5b 69 5d 20 3d 3d 20 4c 27 5c 74 27 20 29  xt[i] == L'\t' )
0fb0: 0d 0a 09 09 09 77 20 3d 20 70 2e 6e 65 78 74 54  .....w = p.nextT
0fc0: 61 62 28 77 29 3b 0d 0a 09 09 65 6c 73 65 0d 0a  ab(w);....else..
0fd0: 09 09 09 77 20 2b 3d 20 70 2e 57 28 20 26 74 78  ...w += p.W( &tx
0fe0: 74 5b 69 5d 20 29 3b 0d 0a 09 72 65 74 75 72 6e  t[i] );...return
0ff0: 20 77 3b 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 56   w;..}....void V
1000: 69 65 77 49 6d 70 6c 3a 3a 43 61 6c 63 45 76 65  iewImpl::CalcEve
1010: 72 79 4c 69 6e 65 57 69 64 74 68 28 29 0d 0a 7b  ryLineWidth()..{
1020: 0d 0a 09 2f 2f 20 91 53 82 c4 82 cc 8d 73 82 c9  ...// .S.....s..
1030: 91 ce 82 b5 82 c4 43 61 6c 63 4c 69 6e 65 57 69  ......CalcLineWi
1040: 64 74 68 82 f0 8e c0 8d 73 0d 0a 09 2f 2f 20 81  dth.....s...// .
1050: 63 82 b7 82 e9 82 be 82 af 81 42 0d 0a 09 66 6f  c.........B...fo
1060: 72 28 20 75 6c 6f 6e 67 20 69 3d 30 2c 20 69 65  r( ulong i=0, ie
1070: 3d 64 6f 63 5f 2e 74 6c 6e 28 29 3b 20 69 3c 69  =doc_.tln(); i<i
1080: 65 3b 20 2b 2b 69 20 29 0d 0a 09 09 77 72 61 70  e; ++i )....wrap
1090: 5f 5b 69 5d 2e 77 69 64 74 68 28 29 20 3d 20 43  _[i].width() = C
10a0: 61 6c 63 4c 69 6e 65 57 69 64 74 68 28 20 64 6f  alcLineWidth( do
10b0: 63 5f 2e 74 6c 28 69 29 2c 20 64 6f 63 5f 2e 6c  c_.tl(i), doc_.l
10c0: 65 6e 28 69 29 20 29 3b 0d 0a 7d 0d 0a 0d 0a 76  en(i) );..}....v
10d0: 6f 69 64 20 56 69 65 77 49 6d 70 6c 3a 3a 4d 6f  oid ViewImpl::Mo
10e0: 64 69 66 79 57 72 61 70 49 6e 66 6f 28 0d 0a 09  difyWrapInfo(...
10f0: 09 63 6f 6e 73 74 20 75 6e 69 63 6f 64 65 2a 20  .const unicode* 
1100: 74 78 74 2c 20 75 6c 6f 6e 67 20 6c 65 6e 2c 20  txt, ulong len, 
1110: 57 4c 69 6e 65 26 20 77 6c 2c 20 75 6c 6f 6e 67  WLine& wl, ulong
1120: 20 73 74 74 20 29 0d 0a 7b 0d 0a 09 2f 2f 20 90   stt )..{...// .
1130: dd 92 e8 95 9d 82 c5 82 cc 90 dc 82 e8 95 d4 82  ................
1140: b5 82 f0 8e c0 8d 73 82 b7 82 e9 81 42 0d 0a 09  ......s.....B...
1150: 2f 2f 20 8d 73 82 cc 93 72 92 86 82 a9 82 e7 82  // .s...r.......
1160: cc 95 cf 8d 58 82 cc 8f ea 8d 87 81 41 73 74 74  ....X.......Astt
1170: 82 aa 8a 4a 8e 6e 61 64 64 72 65 73 73 82 f0 8e  ...J.naddress...
1180: 77 82 b5 82 c4 82 a2 82 e9 0d 0a 09 63 6f 6e 73  w...........cons
1190: 74 20 50 61 69 6e 74 65 72 26 20 70 20 3d 20 63  t Painter& p = c
11a0: 76 73 5f 2e 67 65 74 50 61 69 6e 74 65 72 28 29  vs_.getPainter()
11b0: 3b 0d 0a 09 63 6f 6e 73 74 20 75 6c 6f 6e 67 20  ;...const ulong 
11c0: 20 20 77 77 20 3d 20 63 76 73 5f 2e 77 72 61 70    ww = cvs_.wrap
11d0: 57 69 64 74 68 28 29 3b 0d 0a 0d 0a 09 77 68 69  Width();.....whi
11e0: 6c 65 28 20 73 74 74 20 3c 20 6c 65 6e 20 29 0d  le( stt < len ).
11f0: 0a 09 7b 0d 0a 09 09 75 6c 6f 6e 67 20 69 2c 20  ..{....ulong i, 
1200: 77 3b 0d 0a 09 09 66 6f 72 28 20 77 3d 30 2c 69  w;....for( w=0,i
1210: 3d 73 74 74 3b 20 69 3c 6c 65 6e 3b 20 2b 2b 69  =stt; i<len; ++i
1220: 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 66 28 20   )....{.....if( 
1230: 74 78 74 5b 69 5d 20 3d 3d 20 4c 27 5c 74 27 20  txt[i] == L'\t' 
1240: 29 0d 0a 09 09 09 09 77 20 3d 20 70 2e 6e 65 78  )......w = p.nex
1250: 74 54 61 62 28 77 29 3b 0d 0a 09 09 09 65 6c 73  tTab(w);.....els
1260: 65 0d 0a 09 09 09 09 77 20 2b 3d 20 70 2e 57 28  e......w += p.W(
1270: 20 26 74 78 74 5b 69 5d 20 29 3b 0d 0a 0d 0a 09   &txt[i] );.....
1280: 09 09 69 66 28 20 77 3e 77 77 20 29 0d 0a 09 09  ..if( w>ww )....
1290: 09 09 62 72 65 61 6b 3b 20 2f 2f 20 95 9d 82 aa  ..break; // ....
12a0: 90 dd 92 e8 92 6c 82 f0 92 b4 82 a6 82 bd 8f 8a  .....l..........
12b0: 82 c5 82 a8 82 b5 82 dc 82 a2 0d 0a 09 09 7d 0d  ..............}.
12c0: 0a 09 09 77 6c 2e 41 64 64 28 20 73 74 74 20 3d  ...wl.Add( stt =
12d0: 20 28 69 3d 3d 73 74 74 3f 69 2b 31 3a 69 29 20   (i==stt?i+1:i) 
12e0: 29 3b 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a 69 6e 74  );...}..}....int
12f0: 20 56 69 65 77 49 6d 70 6c 3a 3a 47 65 74 4c 61   ViewImpl::GetLa
1300: 73 74 57 69 64 74 68 28 20 75 6c 6f 6e 67 20 74  stWidth( ulong t
1310: 6c 20 29 20 63 6f 6e 73 74 0d 0a 7b 0d 0a 09 69  l ) const..{...i
1320: 66 28 20 72 6c 6e 28 74 6c 29 3d 3d 31 20 29 0d  f( rln(tl)==1 ).
1330: 0a 09 09 72 65 74 75 72 6e 20 77 72 61 70 5f 5b  ...return wrap_[
1340: 74 6c 5d 5b 30 5d 3b 0d 0a 0d 0a 09 75 6c 6f 6e  tl][0];.....ulon
1350: 67 20 62 65 67 20 3d 20 72 6c 65 6e 64 28 74 6c  g beg = rlend(tl
1360: 2c 72 6c 6e 28 74 6c 29 2d 32 29 3b 0d 0a 09 72  ,rln(tl)-2);...r
1370: 65 74 75 72 6e 20 43 61 6c 63 4c 69 6e 65 57 69  eturn CalcLineWi
1380: 64 74 68 28 20 64 6f 63 5f 2e 74 6c 28 74 6c 29  dth( doc_.tl(tl)
1390: 2b 62 65 67 2c 20 64 6f 63 5f 2e 6c 65 6e 28 74  +beg, doc_.len(t
13a0: 6c 29 2d 62 65 67 20 29 3b 0d 0a 7d 0d 0a 0d 0a  l)-beg );..}....
13b0: 76 6f 69 64 20 56 69 65 77 49 6d 70 6c 3a 3a 52  void ViewImpl::R
13c0: 65 57 72 61 70 41 6c 6c 28 29 0d 0a 7b 0d 0a 09  eWrapAll()..{...
13d0: 2f 2f 20 90 dc 82 e8 95 d4 82 b5 95 9d 82 c9 95  // .............
13e0: cf 8d 58 82 aa 82 a0 82 c1 82 bd 8f ea 8d 87 82  ..X.............
13f0: c9 81 41 91 53 82 c4 82 cc 8d 73 82 cc 0d 0a 09  ..A.S.....s.....
1400: 2f 2f 20 90 dc 82 e8 95 d4 82 b5 88 ca 92 75 8f  // ...........u.
1410: ee 95 f1 82 f0 95 cf 8d 58 82 b7 82 e9 81 42 0d  ........X.....B.
1420: 0a 09 63 6f 6e 73 74 20 75 6c 6f 6e 67 20 77 77  ..const ulong ww
1430: 20 3d 20 63 76 73 5f 2e 77 72 61 70 57 69 64 74   = cvs_.wrapWidt
1440: 68 28 29 3b 0d 0a 0d 0a 09 75 6c 6f 6e 67 20 76  h();.....ulong v
1450: 6c 6e 3d 30 3b 0d 0a 09 66 6f 72 28 20 75 6c 6f  ln=0;...for( ulo
1460: 6e 67 20 69 3d 30 2c 20 69 65 3d 64 6f 63 5f 2e  ng i=0, ie=doc_.
1470: 74 6c 6e 28 29 3b 20 69 3c 69 65 3b 20 2b 2b 69  tln(); i<ie; ++i
1480: 20 29 0d 0a 09 7b 0d 0a 09 09 57 4c 69 6e 65 26   )...{....WLine&
1490: 20 77 6c 20 3d 20 77 72 61 70 5f 5b 69 5d 3b 0d   wl = wrap_[i];.
14a0: 0a 09 09 77 6c 2e 46 6f 72 63 65 53 69 7a 65 28  ...wl.ForceSize(
14b0: 31 29 3b 0d 0a 0d 0a 09 09 69 66 28 20 77 6c 2e  1);......if( wl.
14c0: 77 69 64 74 68 28 29 20 3c 20 77 77 20 29 0d 0a  width() < ww )..
14d0: 09 09 7b 0d 0a 09 09 09 2f 2f 20 90 dd 92 e8 82  ..{.....// .....
14e0: b5 82 bd 90 dc 82 e8 95 d4 82 b5 95 9d 82 e6 82  ................
14f0: e8 92 5a 82 a2 8f ea 8d 87 82 cd 88 ea 8d 73 82  ..Z...........s.
1500: c5 8d cf 82 de 81 42 0d 0a 09 09 09 77 6c 2e 41  ......B.....wl.A
1510: 64 64 28 20 64 6f 63 5f 2e 6c 65 6e 28 69 29 20  dd( doc_.len(i) 
1520: 29 3b 0d 0a 09 09 09 2b 2b 76 6c 6e 3b 0d 0a 09  );.....++vln;...
1530: 09 7d 0d 0a 09 09 65 6c 73 65 0d 0a 09 09 7b 0d  .}....else....{.
1540: 0a 09 09 09 2f 2f 20 95 a1 90 94 8d 73 82 c9 82  ....// .....s...
1550: c8 82 e9 8f ea 8d 87 0d 0a 09 09 09 4d 6f 64 69  ............Modi
1560: 66 79 57 72 61 70 49 6e 66 6f 28 20 64 6f 63 5f  fyWrapInfo( doc_
1570: 2e 74 6c 28 69 29 2c 20 64 6f 63 5f 2e 6c 65 6e  .tl(i), doc_.len
1580: 28 69 29 2c 20 77 6c 2c 20 30 20 29 3b 0d 0a 09  (i), wl, 0 );...
1590: 09 09 76 6c 6e 20 2b 3d 20 77 6c 2e 72 6c 6e 28  ..vln += wl.rln(
15a0: 29 3b 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 09 76 6c  );....}...}...vl
15b0: 4e 75 6d 5f 20 3d 20 76 6c 6e 3b 0d 0a 7d 0d 0a  Num_ = vln;..}..
15c0: 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d  ......//--------
15d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
15e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
15f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1600: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1610: 2d 0d 0a 2f 2f 20 90 dc 82 e8 95 d4 82 b5 88 ca  -..// ..........
1620: 92 75 8c 76 8e 5a 83 81 83 43 83 93 83 8b 81 5b  .u.v.Z...C.....[
1630: 83 60 83 93 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d  .`....//--------
1640: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1650: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1660: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1670: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1680: 2d 0d 0a 0d 0a 69 6e 74 20 56 69 65 77 49 6d 70  -....int ViewImp
1690: 6c 3a 3a 52 65 57 72 61 70 53 69 6e 67 6c 65 28  l::ReWrapSingle(
16a0: 20 63 6f 6e 73 74 20 44 50 6f 73 26 20 73 20 29   const DPos& s )
16b0: 0d 0a 7b 0d 0a 09 2f 2f 20 8e 77 92 e8 82 b5 82  ..{...// .w.....
16c0: bd 88 ea 8d 73 82 cc 82 dd 90 dc 82 e8 95 d4 82  ....s...........
16d0: b5 82 f0 8f 43 90 b3 81 42 0d 0a 09 2f 2f 0d 0a  ....C...B...//..
16e0: 09 2f 2f 20 95 d4 92 6c 82 cd 0d 0a 09 2f 2f 20  .// ...l.....// 
16f0: 20 20 32 3a 20 22 90 dc 82 e8 95 d4 82 b5 82 a0    2: "..........
1700: 82 e8 22 20 6f 72 20 22 82 b1 82 cc 8d 73 82 aa  .." or ".....s..
1710: 89 a1 82 c9 88 ea 94 d4 92 b7 82 ad 82 c8 82 c1  ................
1720: 82 bd 22 0d 0a 09 2f 2f 20 20 20 31 3a 20 22 82  .."...//   1: ".
1730: b1 82 cc 8d 73 88 c8 8a 4f 82 cc 82 c7 82 b1 82  ....s...O.......
1740: a9 82 aa 8d c5 92 b7 22 0d 0a 09 2f 2f 20 20 20  ......."...//   
1750: 30 3a 20 22 82 b3 82 c1 82 ab 82 dc 82 c5 82 b1  0: "............
1760: 82 cc 8d 73 82 cd 8d c5 92 b7 82 be 82 c1 82 bd  ...s............
1770: 82 aa 92 5a 82 ad 82 c8 82 c1 82 bf 82 e1 82 c1  ...Z............
1780: 82 bd 22 0d 0a 09 2f 2f 20 82 c5 81 41 8f e3 88  .."...// ...A...
1790: ca 83 8b 81 5b 83 60 83 93 82 c9 6d 5f 54 65 78  ....[.`....m_Tex
17a0: 74 43 78 8f 43 90 b3 82 cc 95 4b 97 76 90 ab 82  tCx.C.....K.v...
17b0: f0 93 60 82 a6 82 e9 81 42 0d 0a 09 2f 2f 0d 0a  ..`.....B...//..
17c0: 09 2f 2f 20 90 cc 82 cd 8d c4 95 60 89 e6 94 cd  .// .......`....
17d0: 88 cd 82 cc 8c 76 8e 5a 82 cc 82 bd 82 df 82 c9  .....v.Z........
17e0: 81 41 95 5c 8e a6 8d 73 90 94 82 cc 95 cf 89 bb  .A.\...s........
17f0: 82 f0 95 d4 82 b5 82 c4 82 a2 82 bd 82 aa 81 41  ...............A
1800: 0d 0a 09 2f 2f 20 82 b1 82 ea 82 cd 8f e3 88 ca  ...// ..........
1810: 83 8b 81 5b 83 60 83 93 91 a4 82 c5 20 76 6c 6e  ...[.`...... vln
1820: 28 29 20 82 f0 94 e4 8a 72 82 b7 82 ea 82 ce 8d  () .....r.......
1830: cf 82 de 82 b5 81 41 0d 0a 09 2f 2f 20 82 de 82  ......A...// ...
1840: b5 82 eb 82 bb 82 cc 95 fb 82 aa 8c f8 97 a6 93  ................
1850: 49 82 c5 82 a0 82 e9 82 bd 82 df 94 70 8e 7e 82  I...........p.~.
1860: b5 82 bd 81 42 0d 0a 0d 0a 0d 0a 09 2f 2f 20 8b  ....B.......// .
1870: 8c 8f ee 95 f1 95 db 91 b6 0d 0a 09 57 4c 69 6e  ............WLin
1880: 65 26 20 77 6c 20 20 20 20 20 20 20 20 20 20 20  e& wl           
1890: 20 3d 20 77 72 61 70 5f 5b 73 2e 74 6c 5d 3b 0d   = wrap_[s.tl];.
18a0: 0a 09 63 6f 6e 73 74 20 75 6c 6f 6e 67 20 6f 6c  ..const ulong ol
18b0: 64 56 52 4e 75 6d 20 3d 20 77 6c 2e 72 6c 6e 28  dVRNum = wl.rln(
18c0: 29 3b 0d 0a 09 63 6f 6e 73 74 20 75 6c 6f 6e 67  );...const ulong
18d0: 20 6f 6c 64 57 69 64 74 68 20 3d 20 77 6c 2e 77   oldWidth = wl.w
18e0: 69 64 74 68 28 29 3b 0d 0a 0d 0a 09 2f 2f 20 89  idth();.....// .
18f0: a1 95 9d 8d 58 90 56 0d 0a 09 77 6c 2e 77 69 64  ....X.V...wl.wid
1900: 74 68 28 29 20 3d 20 43 61 6c 63 4c 69 6e 65 57  th() = CalcLineW
1910: 69 64 74 68 28 20 64 6f 63 5f 2e 74 6c 28 73 2e  idth( doc_.tl(s.
1920: 74 6c 29 2c 20 64 6f 63 5f 2e 6c 65 6e 28 73 2e  tl), doc_.len(s.
1930: 74 6c 29 20 29 3b 0d 0a 0d 0a 09 69 66 28 20 77  tl) );.....if( w
1940: 6c 2e 77 69 64 74 68 28 29 20 3c 20 63 76 73 5f  l.width() < cvs_
1950: 2e 77 72 61 70 57 69 64 74 68 28 29 20 29 0d 0a  .wrapWidth() )..
1960: 09 7b 0d 0a 09 09 2f 2f 20 90 dd 92 e8 82 b5 82  .{....// .......
1970: bd 90 dc 82 e8 95 d4 82 b5 95 9d 82 e6 82 e8 92  ................
1980: 5a 82 a2 8f ea 8d 87 82 cd 88 ea 8d 73 82 c5 8d  Z...........s...
1990: cf 82 de 81 42 0d 0a 09 09 77 6c 5b 31 5d 20 3d  ....B....wl[1] =
19a0: 20 64 6f 63 5f 2e 6c 65 6e 28 73 2e 74 6c 29 3b   doc_.len(s.tl);
19b0: 0d 0a 09 09 77 6c 2e 46 6f 72 63 65 53 69 7a 65  ....wl.ForceSize
19c0: 28 20 32 20 29 3b 0d 0a 09 7d 0d 0a 09 65 6c 73  ( 2 );...}...els
19d0: 65 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 95 a1 90 94  e...{....// ....
19e0: 8d 73 82 c9 82 c8 82 e9 8f ea 8d 87 0d 0a 09 09  .s..............
19f0: 75 6c 6f 6e 67 20 76 72 3d 31 2c 20 73 74 74 3d  ulong vr=1, stt=
1a00: 30 3b 0d 0a 09 09 77 68 69 6c 65 28 20 77 6c 5b  0;....while( wl[
1a10: 76 72 5d 20 3c 20 73 2e 61 64 20 29 20 2f 2f 20  vr] < s.ad ) // 
1a20: 77 68 69 6c 65 28 20 76 72 8d 73 96 da 82 cd 95  while( vr.s.....
1a30: cf 8d 58 89 d3 8f 8a 82 e6 82 e8 8e e8 91 4f 20  ..X...........O 
1a40: 29 0d 0a 09 09 09 73 74 74 20 3d 20 77 6c 5b 20  ).....stt = wl[ 
1a50: 76 72 2b 2b 20 5d 3b 20 20 2f 2f 20 73 74 74 20  vr++ ];  // stt 
1a60: 3d 20 8e 9f 82 cc 8d 73 82 cc 8d 73 93 aa 82 cc  = .....s...s....
1a70: 83 41 83 68 83 8c 83 58 0d 0a 0d 0a 09 09 2f 2f  .A.h...X......//
1a80: 20 95 cf 8d 58 89 d3 8f 8a 88 c8 8d 7e 82 cc 82   ...X.......~...
1a90: dd 8f 43 90 b3 0d 0a 09 09 77 6c 2e 46 6f 72 63  ..C......wl.Forc
1aa0: 65 53 69 7a 65 28 20 76 72 20 29 3b 0d 0a 09 09  eSize( vr );....
1ab0: 4d 6f 64 69 66 79 57 72 61 70 49 6e 66 6f 28 20  ModifyWrapInfo( 
1ac0: 64 6f 63 5f 2e 74 6c 28 73 2e 74 6c 29 2c 20 64  doc_.tl(s.tl), d
1ad0: 6f 63 5f 2e 6c 65 6e 28 73 2e 74 6c 29 2c 20 77  oc_.len(s.tl), w
1ae0: 6c 2c 20 73 74 74 20 29 3b 0d 0a 09 7d 0d 0a 0d  l, stt );...}...
1af0: 0a 09 2f 2f 20 95 5c 8e a6 8d 73 82 cc 91 8d 90  ..// .\...s.....
1b00: 94 82 f0 8f 43 90 b3 0d 0a 09 76 6c 4e 75 6d 5f  ....C.....vlNum_
1b10: 20 2b 3d 20 28 20 77 6c 2e 72 6c 6e 28 29 20 2d   += ( wl.rln() -
1b20: 20 6f 6c 64 56 52 4e 75 6d 20 29 3b 0d 0a 0d 0a   oldVRNum );....
1b30: 09 2f 2f 20 90 dc 82 e8 95 d4 82 b5 82 c8 82 b5  .// ............
1b40: 82 be 82 c6 91 8d 89 a1 95 9d 82 cc 8d 58 90 56  .............X.V
1b50: 82 aa 95 4b 97 76 0d 0a 09 69 66 28 20 63 76 73  ...K.v...if( cvs
1b60: 5f 2e 77 72 61 70 54 79 70 65 28 29 20 3d 3d 20  _.wrapType() == 
1b70: 4e 4f 57 52 41 50 20 29 0d 0a 09 09 69 66 28 20  NOWRAP )....if( 
1b80: 74 65 78 74 43 78 5f 20 3c 3d 20 77 6c 2e 77 69  textCx_ <= wl.wi
1b90: 64 74 68 28 29 20 29 0d 0a 09 09 7b 0d 0a 09 09  dth() )....{....
1ba0: 09 74 65 78 74 43 78 5f 20 3d 20 77 6c 2e 77 69  .textCx_ = wl.wi
1bb0: 64 74 68 28 29 3b 0d 0a 09 09 09 72 65 74 75 72  dth();.....retur
1bc0: 6e 20 32 3b 0d 0a 09 09 7d 0d 0a 09 09 65 6c 73  n 2;....}....els
1bd0: 65 20 69 66 28 20 74 65 78 74 43 78 5f 20 3d 3d  e if( textCx_ ==
1be0: 20 6f 6c 64 57 69 64 74 68 20 29 0d 0a 09 09 7b   oldWidth )....{
1bf0: 0d 0a 09 09 09 72 65 74 75 72 6e 20 30 3b 0d 0a  .....return 0;..
1c00: 09 09 7d 0d 0a 09 09 65 6c 73 65 0d 0a 09 09 7b  ..}....else....{
1c10: 0d 0a 09 09 09 72 65 74 75 72 6e 20 31 3b 0d 0a  .....return 1;..
1c20: 09 09 7d 0d 0a 09 72 65 74 75 72 6e 20 32 3b 0d  ..}...return 2;.
1c30: 0a 7d 0d 0a 0d 0a 69 6e 74 20 56 69 65 77 49 6d  .}....int ViewIm
1c40: 70 6c 3a 3a 49 6e 73 65 72 74 4d 75 6c 74 69 28  pl::InsertMulti(
1c50: 20 75 6c 6f 6e 67 20 74 69 5f 73 2c 20 75 6c 6f   ulong ti_s, ulo
1c60: 6e 67 20 74 69 5f 65 20 29 0d 0a 7b 0d 0a 09 2f  ng ti_e )..{.../
1c70: 2f 20 8e 77 92 e8 82 b5 82 bd 95 aa 82 be 82 af  / .w............
1c80: 90 56 82 b5 82 ad 8d 73 8f ee 95 f1 82 f0 92 c7  .V.....s........
1c90: 89 c1 81 42 0d 0a 09 2f 2f 20 81 95 90 dc 82 e8  ...B...// ......
1ca0: 95 d4 82 b5 8f ee 95 f1 82 e0 82 ab 82 bf 82 f1  ................
1cb0: 82 c6 8c 76 8e 5a 0d 0a 09 2f 2f 0d 0a 09 2f 2f  ...v.Z...//...//
1cc0: 20 95 d4 92 6c 82 cd 0d 0a 09 2f 2f 20 20 20 31   ...l.....//   1
1cd0: 3a 20 22 90 dc 82 e8 95 d4 82 b5 82 a0 82 e8 22  : "............"
1ce0: 20 6f 72 20 22 82 b1 82 cc 8d 73 82 aa 89 a1 82   or ".....s.....
1cf0: c9 88 ea 94 d4 92 b7 82 ad 82 c8 82 c1 82 bd 22  ..............."
1d00: 0d 0a 09 2f 2f 20 20 20 30 3a 20 22 82 b1 82 cc  ...//   0: "....
1d10: 8d 73 88 c8 8a 4f 82 cc 82 c7 82 b1 82 a9 82 aa  .s...O..........
1d20: 8d c5 92 b7 22 0d 0a 09 2f 2f 20 8f da 82 b5 82  ...."...// .....
1d30: ad 82 cd 20 52 65 57 72 61 70 53 69 6e 67 6c 65  ... ReWrapSingle
1d40: 28 29 20 82 f0 8c a9 82 e6 81 42 0d 0a 0d 0a 09  () .......B.....
1d50: 75 6c 6f 6e 67 20 64 79 3d 30 2c 20 63 78 3d 30  ulong dy=0, cx=0
1d60: 3b 0d 0a 09 66 6f 72 28 20 75 6c 6f 6e 67 20 69  ;...for( ulong i
1d70: 3d 74 69 5f 73 3b 20 69 3c 3d 74 69 5f 65 3b 20  =ti_s; i<=ti_e; 
1d80: 2b 2b 69 20 29 0d 0a 09 7b 0d 0a 09 09 57 4c 69  ++i )...{....WLi
1d90: 6e 65 2a 20 70 77 6c 20 3d 20 6e 65 77 20 57 4c  ne* pwl = new WL
1da0: 69 6e 65 3b 0d 0a 09 09 70 77 6c 2d 3e 41 64 64  ine;....pwl->Add
1db0: 28 20 43 61 6c 63 4c 69 6e 65 57 69 64 74 68 28  ( CalcLineWidth(
1dc0: 20 64 6f 63 5f 2e 74 6c 28 69 29 2c 20 64 6f 63   doc_.tl(i), doc
1dd0: 5f 2e 6c 65 6e 28 69 29 20 29 20 29 3b 0d 0a 0d  _.len(i) ) );...
1de0: 0a 09 09 69 66 28 20 70 77 6c 2d 3e 77 69 64 74  ...if( pwl->widt
1df0: 68 28 29 20 3c 20 63 76 73 5f 2e 77 72 61 70 57  h() < cvs_.wrapW
1e00: 69 64 74 68 28 29 20 29 0d 0a 09 09 7b 0d 0a 09  idth() )....{...
1e10: 09 09 2f 2f 20 90 dd 92 e8 82 b5 82 bd 90 dc 82  ..// ...........
1e20: e8 95 d4 82 b5 95 9d 82 e6 82 e8 92 5a 82 a2 8f  ............Z...
1e30: ea 8d 87 82 cd 88 ea 8d 73 82 c5 8d cf 82 de 81  ........s.......
1e40: 42 0d 0a 09 09 09 70 77 6c 2d 3e 41 64 64 28 20  B.....pwl->Add( 
1e50: 64 6f 63 5f 2e 6c 65 6e 28 69 29 20 29 3b 0d 0a  doc_.len(i) );..
1e60: 09 09 09 64 79 2b 2b 3b 0d 0a 09 09 09 69 66 28  ...dy++;.....if(
1e70: 20 63 78 20 3c 20 70 77 6c 2d 3e 77 69 64 74 68   cx < pwl->width
1e80: 28 29 20 29 0d 0a 09 09 09 09 63 78 20 3d 20 70  () )......cx = p
1e90: 77 6c 2d 3e 77 69 64 74 68 28 29 3b 0d 0a 09 09  wl->width();....
1ea0: 7d 0d 0a 09 09 65 6c 73 65 0d 0a 09 09 7b 0d 0a  }....else....{..
1eb0: 09 09 09 2f 2f 20 95 a1 90 94 8d 73 82 c9 82 c8  ...// .....s....
1ec0: 82 e9 8f ea 8d 87 0d 0a 09 09 09 4d 6f 64 69 66  ...........Modif
1ed0: 79 57 72 61 70 49 6e 66 6f 28 20 64 6f 63 5f 2e  yWrapInfo( doc_.
1ee0: 74 6c 28 69 29 2c 20 64 6f 63 5f 2e 6c 65 6e 28  tl(i), doc_.len(
1ef0: 69 29 2c 20 2a 70 77 6c 2c 20 30 20 29 3b 0d 0a  i), *pwl, 0 );..
1f00: 09 09 09 64 79 20 2b 3d 20 70 77 6c 2d 3e 72 6c  ...dy += pwl->rl
1f10: 6e 28 29 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 77  n();....}......w
1f20: 72 61 70 5f 2e 49 6e 73 65 72 74 41 74 28 20 69  rap_.InsertAt( i
1f30: 2c 20 70 77 6c 20 29 3b 0d 0a 09 7d 0d 0a 0d 0a  , pwl );...}....
1f40: 09 2f 2f 20 95 5c 8e a6 8d 73 82 cc 91 8d 90 94  .// .\...s......
1f50: 82 f0 8f 43 90 b3 0d 0a 09 76 6c 4e 75 6d 5f 20  ...C.....vlNum_ 
1f60: 2b 3d 20 64 79 3b 0d 0a 0d 0a 09 2f 2f 20 90 dc  += dy;.....// ..
1f70: 82 e8 95 d4 82 b5 82 c8 82 b5 82 be 82 c6 91 8d  ................
1f80: 89 a1 95 9d 82 cc 8d 58 90 56 82 aa 95 4b 97 76  .......X.V...K.v
1f90: 0d 0a 09 69 66 28 20 63 76 73 5f 2e 77 72 61 70  ...if( cvs_.wrap
1fa0: 54 79 70 65 28 29 20 3d 3d 20 4e 4f 57 52 41 50  Type() == NOWRAP
1fb0: 20 29 0d 0a 09 7b 0d 0a 09 09 69 66 28 20 74 65   )...{....if( te
1fc0: 78 74 43 78 5f 20 3c 3d 20 63 78 20 29 0d 0a 09  xtCx_ <= cx )...
1fd0: 09 7b 0d 0a 09 09 09 74 65 78 74 43 78 5f 20 3d  .{.....textCx_ =
1fe0: 20 63 78 3b 0d 0a 09 09 09 72 65 74 75 72 6e 20   cx;.....return 
1ff0: 31 3b 0d 0a 09 09 7d 0d 0a 09 09 72 65 74 75 72  1;....}....retur
2000: 6e 20 30 3b 0d 0a 09 7d 0d 0a 09 72 65 74 75 72  n 0;...}...retur
2010: 6e 20 31 3b 0d 0a 7d 0d 0a 0d 0a 69 6e 74 20 56  n 1;..}....int V
2020: 69 65 77 49 6d 70 6c 3a 3a 44 65 6c 65 74 65 4d  iewImpl::DeleteM
2030: 75 6c 74 69 28 20 75 6c 6f 6e 67 20 74 69 5f 73  ulti( ulong ti_s
2040: 2c 20 75 6c 6f 6e 67 20 74 69 5f 65 20 29 0d 0a  , ulong ti_e )..
2050: 7b 0d 0a 09 2f 2f 20 8e 77 92 e8 82 b5 82 bd 94  {...// .w.......
2060: cd 88 cd 82 cc 8d 73 8f ee 95 f1 82 f0 8d ed 8f  ......s.........
2070: 9c 0d 0a 09 2f 2f 0d 0a 09 2f 2f 20 95 d4 92 6c  ....//...// ...l
2080: 82 cd 0d 0a 09 2f 2f 20 20 20 31 3a 20 22 90 dc  .....//   1: "..
2090: 82 e8 95 d4 82 b5 82 a0 82 e8 22 20 6f 72 20 22  .........." or "
20a0: 82 b1 82 cc 8d 73 88 c8 8a 4f 82 cc 82 c7 82 b1  .....s...O......
20b0: 82 a9 82 aa 8d c5 92 b7 22 0d 0a 09 2f 2f 20 20  ........"...//  
20c0: 20 30 3a 20 22 82 b3 82 c1 82 ab 82 dc 82 c5 82   0: "...........
20d0: b1 82 cc 8d 73 82 cd 8d c5 92 b7 82 be 82 c1 82  ....s...........
20e0: bd 82 aa 92 5a 82 ad 82 c8 82 c1 82 bf 82 e1 82  ....Z...........
20f0: c1 82 bd 22 0d 0a 09 2f 2f 20 8f da 82 b5 82 ad  ..."...// ......
2100: 82 cd 20 52 65 57 72 61 70 53 69 6e 67 6c 65 28  .. ReWrapSingle(
2110: 29 20 82 f0 8c a9 82 e6 81 42 0d 0a 0d 0a 09 62  ) .......B.....b
2120: 6f 6f 6c 20 20 77 69 64 74 68 43 68 61 6e 67 65  ool  widthChange
2130: 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 09 75 6c 6f  d = false;...ulo
2140: 6e 67 20 64 79 20 3d 20 30 3b 0d 0a 0d 0a 09 2f  ng dy = 0;...../
2150: 2f 20 8f ee 95 f1 8e fb 8f 57 82 b5 82 c8 82 aa  / .......W......
2160: 82 e7 8d ed 8f 9c 0d 0a 09 66 6f 72 28 20 75 6c  .........for( ul
2170: 6f 6e 67 20 63 78 3d 74 65 78 74 43 78 5f 2c 20  ong cx=textCx_, 
2180: 69 3d 74 69 5f 73 3b 20 69 3c 3d 74 69 5f 65 3b  i=ti_s; i<=ti_e;
2190: 20 2b 2b 69 20 29 0d 0a 09 7b 0d 0a 09 09 57 4c   ++i )...{....WL
21a0: 69 6e 65 26 20 77 6c 20 3d 20 77 72 61 70 5f 5b  ine& wl = wrap_[
21b0: 69 5d 3b 0d 0a 09 09 64 79 20 2b 3d 20 77 6c 2e  i];....dy += wl.
21c0: 72 6c 6e 28 29 3b 0d 0a 09 09 69 66 28 20 63 78  rln();....if( cx
21d0: 20 3d 3d 20 77 6c 2e 77 69 64 74 68 28 29 20 29   == wl.width() )
21e0: 0d 0a 09 09 09 77 69 64 74 68 43 68 61 6e 67 65  .....widthChange
21f0: 64 20 3d 20 74 72 75 65 3b 0d 0a 09 7d 0d 0a 09  d = true;...}...
2200: 77 72 61 70 5f 2e 52 65 6d 6f 76 65 41 74 28 20  wrap_.RemoveAt( 
2210: 74 69 5f 73 2c 20 28 74 69 5f 65 2d 74 69 5f 73  ti_s, (ti_e-ti_s
2220: 2b 31 29 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 95 5c  +1) );.....// .\
2230: 8e a6 8d 73 82 cc 91 8d 90 94 82 f0 8f 43 90 b3  ...s.........C..
2240: 0d 0a 09 76 6c 4e 75 6d 5f 20 2d 3d 20 64 79 3b  ...vlNum_ -= dy;
2250: 0d 0a 0d 0a 09 2f 2f 20 90 dc 82 e8 95 d4 82 b5  .....// ........
2260: 82 c8 82 b5 82 be 82 c6 91 8d 89 a1 95 9d 82 cc  ................
2270: 8d 58 90 56 82 aa 95 4b 97 76 0d 0a 09 72 65 74  .X.V...K.v...ret
2280: 75 72 6e 20 28 20 63 76 73 5f 2e 77 72 61 70 54  urn ( cvs_.wrapT
2290: 79 70 65 28 29 3d 3d 4e 4f 57 52 41 50 20 26 26  ype()==NOWRAP &&
22a0: 20 77 69 64 74 68 43 68 61 6e 67 65 64 20 29 20   widthChanged ) 
22b0: 3f 20 30 20 3a 20 31 3b 0d 0a 7d 0d 0a 0d 0a 0d  ? 0 : 1;..}.....
22c0: 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ...//-----------
22d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
22e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
22f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2300: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
2310: 2f 2f 20 8d c0 95 57 92 6c 95 cf 8a b7 0d 0a 2f  // ...W.l....../
2320: 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /---------------
2330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2350: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 76 6f  ----------....vo
2370: 69 64 20 56 69 65 77 49 6d 70 6c 3a 3a 43 6f 6e  id ViewImpl::Con
2380: 76 44 50 6f 73 54 6f 56 50 6f 73 28 20 44 50 6f  vDPosToVPos( DPo
2390: 73 20 64 70 2c 20 56 50 6f 73 2a 20 76 70 2c 20  s dp, VPos* vp, 
23a0: 63 6f 6e 73 74 20 56 50 6f 73 2a 20 62 61 73 65  const VPos* base
23b0: 20 29 20 63 6f 6e 73 74 0d 0a 7b 0d 0a 09 2f 2f   ) const..{...//
23c0: 20 95 e2 90 b3 0d 0a 09 64 70 2e 74 6c 20 3d 20   .......dp.tl = 
23d0: 4d 69 6e 28 20 64 70 2e 74 6c 2c 20 64 6f 63 5f  Min( dp.tl, doc_
23e0: 2e 74 6c 6e 28 29 2d 31 20 29 3b 0d 0a 09 64 70  .tln()-1 );...dp
23f0: 2e 61 64 20 3d 20 4d 69 6e 28 20 64 70 2e 61 64  .ad = Min( dp.ad
2400: 2c 20 64 6f 63 5f 2e 6c 65 6e 28 64 70 2e 74 6c  , doc_.len(dp.tl
2410: 29 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 95 cf 8a b7  ) );.....// ....
2420: 82 cc 8a ee 8f 80 93 5f 82 aa 8e 77 92 e8 82 b3  ......._...w....
2430: 82 ea 82 c4 82 a2 82 c8 82 af 82 ea 82 ce 81 41  ...............A
2440: 8c b4 93 5f 82 f0 8a ee 8f 80 82 c6 82 b7 82 e9  ..._............
2450: 0d 0a 09 56 50 6f 73 20 74 6f 70 50 6f 73 28 66  ...VPos topPos(f
2460: 61 6c 73 65 29 3b 20 2f 2f 20 82 4f 83 4e 83 8a  alse); // .O.N..
2470: 83 41 0d 0a 09 69 66 28 20 62 61 73 65 20 3d 3d  .A...if( base ==
2480: 20 4e 55 4c 4c 20 29 0d 0a 09 09 62 61 73 65 20   NULL )....base 
2490: 3d 20 26 74 6f 70 50 6f 73 3b 0d 0a 0d 0a 09 2f  = &topPos;...../
24a0: 2f 20 82 c6 82 e8 82 a0 82 a6 82 b8 62 61 73 65  / ..........base
24b0: 8d 73 93 aa 82 cc 92 6c 82 f0 93 fc 82 ea 82 c4  .s.....l........
24c0: 82 a8 82 ad 0d 0a 09 75 6c 6f 6e 67 20 76 6c 20  .......ulong vl 
24d0: 3d 20 62 61 73 65 2d 3e 76 6c 20 2d 20 62 61 73  = base->vl - bas
24e0: 65 2d 3e 72 6c 3b 0d 0a 09 75 6c 6f 6e 67 20 72  e->rl;...ulong r
24f0: 6c 20 3d 20 30 3b 0d 0a 09 69 6e 74 20 76 78 3b  l = 0;...int vx;
2500: 0d 0a 0d 0a 09 2f 2f 20 93 af 82 b6 8d 73 93 e0  .....// .....s..
2510: 82 be 82 c1 82 bd 8f ea 8d 87 0d 0a 09 2f 2f 69  .............//i
2520: 66 28 20 64 70 2e 74 6c 20 3d 3d 20 62 61 73 65  f( dp.tl == base
2530: 2d 3e 74 6c 20 29 0d 0a 09 2f 2f 7b 0d 0a 09 2f  ->tl )...//{.../
2540: 2f 09 97 e1 82 a6 82 ce 20 5b 81 a8 5d 20 82 f0  /....... [..] ..
2550: 89 9f 82 b5 82 bd 82 c6 82 ab 82 c8 82 c7 81 41  ...............A
2560: 89 45 97 d7 82 cc 95 b6 8e 9a 82 cc 89 a1 95 9d  .E..............
2570: 82 f0 0d 0a 09 2f 2f 09 91 ab 82 b7 82 be 82 af  .....//.........
2580: 82 c5 8e 9f 82 cc 88 ca 92 75 82 cd 8e 5a 8f 6f  .........u...Z.o
2590: 82 c5 82 ab 82 e9 81 42 82 b1 82 ea 82 f0 8e 67  .......B.......g
25a0: 82 c1 82 c4 95 81 92 ca 82 cc 0d 0a 09 2f 2f 09  .............//.
25b0: 83 4a 81 5b 83 5c 83 8b 88 da 93 ae 82 cd 82 b8  .J.[.\..........
25c0: 82 c1 82 c6 8d 82 91 ac 89 bb 82 c5 82 ab 82 e9  ................
25d0: 82 cd 82 b8 82 c5 82 a0 82 e9 82 aa 81 41 0d 0a  .............A..
25e0: 09 2f 2f 09 82 c6 82 e8 82 a0 82 a6 82 b8 96 ca  .//.............
25f0: 93 7c 82 ad 82 b3 82 a2 82 cc 82 c5 81 41 8d a1  .|...........A..
2600: 82 cc 82 c6 82 b1 82 eb 97 aa 81 42 0d 0a 09 2f  ...........B.../
2610: 2f 7d 0d 0a 0d 0a 09 2f 2f 20 88 e1 82 a4 8d 73  /}.....// .....s
2620: 82 be 82 c1 82 bd 8f ea 8d 87 0d 0a 09 2f 2f 65  .............//e
2630: 6c 73 65 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 76 6c  lse...{....// vl
2640: 82 f0 8d 87 82 ed 82 b9 82 e9 0d 0a 09 09 75 6c  ..............ul
2650: 6f 6e 67 20 74 6c 20 3d 20 62 61 73 65 2d 3e 74  ong tl = base->t
2660: 6c 3b 0d 0a 09 09 69 66 28 20 74 6c 20 3e 20 64  l;....if( tl > d
2670: 70 2e 74 6c 20 29 20 20 20 20 20 20 2f 2f 20 96  p.tl )      // .
2680: da 93 49 92 6e 82 aa 8a ee 8f 80 82 e6 82 e8 8f  ..I.n...........
2690: e3 82 c9 82 a0 82 e9 8f ea 8d 87 0d 0a 09 09 09  ................
26a0: 64 6f 0d 0a 09 09 09 09 76 6c 20 2d 3d 20 72 6c  do......vl -= rl
26b0: 6e 28 2d 2d 74 6c 29 3b 0d 0a 09 09 09 77 68 69  n(--tl);.....whi
26c0: 6c 65 28 20 74 6c 20 3e 20 64 70 2e 74 6c 20 29  le( tl > dp.tl )
26d0: 3b 0d 0a 09 09 65 6c 73 65 20 69 66 28 20 74 6c  ;....else if( tl
26e0: 20 3c 20 64 70 2e 74 6c 20 29 20 2f 2f 20 96 da   < dp.tl ) // ..
26f0: 93 49 92 6e 82 aa 8a ee 8f 80 82 e6 82 e8 89 ba  .I.n............
2700: 82 c9 82 a0 82 e9 8f ea 8d 87 0d 0a 09 09 09 64  ...............d
2710: 6f 0d 0a 09 09 09 09 76 6c 20 2b 3d 20 72 6c 6e  o......vl += rln
2720: 28 74 6c 2b 2b 29 3b 0d 0a 09 09 09 77 68 69 6c  (tl++);.....whil
2730: 65 28 20 74 6c 20 3c 20 64 70 2e 74 6c 20 29 3b  e( tl < dp.tl );
2740: 0d 0a 0d 0a 09 09 2f 2f 20 72 6c 82 f0 8d 87 82  ......// rl.....
2750: ed 82 b9 82 e9 0d 0a 09 09 75 6c 6f 6e 67 20 73  .........ulong s
2760: 74 74 3d 30 3b 0d 0a 09 09 77 68 69 6c 65 28 20  tt=0;....while( 
2770: 77 72 61 70 5f 5b 74 6c 5d 5b 72 6c 2b 31 5d 20  wrap_[tl][rl+1] 
2780: 3c 20 64 70 2e 61 64 20 29 0d 0a 09 09 09 73 74  < dp.ad ).....st
2790: 74 20 3d 20 77 72 61 70 5f 5b 74 6c 5d 5b 2b 2b  t = wrap_[tl][++
27a0: 72 6c 5d 3b 0d 0a 09 09 76 6c 20 2b 3d 20 72 6c  rl];....vl += rl
27b0: 3b 0d 0a 0d 0a 09 09 2f 2f 20 78 8d c0 95 57 8c  ;......// x...W.
27c0: 76 8e 5a 0d 0a 09 09 76 78 20 3d 20 43 61 6c 63  v.Z....vx = Calc
27d0: 4c 69 6e 65 57 69 64 74 68 28 20 64 6f 63 5f 2e  LineWidth( doc_.
27e0: 74 6c 28 74 6c 29 2b 73 74 74 2c 20 64 70 2e 61  tl(tl)+stt, dp.a
27f0: 64 2d 73 74 74 20 29 3b 0d 0a 09 7d 0d 0a 0d 0a  d-stt );...}....
2800: 09 76 70 2d 3e 74 6c 20 3d 20 64 70 2e 74 6c 3b  .vp->tl = dp.tl;
2810: 0d 0a 09 76 70 2d 3e 61 64 20 3d 20 64 70 2e 61  ...vp->ad = dp.a
2820: 64 3b 0d 0a 09 76 70 2d 3e 76 6c 20 3d 20 76 6c  d;...vp->vl = vl
2830: 3b 0d 0a 09 76 70 2d 3e 72 6c 20 3d 20 72 6c 3b  ;...vp->rl = rl;
2840: 0d 0a 09 76 70 2d 3e 72 78 20 3d 20 76 70 2d 3e  ...vp->rx = vp->
2850: 76 78 20 3d 20 76 78 3b 0d 0a 7d 0d 0a 0d 0a 76  vx = vx;..}....v
2860: 6f 69 64 20 56 69 65 77 49 6d 70 6c 3a 3a 47 65  oid ViewImpl::Ge
2870: 74 56 50 6f 73 28 20 69 6e 74 20 78 2c 20 69 6e  tVPos( int x, in
2880: 74 20 79 2c 20 56 50 6f 73 2a 20 76 70 2c 20 62  t y, VPos* vp, b
2890: 6f 6f 6c 20 6c 69 6e 65 6d 6f 64 65 20 29 20 63  ool linemode ) c
28a0: 6f 6e 73 74 0d 0a 7b 0d 0a 2f 2f 20 78 8d c0 95  onst..{..// x...
28b0: 57 95 e2 90 b3 0d 0a 0d 0a 09 78 20 3d 20 78 20  W.........x = x 
28c0: 2d 20 6c 6e 61 28 29 20 2b 20 72 6c 53 63 72 5f  - lna() + rlScr_
28d0: 2e 6e 50 6f 73 3b 0d 0a 0d 0a 2f 2f 20 82 dc 82  .nPos;....// ...
28e0: b8 8d 73 94 d4 8d 86 8c 76 8e 5a 0d 0a 0d 0a 09  ..s.....v.Z.....
28f0: 69 6e 74 20 74 6c 20 3d 20 75 64 53 63 72 5f 74  int tl = udScr_t
2900: 6c 5f 3b 0d 0a 09 69 6e 74 20 76 6c 20 3d 20 75  l_;...int vl = u
2910: 64 53 63 72 5f 2e 6e 50 6f 73 20 2d 20 75 64 53  dScr_.nPos - udS
2920: 63 72 5f 76 72 6c 5f 3b 0d 0a 09 69 6e 74 20 72  cr_vrl_;...int r
2930: 6c 20 3d 20 79 20 2f 20 66 6e 74 28 29 2e 48 28  l = y / fnt().H(
2940: 29 20 2b 20 75 64 53 63 72 5f 76 72 6c 5f 3b 0d  ) + udScr_vrl_;.
2950: 0a 09 69 66 28 20 72 6c 20 3e 3d 20 30 20 29 20  ..if( rl >= 0 ) 
2960: 2f 2f 20 56 69 65 77 8f e3 92 5b 82 e6 82 e8 89  // View...[.....
2970: ba 82 cc 8f ea 8d 87 81 41 89 ba 95 fb 8c fc 82  ........A.......
2980: f0 92 b2 82 d7 82 e9 0d 0a 09 09 77 68 69 6c 65  ...........while
2990: 28 20 74 6c 20 3c 20 28 69 6e 74 29 64 6f 63 5f  ( tl < (int)doc_
29a0: 2e 74 6c 6e 28 29 20 26 26 20 28 69 6e 74 29 72  .tln() && (int)r
29b0: 6c 6e 28 74 6c 29 20 3c 3d 20 72 6c 20 29 0d 0a  ln(tl) <= rl )..
29c0: 09 09 7b 0d 0a 09 09 09 76 6c 20 2b 3d 20 72 6c  ..{.....vl += rl
29d0: 6e 28 74 6c 29 3b 0d 0a 09 09 09 72 6c 20 2d 3d  n(tl);.....rl -=
29e0: 20 72 6c 6e 28 74 6c 29 3b 0d 0a 09 09 09 2b 2b   rln(tl);.....++
29f0: 74 6c 3b 0d 0a 09 09 7d 0d 0a 09 65 6c 73 65 20  tl;....}...else 
2a00: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 56 69 65            // Vie
2a10: 77 8f e3 92 5b 82 e6 82 e8 8f e3 82 cc 8f ea 8d  w...[...........
2a20: 87 81 41 8f e3 95 fb 8c fc 82 f0 92 b2 82 d7 82  ..A.............
2a30: e9 0d 0a 09 09 77 68 69 6c 65 28 20 30 3c 3d 74  .....while( 0<=t
2a40: 6c 20 26 26 20 72 6c 3c 30 20 29 0d 0a 09 09 7b  l && rl<0 )....{
2a50: 0d 0a 09 09 09 76 6c 20 2d 3d 20 72 6c 6e 28 74  .....vl -= rln(t
2a60: 6c 29 3b 0d 0a 09 09 09 72 6c 20 2b 3d 20 72 6c  l);.....rl += rl
2a70: 6e 28 74 6c 29 3b 0d 0a 09 09 09 2d 2d 74 6c 3b  n(tl);.....--tl;
2a80: 0d 0a 09 09 7d 0d 0a 0d 0a 09 69 66 28 20 74 6c  ....}.....if( tl
2a90: 20 3d 3d 20 28 69 6e 74 29 64 6f 63 5f 2e 74 6c   == (int)doc_.tl
2aa0: 6e 28 29 20 29 20 2f 2f 20 45 4f 46 82 e6 82 e8  n() ) // EOF....
2ab0: 89 ba 82 c9 8d 73 82 c1 82 c4 82 b5 82 dc 82 a4  .....s..........
2ac0: 8f ea 8d 87 82 cc 95 e2 90 b3 0d 0a 09 7b 0d 0a  .............{..
2ad0: 09 09 2d 2d 74 6c 2c 20 76 6c 2d 3d 72 6c 6e 28  ..--tl, vl-=rln(
2ae0: 74 6c 29 2c 20 72 6c 3d 72 6c 6e 28 74 6c 29 2d  tl), rl=rln(tl)-
2af0: 31 3b 0d 0a 09 09 69 66 28 20 6c 69 6e 65 6d 6f  1;....if( linemo
2b00: 64 65 20 29 0d 0a 09 09 09 78 20 3d 20 30 78 34  de ).....x = 0x4
2b10: 66 66 66 66 66 66 66 3b 0d 0a 09 7d 0d 0a 09 65  fffffff;...}...e
2b20: 6c 73 65 20 69 66 28 20 74 6c 20 3d 3d 20 2d 31  lse if( tl == -1
2b30: 20 29 20 2f 2f 20 83 74 83 40 83 43 83 8b 93 aa   ) // .t.@.C....
2b40: 82 e6 82 e8 8f e3 82 c9 8d 73 82 c1 82 c4 82 b5  .........s......
2b50: 82 dc 82 a4 8f ea 8d 87 82 cc 95 e2 90 b3 0d 0a  ................
2b60: 09 7b 0d 0a 09 09 74 6c 20 3d 20 76 6c 20 3d 20  .{....tl = vl = 
2b70: 72 6c 20 3d 20 30 3b 0d 0a 09 09 69 66 28 20 6c  rl = 0;....if( l
2b80: 69 6e 65 6d 6f 64 65 20 29 0d 0a 09 09 09 78 20  inemode ).....x 
2b90: 3d 20 30 3b 0d 0a 09 7d 0d 0a 09 65 6c 73 65 0d  = 0;...}...else.
2ba0: 0a 09 7b 0d 0a 09 09 69 66 28 20 6c 69 6e 65 6d  ..{....if( linem
2bb0: 6f 64 65 20 29 20 2f 2f 20 8d 73 91 49 91 f0 83  ode ) // .s.I...
2bc0: 82 81 5b 83 68 82 cc 8f ea 8d 87 0d 0a 09 09 7b  ..[.h..........{
2bd0: 0d 0a 09 09 09 69 66 28 20 74 6c 20 3d 3d 20 28  .....if( tl == (
2be0: 69 6e 74 29 64 6f 63 5f 2e 74 6c 6e 28 29 2d 31  int)doc_.tln()-1
2bf0: 20 29 0d 0a 09 09 09 09 72 6c 3d 72 6c 6e 28 74   )......rl=rln(t
2c00: 6c 29 2d 31 2c 20 78 3d 30 78 34 66 66 66 66 66  l)-1, x=0x4fffff
2c10: 66 66 3b 0d 0a 09 09 09 65 6c 73 65 0d 0a 09 09  ff;.....else....
2c20: 09 09 76 6c 2b 3d 72 6c 6e 28 74 6c 29 2c 20 72  ..vl+=rln(tl), r
2c30: 6c 3d 30 2c 20 2b 2b 74 6c 2c 20 78 3d 30 3b 0d  l=0, ++tl, x=0;.
2c40: 0a 09 09 7d 0d 0a 09 7d 0d 0a 0d 0a 09 76 70 2d  ...}...}.....vp-
2c50: 3e 74 6c 20 3d 20 74 6c 3b 0d 0a 09 76 70 2d 3e  >tl = tl;...vp->
2c60: 76 6c 20 3d 20 76 6c 20 2b 20 72 6c 3b 0d 0a 09  vl = vl + rl;...
2c70: 76 70 2d 3e 72 6c 20 3d 20 72 6c 3b 0d 0a 0d 0a  vp->rl = rl;....
2c80: 2f 2f 20 8e 9f 82 c9 81 41 89 a1 88 ca 92 75 82  // .....A.....u.
2c90: f0 8c 76 8e 5a 0d 0a 0d 0a 09 69 66 28 20 72 6c  ..v.Z.....if( rl
2ca0: 20 3c 20 73 74 61 74 69 63 5f 63 61 73 74 3c 69   < static_cast<i
2cb0: 6e 74 3e 28 77 72 61 70 5f 5b 74 6c 5d 2e 72 6c  nt>(wrap_[tl].rl
2cc0: 6e 28 29 29 20 29 0d 0a 09 7b 0d 0a 09 09 63 6f  n()) )...{....co
2cd0: 6e 73 74 20 75 6e 69 63 6f 64 65 2a 20 73 74 72  nst unicode* str
2ce0: 20 3d 20 64 6f 63 5f 2e 74 6c 28 74 6c 29 3b 0d   = doc_.tl(tl);.
2cf0: 0a 09 09 63 6f 6e 73 74 20 75 6c 6f 6e 67 20 61  ...const ulong a
2d00: 64 65 6e 64 20 3d 20 72 6c 65 6e 64 28 74 6c 2c  dend = rlend(tl,
2d10: 72 6c 29 3b 0d 0a 09 09 75 6c 6f 6e 67 20 61 64  rl);....ulong ad
2d20: 20 3d 20 28 72 6c 3d 3d 30 20 3f 20 30 20 3a 20   = (rl==0 ? 0 : 
2d30: 72 6c 65 6e 64 28 74 6c 2c 72 6c 2d 31 29 29 3b  rlend(tl,rl-1));
2d40: 0d 0a 09 09 69 6e 74 20 20 20 76 78 20 3d 20 28  ....int   vx = (
2d50: 72 6c 3d 3d 30 20 3f 20 30 20 3a 20 66 6e 74 28  rl==0 ? 0 : fnt(
2d60: 29 2e 57 28 26 73 74 72 5b 61 64 2b 2b 5d 29 29  ).W(&str[ad++]))
2d70: 3b 0d 0a 0d 0a 09 09 77 68 69 6c 65 28 20 61 64  ;......while( ad
2d80: 3c 61 64 65 6e 64 20 29 0d 0a 09 09 7b 0d 0a 09  <adend )....{...
2d90: 09 09 69 6e 74 20 6e 76 78 20 3d 20 28 73 74 72  ..int nvx = (str
2da0: 5b 61 64 5d 3d 3d 4c 27 5c 74 27 0d 0a 09 09 09  [ad]==L'\t'.....
2db0: 09 3f 20 66 6e 74 28 29 2e 6e 65 78 74 54 61 62  .? fnt().nextTab
2dc0: 28 76 78 29 0d 0a 09 09 09 09 3a 20 20 76 78 20  (vx)......:  vx 
2dd0: 2b 20 66 6e 74 28 29 2e 57 28 26 73 74 72 5b 61  + fnt().W(&str[a
2de0: 64 5d 29 0d 0a 09 09 09 29 3b 0d 0a 09 09 09 69  d]).....);.....i
2df0: 66 28 20 78 2b 32 20 3c 20 6e 76 78 20 29 0d 0a  f( x+2 < nvx )..
2e00: 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09 09 76  ....break;.....v
2e10: 78 20 3d 20 6e 76 78 3b 0d 0a 09 09 09 2b 2b 61  x = nvx;.....++a
2e20: 64 3b 0d 0a 09 09 7d 0d 0a 0d 0a 09 09 76 70 2d  d;....}......vp-
2e30: 3e 61 64 20 20 20 20 20 20 20 20 20 20 3d 20 61  >ad          = a
2e40: 64 3b 0d 0a 09 09 76 70 2d 3e 72 78 20 3d 20 76  d;....vp->rx = v
2e50: 70 2d 3e 76 78 20 3d 20 76 78 3b 0d 0a 09 7d 0d  p->vx = vx;...}.
2e60: 0a 09 65 6c 73 65 0d 0a 09 7b 0d 0a 09 09 76 70  ..else...{....vp
2e70: 2d 3e 61 64 20 3d 20 76 70 2d 3e 72 78 20 3d 20  ->ad = vp->rx = 
2e80: 76 70 2d 3e 76 78 20 3d 20 30 3b 0d 0a 09 7d 0d  vp->vx = 0;...}.
2e90: 0a 7d 0d 0a                                      .}..