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 .}..