Hex Artifact Content

Not logged in

Artifact b299730b3088514481cb6bf3d7b454daa1c83dfe:


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 64 72 61 77 2e 63 70 70 20 20 20 95   ip_draw.cpp   .
00d0: 60 89 e6 81 45 91 bc 0d 0a 2f 2f 0d 0a 2f 2f 09  `...E....//..//.
00e0: 09 90 dc 82 e8 95 d4 82 b5 82 c6 82 a9 90 46 82  ..............F.
00f0: c6 82 a9 82 f0 8d 6c 97 b6 82 b5 82 c2 82 c2 81  ......l.........
0100: 41 8e c0 8d db 82 c9 95 60 89 e6 8f 88 97 9d 82  A.......`.......
0110: f0 0d 0a 2f 2f 09 09 8d 73 82 a4 82 cc 82 aa 82  ...//...s.......
0120: b1 82 b1 81 42 82 a0 82 c6 83 81 83 62 83 5a 81  ....B.......b.Z.
0130: 5b 83 57 83 66 83 42 83 58 83 70 83 62 83 60 83  [.W.f.B.X.p.b.`.
0140: 83 82 c8 82 c7 82 e0 0d 0a 2f 2f 09 09 82 c2 82  .........//.....
0150: a2 82 c5 82 c9 82 b1 82 cc 83 74 83 40 83 43 83  ..........t.@.C.
0160: 8b 82 c9 81 42 5e 5e 3b 0d 0a 2f 2f 0d 0a 2f 2f  ....B^^;..//..//
0170: 2d 2d 2d 2d 20 69 70 5f 74 65 78 74 2e 63 70 70  ---- ip_text.cpp
0180: 20 20 20 95 b6 8e 9a 97 f1 91 80 8d ec 81 45 91     ...........E.
0190: bc 0d 0a 2f 2f 2d 2d 2d 2d 20 69 70 5f 70 61 72  ...//---- ip_par
01a0: 73 65 2e 63 70 70 20 20 83 4c 81 5b 83 8f 81 5b  se.cpp  .L.[...[
01b0: 83 68 89 f0 90 cd 0d 0a 2f 2f 2d 2d 2d 2d 20 69  .h......//---- i
01c0: 70 5f 77 72 61 70 2e 63 70 70 20 20 20 90 dc 82  p_wrap.cpp   ...
01d0: e8 95 d4 82 b5 0d 0a 2f 2f 2d 2d 2d 2d 20 69 70  .......//---- ip
01e0: 5f 73 63 72 6f 6c 6c 2e 63 70 70 20 83 58 83 4e  _scroll.cpp .X.N
01f0: 83 8d 81 5b 83 8b 0d 0a 2f 2f 2d 2d 2d 2d 20 69  ...[....//---- i
0200: 70 5f 63 75 72 73 6f 72 2e 63 70 70 20 83 4a 81  p_cursor.cpp .J.
0210: 5b 83 5c 83 8b 83 52 83 93 83 67 83 8d 81 5b 83  [.\...R...g...[.
0220: 8b 0d 0a 2f 2f 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 3d 3d 3d  ================
0250: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0260: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a  ==============..
0270: 0d 0a 0d 0a 0d 0a 2f 2f 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: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
02c0: 2d 0d 0a 2f 2f 20 56 69 65 77 82 cc 8f 89 8a fa  -..// View......
02d0: 89 bb 81 45 89 f0 95 fa 0d 0a 2f 2f 2d 2d 2d 2d  ...E......//----
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 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0300: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0320: 2d 2d 2d 2d 2d 0d 0a 0d 0a 56 69 65 77 3a 3a 43  -----....View::C
0330: 6c 73 4e 61 6d 65 0d 0a 09 56 69 65 77 3a 3a 63  lsName...View::c
0340: 6c 61 73 73 4e 61 6d 65 5f 20 3d 20 54 45 58 54  lassName_ = TEXT
0350: 28 22 45 64 69 74 57 69 6e 67 20 56 69 65 77 22  ("EditWing View"
0360: 29 3b 0d 0a 0d 0a 56 69 65 77 3a 3a 56 69 65 77  );....View::View
0370: 28 20 64 6f 63 3a 3a 44 6f 63 75 6d 65 6e 74 26  ( doc::Document&
0380: 20 64 2c 20 48 57 4e 44 20 77 6e 64 20 29 0d 0a   d, HWND wnd )..
0390: 09 3a 20 57 6e 64 49 6d 70 6c 28 20 63 6c 61 73  .: WndImpl( clas
03a0: 73 4e 61 6d 65 5f 2c 20 57 53 5f 43 48 49 4c 44  sName_, WS_CHILD
03b0: 7c 57 53 5f 56 49 53 49 42 4c 45 7c 57 53 5f 56  |WS_VISIBLE|WS_V
03c0: 53 43 52 4f 4c 4c 7c 57 53 5f 48 53 43 52 4f 4c  SCROLL|WS_HSCROL
03d0: 4c 20 29 0d 0a 09 2c 20 64 6f 63 5f 20 20 20 28  L )..., doc_   (
03e0: 20 64 2e 69 6d 70 6c 28 29 20 29 0d 0a 7b 0d 0a   d.impl() )..{..
03f0: 09 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 6c 61  .static bool Cla
0400: 73 73 52 65 67 69 73 74 65 72 65 64 20 3d 20 66  ssRegistered = f
0410: 61 6c 73 65 3b 0d 0a 09 69 66 28 20 21 43 6c 61  alse;...if( !Cla
0420: 73 73 52 65 67 69 73 74 65 72 65 64 20 29 0d 0a  ssRegistered )..
0430: 09 7b 0d 0a 09 09 2f 2f 20 8f 89 89 f1 8d 5c 92  .{....// .....\.
0440: 7a 8e 9e 82 cc 82 dd 81 41 83 4e 83 89 83 58 93  z.......A.N...X.
0450: 6f 98 5e 82 f0 8d 73 82 a4 0d 0a 09 09 43 6c 61  o.^...s......Cla
0460: 73 73 52 65 67 69 73 74 65 72 65 64 20 3d 20 74  ssRegistered = t
0470: 72 75 65 3b 0d 0a 09 09 57 4e 44 43 4c 41 53 53  rue;....WNDCLASS
0480: 45 58 20 77 63 20 20 20 20 3d 20 7b 30 7d 3b 0d  EX wc    = {0};.
0490: 0a 09 09 77 63 2e 6c 70 73 7a 43 6c 61 73 73 4e  ...wc.lpszClassN
04a0: 61 6d 65 20 3d 20 63 6c 61 73 73 4e 61 6d 65 5f  ame = className_
04b0: 3b 0d 0a 09 09 77 63 2e 73 74 79 6c 65 20 20 20  ;....wc.style   
04c0: 20 20 20 20 20 20 3d 20 43 53 5f 44 42 4c 43 4c        = CS_DBLCL
04d0: 4b 53 20 7c 20 43 53 5f 4f 57 4e 44 43 3b 0d 0a  KS | CS_OWNDC;..
04e0: 09 09 77 63 2e 68 43 75 72 73 6f 72 20 20 20 20  ..wc.hCursor    
04f0: 20 20 20 3d 20 61 70 70 28 29 2e 4c 6f 61 64 4f     = app().LoadO
0500: 65 6d 43 75 72 73 6f 72 28 20 49 44 43 5f 49 42  emCursor( IDC_IB
0510: 45 41 4d 20 29 3b 0d 0a 0d 0a 09 09 2f 2f 20 47  EAM );......// G
0520: 6c 6f 62 61 6c 49 4d 45 82 f0 97 4c 8c f8 82 c9  lobalIME...L....
0530: 82 b7 82 e9 0d 0a 09 09 41 54 4f 4d 20 61 20 3d  ........ATOM a =
0540: 20 57 6e 64 49 6d 70 6c 3a 3a 52 65 67 69 73 74   WndImpl::Regist
0550: 65 72 28 20 26 77 63 20 29 3b 0d 0a 09 09 69 6d  er( &wc );....im
0560: 65 28 29 2e 46 69 6c 74 65 72 57 69 6e 64 6f 77  e().FilterWindow
0570: 73 28 20 26 61 2c 20 31 20 29 3b 0d 0a 09 7d 0d  s( &a, 1 );...}.
0580: 0a 0d 0a 09 2f 2f 20 91 8b 8d ec 90 ac 0d 0a 09  ....// .........
0590: 43 72 65 61 74 65 28 20 4e 55 4c 4c 2c 20 77 6e  Create( NULL, wn
05a0: 64 20 29 3b 0d 0a 7d 0d 0a 0d 0a 56 69 65 77 3a  d );..}....View:
05b0: 3a 7e 56 69 65 77 28 29 0d 0a 7b 0d 0a 09 2f 2f  :~View()..{...//
05c0: 20 91 8b 94 6a 8a fc 0d 0a 09 44 65 73 74 72 6f   ...j.....Destro
05d0: 79 28 29 3b 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20  y();..}....void 
05e0: 56 69 65 77 3a 3a 6f 6e 5f 63 72 65 61 74 65 28  View::on_create(
05f0: 20 43 52 45 41 54 45 53 54 52 55 43 54 2a 20 63   CREATESTRUCT* c
0600: 73 20 29 0d 0a 7b 0d 0a 09 69 6d 70 6c 5f 20 3d  s )..{...impl_ =
0610: 20 6e 65 77 20 56 69 65 77 49 6d 70 6c 28 20 2a   new ViewImpl( *
0620: 74 68 69 73 2c 20 64 6f 63 5f 20 29 3b 0d 0a 09  this, doc_ );...
0630: 64 6f 63 5f 2e 41 64 64 48 61 6e 64 6c 65 72 28  doc_.AddHandler(
0640: 20 74 68 69 73 20 29 3b 0d 0a 7d 0d 0a 0d 0a 76   this );..}....v
0650: 6f 69 64 20 56 69 65 77 3a 3a 6f 6e 5f 64 65 73  oid View::on_des
0660: 74 72 6f 79 28 29 0d 0a 7b 0d 0a 09 64 6f 63 5f  troy()..{...doc_
0670: 2e 44 65 6c 48 61 6e 64 6c 65 72 28 20 74 68 69  .DelHandler( thi
0680: 73 20 29 3b 0d 0a 09 69 6d 70 6c 5f 20 3d 20 4e  s );...impl_ = N
0690: 55 4c 4c 3b 0d 0a 7d 0d 0a 0d 0a 0d 0a 0d 0a 2f  ULL;..}......../
06a0: 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /---------------
06b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
06e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 83  ----------..// .
06f0: 54 83 75 83 49 83 75 83 57 83 46 83 4e 83 67 82  T.u.I.u.W.F.N.g.
0700: c9 82 bb 82 cc 82 dc 82 dc 89 f1 82 b7 0d 0a 2f  .............../
0710: 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  /---------------
0720: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0740: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0750: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 76 6f  ----------....vo
0760: 69 64 20 56 69 65 77 3a 3a 53 65 74 57 72 61 70  id View::SetWrap
0770: 54 79 70 65 28 20 69 6e 74 20 77 74 20 29 0d 0a  Type( int wt )..
0780: 09 7b 20 69 6d 70 6c 5f 2d 3e 53 65 74 57 72 61  .{ impl_->SetWra
0790: 70 54 79 70 65 28 20 77 74 20 29 3b 20 7d 0d 0a  pType( wt ); }..
07a0: 0d 0a 76 6f 69 64 20 56 69 65 77 3a 3a 53 68 6f  ..void View::Sho
07b0: 77 4c 69 6e 65 4e 6f 28 20 62 6f 6f 6c 20 73 68  wLineNo( bool sh
07c0: 6f 77 20 29 0d 0a 09 7b 20 69 6d 70 6c 5f 2d 3e  ow )...{ impl_->
07d0: 53 68 6f 77 4c 69 6e 65 4e 6f 28 20 73 68 6f 77  ShowLineNo( show
07e0: 20 29 3b 20 7d 0d 0a 0d 0a 76 6f 69 64 20 56 69   ); }....void Vi
07f0: 65 77 3a 3a 53 65 74 46 6f 6e 74 28 20 63 6f 6e  ew::SetFont( con
0800: 73 74 20 56 43 6f 6e 66 69 67 26 20 76 63 20 29  st VConfig& vc )
0810: 0d 0a 09 7b 20 69 6d 70 6c 5f 2d 3e 53 65 74 46  ...{ impl_->SetF
0820: 6f 6e 74 28 20 76 63 20 29 3b 20 7d 0d 0a 0d 0a  ont( vc ); }....
0830: 76 6f 69 64 20 56 69 65 77 3a 3a 6f 6e 5f 6b 65  void View::on_ke
0840: 79 77 6f 72 64 5f 63 68 61 6e 67 65 28 29 0d 0a  yword_change()..
0850: 09 7b 20 3a 3a 49 6e 76 61 6c 69 64 61 74 65 52  .{ ::InvalidateR
0860: 65 63 74 28 20 68 77 6e 64 28 29 2c 20 4e 55 4c  ect( hwnd(), NUL
0870: 4c 2c 20 46 41 4c 53 45 20 29 3b 20 7d 0d 0a 0d  L, FALSE ); }...
0880: 0a 76 6f 69 64 20 56 69 65 77 3a 3a 6f 6e 5f 74  .void View::on_t
0890: 65 78 74 5f 75 70 64 61 74 65 0d 0a 20 20 28 20  ext_update..  ( 
08a0: 63 6f 6e 73 74 20 44 50 6f 73 26 20 73 2c 20 63  const DPos& s, c
08b0: 6f 6e 73 74 20 44 50 6f 73 26 20 65 2c 20 63 6f  onst DPos& e, co
08c0: 6e 73 74 20 44 50 6f 73 26 20 65 32 2c 20 62 6f  nst DPos& e2, bo
08d0: 6f 6c 20 62 41 66 74 2c 20 62 6f 6f 6c 20 6d 43  ol bAft, bool mC
08e0: 75 72 20 29 0d 0a 09 7b 20 69 6d 70 6c 5f 2d 3e  ur )...{ impl_->
08f0: 6f 6e 5f 74 65 78 74 5f 75 70 64 61 74 65 28 20  on_text_update( 
0900: 73 2c 20 65 2c 20 65 32 2c 20 62 41 66 74 2c 20  s, e, e2, bAft, 
0910: 6d 43 75 72 20 29 3b 20 7d 0d 0a 0d 0a 43 75 72  mCur ); }....Cur
0920: 73 6f 72 26 20 56 69 65 77 3a 3a 63 75 72 28 29  sor& View::cur()
0930: 0d 0a 09 7b 20 72 65 74 75 72 6e 20 69 6d 70 6c  ...{ return impl
0940: 5f 2d 3e 63 75 72 28 29 3b 20 7d 0d 0a 0d 0a 4c  _->cur(); }....L
0950: 52 45 53 55 4c 54 20 56 69 65 77 3a 3a 6f 6e 5f  RESULT View::on_
0960: 6d 65 73 73 61 67 65 28 20 55 49 4e 54 20 6d 73  message( UINT ms
0970: 67 2c 20 57 50 41 52 41 4d 20 77 70 2c 20 4c 50  g, WPARAM wp, LP
0980: 41 52 41 4d 20 6c 70 20 29 0d 0a 7b 0d 0a 09 73  ARAM lp )..{...s
0990: 77 69 74 63 68 28 20 6d 73 67 20 29 0d 0a 09 7b  witch( msg )...{
09a0: 0d 0a 09 63 61 73 65 20 57 4d 5f 50 41 49 4e 54  ...case WM_PAINT
09b0: 3a 7b 0d 0a 09 09 50 41 49 4e 54 53 54 52 55 43  :{....PAINTSTRUC
09c0: 54 20 70 73 3b 0d 0a 09 09 3a 3a 42 65 67 69 6e  T ps;....::Begin
09d0: 50 61 69 6e 74 28 20 68 77 6e 64 28 29 2c 20 26  Paint( hwnd(), &
09e0: 70 73 20 29 3b 0d 0a 09 09 69 6d 70 6c 5f 2d 3e  ps );....impl_->
09f0: 6f 6e 5f 70 61 69 6e 74 28 20 70 73 20 29 3b 0d  on_paint( ps );.
0a00: 0a 09 09 3a 3a 45 6e 64 50 61 69 6e 74 28 20 68  ...::EndPaint( h
0a10: 77 6e 64 28 29 2c 20 26 70 73 20 29 3b 0d 0a 09  wnd(), &ps );...
0a20: 09 7d 62 72 65 61 6b 3b 0d 0a 0d 0a 09 63 61 73  .}break;.....cas
0a30: 65 20 57 4d 5f 53 49 5a 45 3a 0d 0a 09 09 69 6d  e WM_SIZE:....im
0a40: 70 6c 5f 2d 3e 6f 6e 5f 76 69 65 77 5f 72 65 73  pl_->on_view_res
0a50: 69 7a 65 28 20 4c 4f 57 4f 52 44 28 6c 70 29 2c  ize( LOWORD(lp),
0a60: 20 48 49 57 4f 52 44 28 6c 70 29 20 29 3b 0d 0a   HIWORD(lp) );..
0a70: 09 09 62 72 65 61 6b 3b 0d 0a 0d 0a 09 63 61 73  ..break;.....cas
0a80: 65 20 57 4d 5f 48 53 43 52 4f 4c 4c 3a 0d 0a 09  e WM_HSCROLL:...
0a90: 09 69 6d 70 6c 5f 2d 3e 6f 6e 5f 68 73 63 72 6f  .impl_->on_hscro
0aa0: 6c 6c 28 20 4c 4f 57 4f 52 44 28 77 70 29 20 29  ll( LOWORD(wp) )
0ab0: 3b 0d 0a 09 09 62 72 65 61 6b 3b 0d 0a 0d 0a 09  ;....break;.....
0ac0: 63 61 73 65 20 57 4d 5f 56 53 43 52 4f 4c 4c 3a  case WM_VSCROLL:
0ad0: 0d 0a 09 09 69 6d 70 6c 5f 2d 3e 6f 6e 5f 76 73  ....impl_->on_vs
0ae0: 63 72 6f 6c 6c 28 20 4c 4f 57 4f 52 44 28 77 70  croll( LOWORD(wp
0af0: 29 20 29 3b 0d 0a 09 09 62 72 65 61 6b 3b 0d 0a  ) );....break;..
0b00: 0d 0a 09 63 61 73 65 20 57 4d 5f 4d 4f 55 53 45  ...case WM_MOUSE
0b10: 57 48 45 45 4c 3a 0d 0a 09 09 69 6d 70 6c 5f 2d  WHEEL:....impl_-
0b20: 3e 6f 6e 5f 77 68 65 65 6c 28 20 48 49 57 4f 52  >on_wheel( HIWOR
0b30: 44 28 77 70 29 20 29 3b 0d 0a 09 09 62 72 65 61  D(wp) );....brea
0b40: 6b 3b 0d 0a 0d 0a 09 63 61 73 65 20 57 4d 5f 53  k;.....case WM_S
0b50: 45 54 46 4f 43 55 53 3a 0d 0a 09 09 63 75 72 28  ETFOCUS:....cur(
0b60: 29 2e 6f 6e 5f 73 65 74 66 6f 63 75 73 28 29 3b  ).on_setfocus();
0b70: 0d 0a 09 09 62 72 65 61 6b 3b 0d 0a 0d 0a 09 63  ....break;.....c
0b80: 61 73 65 20 57 4d 5f 4b 49 4c 4c 46 4f 43 55 53  ase WM_KILLFOCUS
0b90: 3a 0d 0a 09 09 63 75 72 28 29 2e 6f 6e 5f 6b 69  :....cur().on_ki
0ba0: 6c 6c 66 6f 63 75 73 28 29 3b 0d 0a 09 09 62 72  llfocus();....br
0bb0: 65 61 6b 3b 0d 0a 0d 0a 09 63 61 73 65 20 57 4d  eak;.....case WM
0bc0: 5f 54 49 4d 45 52 3a 0d 0a 09 09 63 75 72 28 29  _TIMER:....cur()
0bd0: 2e 6f 6e 5f 74 69 6d 65 72 28 29 3b 0d 0a 09 09  .on_timer();....
0be0: 62 72 65 61 6b 3b 0d 0a 0d 0a 09 63 61 73 65 20  break;.....case 
0bf0: 57 4d 5f 4b 45 59 44 4f 57 4e 3a 0d 0a 09 09 63  WM_KEYDOWN:....c
0c00: 75 72 28 29 2e 6f 6e 5f 6b 65 79 64 6f 77 6e 28  ur().on_keydown(
0c10: 20 28 69 6e 74 29 77 70 2c 20 6c 70 20 29 3b 0d   (int)wp, lp );.
0c20: 0a 09 09 62 72 65 61 6b 3b 0d 0a 0d 0a 09 63 61  ...break;.....ca
0c30: 73 65 20 57 4d 5f 43 48 41 52 3a 0d 0a 09 09 63  se WM_CHAR:....c
0c40: 75 72 28 29 2e 6f 6e 5f 63 68 61 72 28 20 28 54  ur().on_char( (T
0c50: 43 48 41 52 29 77 70 20 29 3b 0d 0a 09 09 62 72  CHAR)wp );....br
0c60: 65 61 6b 3b 0d 0a 0d 0a 09 63 61 73 65 20 57 4d  eak;.....case WM
0c70: 5f 4c 42 55 54 54 4f 4e 44 4f 57 4e 3a 0d 0a 09  _LBUTTONDOWN:...
0c80: 09 63 75 72 28 29 2e 6f 6e 5f 6c 62 75 74 74 6f  .cur().on_lbutto
0c90: 6e 5f 64 6f 77 6e 28 20 4c 4f 57 4f 52 44 28 6c  n_down( LOWORD(l
0ca0: 70 29 2c 20 48 49 57 4f 52 44 28 6c 70 29 2c 20  p), HIWORD(lp), 
0cb0: 28 77 70 26 4d 4b 5f 53 48 49 46 54 29 21 3d 30  (wp&MK_SHIFT)!=0
0cc0: 20 29 3b 0d 0a 09 09 62 72 65 61 6b 3b 0d 0a 0d   );....break;...
0cd0: 0a 09 63 61 73 65 20 57 4d 5f 4c 42 55 54 54 4f  ..case WM_LBUTTO
0ce0: 4e 55 50 3a 0d 0a 09 09 63 75 72 28 29 2e 6f 6e  NUP:....cur().on
0cf0: 5f 6c 62 75 74 74 6f 6e 5f 75 70 28 20 4c 4f 57  _lbutton_up( LOW
0d00: 4f 52 44 28 6c 70 29 2c 20 48 49 57 4f 52 44 28  ORD(lp), HIWORD(
0d10: 6c 70 29 20 29 3b 0d 0a 09 09 62 72 65 61 6b 3b  lp) );....break;
0d20: 0d 0a 0d 0a 09 63 61 73 65 20 57 4d 5f 4c 42 55  .....case WM_LBU
0d30: 54 54 4f 4e 44 42 4c 43 4c 4b 3a 0d 0a 09 09 63  TTONDBLCLK:....c
0d40: 75 72 28 29 2e 6f 6e 5f 6c 62 75 74 74 6f 6e 5f  ur().on_lbutton_
0d50: 64 62 6c 28 20 4c 4f 57 4f 52 44 28 6c 70 29 2c  dbl( LOWORD(lp),
0d60: 20 48 49 57 4f 52 44 28 6c 70 29 20 29 3b 0d 0a   HIWORD(lp) );..
0d70: 09 09 62 72 65 61 6b 3b 0d 0a 0d 0a 09 63 61 73  ..break;.....cas
0d80: 65 20 57 4d 5f 4d 4f 55 53 45 4d 4f 56 45 3a 0d  e WM_MOUSEMOVE:.
0d90: 0a 09 09 63 75 72 28 29 2e 6f 6e 5f 6d 6f 75 73  ...cur().on_mous
0da0: 65 5f 6d 6f 76 65 28 20 4c 4f 57 4f 52 44 28 6c  e_move( LOWORD(l
0db0: 70 29 2c 20 48 49 57 4f 52 44 28 6c 70 29 20 29  p), HIWORD(lp) )
0dc0: 3b 0d 0a 09 09 62 72 65 61 6b 3b 0d 0a 0d 0a 09  ;....break;.....
0dd0: 63 61 73 65 20 57 4d 5f 43 4f 4e 54 45 58 54 4d  case WM_CONTEXTM
0de0: 45 4e 55 3a 0d 0a 09 09 69 66 28 20 21 63 75 72  ENU:....if( !cur
0df0: 28 29 2e 6f 6e 5f 63 6f 6e 74 65 78 74 6d 65 6e  ().on_contextmen
0e00: 75 28 20 4c 4f 57 4f 52 44 28 6c 70 29 2c 20 48  u( LOWORD(lp), H
0e10: 49 57 4f 52 44 28 6c 70 29 20 29 20 29 0d 0a 09  IWORD(lp) ) )...
0e20: 09 09 72 65 74 75 72 6e 20 57 6e 64 49 6d 70 6c  ..return WndImpl
0e30: 3a 3a 6f 6e 5f 6d 65 73 73 61 67 65 28 20 6d 73  ::on_message( ms
0e40: 67 2c 20 77 70 2c 20 6c 70 20 29 3b 0d 0a 09 09  g, wp, lp );....
0e50: 62 72 65 61 6b 3b 0d 0a 0d 0a 09 63 61 73 65 20  break;.....case 
0e60: 57 4d 5f 49 4d 45 5f 52 45 51 55 45 53 54 3a 0d  WM_IME_REQUEST:.
0e70: 0a 09 09 73 77 69 74 63 68 28 20 77 70 20 29 0d  ...switch( wp ).
0e80: 0a 09 09 7b 0d 0a 09 09 63 61 73 65 20 49 4d 52  ...{....case IMR
0e90: 5f 52 45 43 4f 4e 56 45 52 54 53 54 52 49 4e 47  _RECONVERTSTRING
0ea0: 3a 0d 0a 09 09 09 72 65 74 75 72 6e 20 63 75 72  :.....return cur
0eb0: 28 29 2e 6f 6e 5f 69 6d 65 5f 72 65 63 6f 6e 76  ().on_ime_reconv
0ec0: 65 72 74 73 74 72 69 6e 67 28 0d 0a 09 09 09 09  ertstring(......
0ed0: 72 65 69 6e 74 65 72 70 72 65 74 5f 63 61 73 74  reinterpret_cast
0ee0: 3c 52 45 43 4f 4e 56 45 52 54 53 54 52 49 4e 47  <RECONVERTSTRING
0ef0: 2a 3e 28 6c 70 29 20 29 3b 0d 0a 09 09 63 61 73  *>(lp) );....cas
0f00: 65 20 49 4d 52 5f 43 4f 4e 46 49 52 4d 52 45 43  e IMR_CONFIRMREC
0f10: 4f 4e 56 45 52 54 53 54 52 49 4e 47 3a 0d 0a 09  ONVERTSTRING:...
0f20: 09 09 72 65 74 75 72 6e 20 63 75 72 28 29 2e 6f  ..return cur().o
0f30: 6e 5f 69 6d 65 5f 63 6f 6e 66 69 72 6d 72 65 63  n_ime_confirmrec
0f40: 6f 6e 76 65 72 74 73 74 72 69 6e 67 28 0d 0a 09  onvertstring(...
0f50: 09 09 09 72 65 69 6e 74 65 72 70 72 65 74 5f 63  ...reinterpret_c
0f60: 61 73 74 3c 52 45 43 4f 4e 56 45 52 54 53 54 52  ast<RECONVERTSTR
0f70: 49 4e 47 2a 3e 28 6c 70 29 20 29 3b 0d 0a 09 09  ING*>(lp) );....
0f80: 7d 0d 0a 09 09 62 72 65 61 6b 3b 0d 0a 0d 0a 09  }....break;.....
0f90: 63 61 73 65 20 57 4d 5f 49 4d 45 5f 53 54 41 52  case WM_IME_STAR
0fa0: 54 43 4f 4d 50 4f 53 49 54 49 4f 4e 3a 0d 0a 09  TCOMPOSITION:...
0fb0: 09 63 75 72 28 29 2e 6f 6e 5f 69 6d 65 5f 63 6f  .cur().on_ime_co
0fc0: 6d 70 6f 73 69 74 69 6f 6e 28 20 30 20 29 3b 0d  mposition( 0 );.
0fd0: 0a 09 09 72 65 74 75 72 6e 20 57 6e 64 49 6d 70  ...return WndImp
0fe0: 6c 3a 3a 6f 6e 5f 6d 65 73 73 61 67 65 28 20 6d  l::on_message( m
0ff0: 73 67 2c 20 77 70 2c 20 6c 70 20 29 3b 0d 0a 0d  sg, wp, lp );...
1000: 0a 09 63 61 73 65 20 57 4d 5f 49 4d 45 5f 43 4f  ..case WM_IME_CO
1010: 4d 50 4f 53 49 54 49 4f 4e 3a 0d 0a 09 09 63 75  MPOSITION:....cu
1020: 72 28 29 2e 6f 6e 5f 69 6d 65 5f 63 6f 6d 70 6f  r().on_ime_compo
1030: 73 69 74 69 6f 6e 28 20 6c 70 20 29 3b 0d 0a 09  sition( lp );...
1040: 09 69 66 28 20 6c 70 26 47 43 53 5f 52 45 53 55  .if( lp&GCS_RESU
1050: 4c 54 53 54 52 20 29 0d 0a 09 09 09 62 72 65 61  LTSTR ).....brea
1060: 6b 3b 0d 0a 09 09 2f 2f 20 66 61 6c 6c 20 74 68  k;....// fall th
1070: 72 6f 75 67 68 2e 2e 2e 0d 0a 0d 0a 09 64 65 66  rough........def
1080: 61 75 6c 74 3a 0d 0a 09 09 72 65 74 75 72 6e 20  ault:....return 
1090: 57 6e 64 49 6d 70 6c 3a 3a 6f 6e 5f 6d 65 73 73  WndImpl::on_mess
10a0: 61 67 65 28 20 6d 73 67 2c 20 77 70 2c 20 6c 70  age( msg, wp, lp
10b0: 20 29 3b 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 6e   );...}...return
10c0: 20 30 3b 0d 0a 7d 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f   0;..}........//
10d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
10f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1100: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1110: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 90 fc  ---------..// ..
1120: 82 f0 88 f8 82 ad 82 c6 82 a9 8e 6c 8a 70 82 ad  ...........l.p..
1130: 93 68 82 e9 82 c6 82 a9 81 41 82 bb 81 5b 82 a2  .h.......A...[..
1140: 82 a4 8a ee 96 7b 93 49 82 c8 8f 88 97 9d 0d 0a  .....{.I........
1150: 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  //--------------
1160: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1170: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1180: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1190: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 50  -----------....P
11a0: 61 69 6e 74 65 72 3a 3a 50 61 69 6e 74 65 72 28  ainter::Painter(
11b0: 20 48 44 43 20 68 64 63 2c 20 63 6f 6e 73 74 20   HDC hdc, const 
11c0: 56 43 6f 6e 66 69 67 26 20 76 63 20 29 0d 0a 09  VConfig& vc )...
11d0: 3a 20 64 63 5f 20 20 20 20 20 20 20 20 28 20 68  : dc_        ( h
11e0: 64 63 20 29 0d 0a 09 2c 20 66 6f 6e 74 5f 20 20  dc )..., font_  
11f0: 20 20 20 20 28 20 3a 3a 43 72 65 61 74 65 46 6f      ( ::CreateFo
1200: 6e 74 49 6e 64 69 72 65 63 74 28 20 26 76 63 2e  ntIndirect( &vc.
1210: 66 6f 6e 74 20 29 20 29 0d 0a 09 2c 20 70 65 6e  font ) )..., pen
1220: 5f 20 20 20 20 20 20 20 28 20 3a 3a 43 72 65 61  _       ( ::Crea
1230: 74 65 50 65 6e 28 20 50 53 5f 53 4f 4c 49 44 2c  tePen( PS_SOLID,
1240: 20 30 2c 20 76 63 2e 63 6f 6c 6f 72 5b 43 54 4c   0, vc.color[CTL
1250: 5d 20 29 20 29 0d 0a 09 2c 20 62 72 75 73 68 5f  ] ) )..., brush_
1260: 20 20 20 20 20 28 20 3a 3a 43 72 65 61 74 65 53       ( ::CreateS
1270: 6f 6c 69 64 42 72 75 73 68 28 20 76 63 2e 63 6f  olidBrush( vc.co
1280: 6c 6f 72 5b 42 47 5d 20 29 20 29 0d 0a 09 2c 20  lor[BG] ) )..., 
1290: 77 69 64 74 68 54 61 62 6c 65 5f 28 20 6e 65 77  widthTable_( new
12a0: 20 69 6e 74 5b 36 35 35 33 36 5d 20 29 0d 0a 7b   int[65536] )..{
12b0: 0d 0a 09 2f 2f 20 90 a7 8c e4 95 b6 8e 9a 82 f0  ...// ..........
12c0: 95 60 89 e6 82 b7 82 e9 82 a9 94 db 82 a9 81 48  .`.............H
12d0: 82 cc 83 74 83 89 83 4f 82 f0 8b 4c 89 af 0d 0a  ...t...O...L....
12e0: 09 66 6f 72 28 20 69 6e 74 20 69 3d 30 3b 20 69  .for( int i=0; i
12f0: 3c 63 6f 75 6e 74 6f 66 28 73 63 44 72 61 77 5f  <countof(scDraw_
1300: 29 3b 20 2b 2b 69 20 29 0d 0a 09 09 73 63 44 72  ); ++i )....scDr
1310: 61 77 5f 5b 69 5d 20 3d 20 76 63 2e 73 63 5b 69  aw_[i] = vc.sc[i
1320: 5d 3b 0d 0a 0d 0a 09 2f 2f 20 95 b6 8e 9a 90 46  ];.....// .....F
1330: 82 f0 8b 4c 89 af 0d 0a 09 66 6f 72 28 20 69 6e  ...L.....for( in
1340: 74 20 69 3d 30 3b 20 69 3c 63 6f 75 6e 74 6f 66  t i=0; i<countof
1350: 28 63 6f 6c 6f 72 54 61 62 6c 65 5f 29 3b 20 2b  (colorTable_); +
1360: 2b 69 20 29 0d 0a 09 09 63 6f 6c 6f 72 54 61 62  +i )....colorTab
1370: 6c 65 5f 5b 69 5d 20 3d 20 76 63 2e 63 6f 6c 6f  le_[i] = vc.colo
1380: 72 5b 69 5d 3b 0d 0a 09 09 63 6f 6c 6f 72 54 61  r[i];....colorTa
1390: 62 6c 65 5f 5b 33 5d 20 3d 20 76 63 2e 63 6f 6c  ble_[3] = vc.col
13a0: 6f 72 5b 43 4d 54 5d 3b 0d 0a 0d 0a 09 2f 2f 20  or[CMT];.....// 
13b0: 44 43 82 c9 83 5a 83 62 83 67 0d 0a 09 3a 3a 53  DC...Z.b.g...::S
13c0: 65 6c 65 63 74 4f 62 6a 65 63 74 28 20 64 63 5f  electObject( dc_
13d0: 2c 20 66 6f 6e 74 5f 20 20 29 3b 0d 0a 09 3a 3a  , font_  );...::
13e0: 53 65 6c 65 63 74 4f 62 6a 65 63 74 28 20 64 63  SelectObject( dc
13f0: 5f 2c 20 70 65 6e 5f 20 20 20 29 3b 0d 0a 09 3a  _, pen_   );...:
1400: 3a 53 65 6c 65 63 74 4f 62 6a 65 63 74 28 20 64  :SelectObject( d
1410: 63 5f 2c 20 62 72 75 73 68 5f 20 29 3b 0d 0a 09  c_, brush_ );...
1420: 3a 3a 53 65 74 42 6b 4d 6f 64 65 28 20 20 20 20  ::SetBkMode(    
1430: 64 63 5f 2c 20 54 52 41 4e 53 50 41 52 45 4e 54  dc_, TRANSPARENT
1440: 20 29 3b 0d 0a 09 3a 3a 53 65 74 4d 61 70 4d 6f   );...::SetMapMo
1450: 64 65 28 20 20 20 64 63 5f 2c 20 4d 4d 5f 54 45  de(   dc_, MM_TE
1460: 58 54 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 95 b6 8e  XT );.....// ...
1470: 9a 95 9d 83 65 81 5b 83 75 83 8b 8f 89 8a fa 89  ....e.[.u.......
1480: bb 81 69 41 53 43 49 49 94 cd 88 cd 82 cc 95 b6  ..iASCII........
1490: 8e 9a 88 c8 8a 4f 82 cd 92 78 89 84 8f 88 97 9d  .....O...x......
14a0: 81 6a 0d 0a 09 6d 65 6d 46 46 28 20 77 69 64 74  .j...memFF( widt
14b0: 68 54 61 62 6c 65 5f 2c 20 36 35 35 33 36 2a 73  hTable_, 65536*s
14c0: 69 7a 65 6f 66 28 69 6e 74 29 20 29 3b 0d 0a 09  izeof(int) );...
14d0: 3a 3a 47 65 74 43 68 61 72 57 69 64 74 68 57 28  ::GetCharWidthW(
14e0: 20 64 63 5f 2c 20 4c 27 20 27 2c 20 4c 27 7e 27   dc_, L' ', L'~'
14f0: 2c 20 77 69 64 74 68 54 61 62 6c 65 5f 2b 4c 27  , widthTable_+L'
1500: 20 27 20 29 3b 0d 0a 09 77 69 64 74 68 54 61 62   ' );...widthTab
1510: 6c 65 5f 5b 4c 27 5c 74 27 5d 20 3d 20 57 28 29  le_[L'\t'] = W()
1520: 20 2a 20 4d 61 78 28 31 2c 76 63 2e 74 61 62 73   * Max(1,vc.tabs
1530: 74 65 70 29 3b 0d 0a 09 2f 2f 20 89 ba 88 ca 83  tep);...// .....
1540: 54 83 8d 83 51 81 5b 83 67 82 cd 95 b6 8e 9a 95  T...Q.[.g.......
1550: 9d 83 5b 83 8d 0d 0a 09 6d 65 6d 30 30 28 20 77  ..[.....mem00( w
1560: 69 64 74 68 54 61 62 6c 65 5f 2b 30 78 44 43 30  idthTable_+0xDC0
1570: 30 2c 20 28 30 78 45 30 30 30 20 2d 20 30 78 44  0, (0xE000 - 0xD
1580: 43 30 30 29 2a 73 69 7a 65 6f 66 28 69 6e 74 29  C00)*sizeof(int)
1590: 20 29 3b 0d 0a 0d 0a 09 2f 2f 20 90 94 8e 9a 82   );.....// .....
15a0: cc 8d c5 91 e5 95 9d 82 f0 8c 76 8e 5a 0d 0a 09  ..........v.Z...
15b0: 66 69 67 57 69 64 74 68 5f 20 3d 20 30 3b 0d 0a  figWidth_ = 0;..
15c0: 09 66 6f 72 28 20 75 6e 69 63 6f 64 65 20 63 68  .for( unicode ch
15d0: 3d 4c 27 30 27 3b 20 63 68 3c 3d 4c 27 39 27 3b  =L'0'; ch<=L'9';
15e0: 20 2b 2b 63 68 20 29 0d 0a 09 09 69 66 28 20 66   ++ch )....if( f
15f0: 69 67 57 69 64 74 68 5f 20 3c 20 77 69 64 74 68  igWidth_ < width
1600: 54 61 62 6c 65 5f 5b 63 68 5d 20 29 0d 0a 09 09  Table_[ch] )....
1610: 09 66 69 67 57 69 64 74 68 5f 20 3d 20 77 69 64  .figWidth_ = wid
1620: 74 68 54 61 62 6c 65 5f 5b 63 68 5d 3b 0d 0a 0d  thTable_[ch];...
1630: 0a 09 2f 2f 20 8d 82 82 b3 82 cc 8f ee 95 f1 0d  ..// ...........
1640: 0a 09 54 45 58 54 4d 45 54 52 49 43 20 6d 65 74  ..TEXTMETRIC met
1650: 3b 0d 0a 09 3a 3a 47 65 74 54 65 78 74 4d 65 74  ;...::GetTextMet
1660: 72 69 63 73 28 20 64 63 5f 2c 20 26 6d 65 74 20  rics( dc_, &met 
1670: 29 3b 0d 0a 09 68 65 69 67 68 74 5f 20 3d 20 6d  );...height_ = m
1680: 65 74 2e 74 6d 48 65 69 67 68 74 3b 0d 0a 0d 0a  et.tmHeight;....
1690: 09 2f 2f 20 4c 4f 47 46 4f 4e 54 0d 0a 09 3a 3a  .// LOGFONT...::
16a0: 47 65 74 4f 62 6a 65 63 74 28 20 66 6f 6e 74 5f  GetObject( font_
16b0: 2c 20 73 69 7a 65 6f 66 28 4c 4f 47 46 4f 4e 54  , sizeof(LOGFONT
16c0: 29 2c 20 26 6c 6f 67 66 6f 6e 74 5f 20 29 3b 0d  ), &logfont_ );.
16d0: 0a 7d 0d 0a 0d 0a 50 61 69 6e 74 65 72 3a 3a 7e  .}....Painter::~
16e0: 50 61 69 6e 74 65 72 28 29 0d 0a 7b 0d 0a 09 2f  Painter()..{.../
16f0: 2f 20 93 4b 93 96 82 c8 95 ca 83 49 83 75 83 57  / .K.......I.u.W
1700: 83 46 83 4e 83 67 82 f0 82 ad 82 c1 82 c2 82 af  .F.N.g..........
1710: 82 c4 8e a9 95 aa 82 f0 89 f0 95 fa 82 b7 82 e9  ................
1720: 0d 0a 09 3a 3a 53 65 6c 65 63 74 4f 62 6a 65 63  ...::SelectObjec
1730: 74 28 20 64 63 5f 2c 20 3a 3a 47 65 74 53 74 6f  t( dc_, ::GetSto
1740: 63 6b 4f 62 6a 65 63 74 28 20 4f 45 4d 5f 46 49  ckObject( OEM_FI
1750: 58 45 44 5f 46 4f 4e 54 20 29 20 29 3b 0d 0a 09  XED_FONT ) );...
1760: 3a 3a 53 65 6c 65 63 74 4f 62 6a 65 63 74 28 20  ::SelectObject( 
1770: 64 63 5f 2c 20 3a 3a 47 65 74 53 74 6f 63 6b 4f  dc_, ::GetStockO
1780: 62 6a 65 63 74 28 20 42 4c 41 43 4b 5f 50 45 4e  bject( BLACK_PEN
1790: 20 29 20 29 3b 0d 0a 09 3a 3a 53 65 6c 65 63 74   ) );...::Select
17a0: 4f 62 6a 65 63 74 28 20 64 63 5f 2c 20 3a 3a 47  Object( dc_, ::G
17b0: 65 74 53 74 6f 63 6b 4f 62 6a 65 63 74 28 20 57  etStockObject( W
17c0: 48 49 54 45 5f 42 52 55 53 48 20 29 20 29 3b 0d  HITE_BRUSH ) );.
17d0: 0a 09 3a 3a 44 65 6c 65 74 65 4f 62 6a 65 63 74  ..::DeleteObject
17e0: 28 20 66 6f 6e 74 5f 20 29 3b 0d 0a 09 3a 3a 44  ( font_ );...::D
17f0: 65 6c 65 74 65 4f 62 6a 65 63 74 28 20 70 65 6e  eleteObject( pen
1800: 5f 20 29 3b 0d 0a 09 3a 3a 44 65 6c 65 74 65 4f  _ );...::DeleteO
1810: 62 6a 65 63 74 28 20 62 72 75 73 68 5f 20 29 3b  bject( brush_ );
1820: 0d 0a 09 64 65 6c 65 74 65 20 5b 5d 20 77 69 64  ...delete [] wid
1830: 74 68 54 61 62 6c 65 5f 3b 0d 0a 7d 0d 0a 0d 0a  thTable_;..}....
1840: 69 6e 6c 69 6e 65 20 76 6f 69 64 20 50 61 69 6e  inline void Pain
1850: 74 65 72 3a 3a 43 68 61 72 4f 75 74 28 20 75 6e  ter::CharOut( un
1860: 69 63 6f 64 65 20 63 68 2c 20 69 6e 74 20 78 2c  icode ch, int x,
1870: 20 69 6e 74 20 79 20 29 0d 0a 7b 0d 0a 09 3a 3a   int y )..{...::
1880: 54 65 78 74 4f 75 74 57 28 20 64 63 5f 2c 20 78  TextOutW( dc_, x
1890: 2c 20 79 2c 20 26 63 68 2c 20 31 20 29 3b 0d 0a  , y, &ch, 1 );..
18a0: 7d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 76 6f 69 64  }....inline void
18b0: 20 50 61 69 6e 74 65 72 3a 3a 53 74 72 69 6e 67   Painter::String
18c0: 4f 75 74 0d 0a 09 28 20 63 6f 6e 73 74 20 75 6e  Out...( const un
18d0: 69 63 6f 64 65 2a 20 73 74 72 2c 20 69 6e 74 20  icode* str, int 
18e0: 6c 65 6e 2c 20 69 6e 74 20 78 2c 20 69 6e 74 20  len, int x, int 
18f0: 79 20 29 0d 0a 7b 0d 0a 09 3a 3a 54 65 78 74 4f  y )..{...::TextO
1900: 75 74 57 28 20 64 63 5f 2c 20 78 2c 20 79 2c 20  utW( dc_, x, y, 
1910: 73 74 72 2c 20 6c 65 6e 20 29 3b 0d 0a 7d 0d 0a  str, len );..}..
1920: 0d 0a 69 6e 6c 69 6e 65 20 76 6f 69 64 20 50 61  ..inline void Pa
1930: 69 6e 74 65 72 3a 3a 53 65 74 43 6f 6c 6f 72 28  inter::SetColor(
1940: 20 69 6e 74 20 69 20 29 0d 0a 7b 0d 0a 09 3a 3a   int i )..{...::
1950: 53 65 74 54 65 78 74 43 6f 6c 6f 72 28 20 64 63  SetTextColor( dc
1960: 5f 2c 20 63 6f 6c 6f 72 54 61 62 6c 65 5f 5b 69  _, colorTable_[i
1970: 5d 20 29 3b 0d 0a 7d 0d 0a 0d 0a 69 6e 6c 69 6e  ] );..}....inlin
1980: 65 20 76 6f 69 64 20 50 61 69 6e 74 65 72 3a 3a  e void Painter::
1990: 46 69 6c 6c 28 20 63 6f 6e 73 74 20 52 45 43 54  Fill( const RECT
19a0: 26 20 72 63 20 29 0d 0a 7b 0d 0a 09 3a 3a 46 69  & rc )..{...::Fi
19b0: 6c 6c 52 65 63 74 28 20 64 63 5f 2c 20 26 72 63  llRect( dc_, &rc
19c0: 2c 20 62 72 75 73 68 5f 20 29 3b 0d 0a 7d 0d 0a  , brush_ );..}..
19d0: 0d 0a 69 6e 6c 69 6e 65 20 76 6f 69 64 20 50 61  ..inline void Pa
19e0: 69 6e 74 65 72 3a 3a 49 6e 76 65 72 74 28 20 63  inter::Invert( c
19f0: 6f 6e 73 74 20 52 45 43 54 26 20 72 63 20 29 0d  onst RECT& rc ).
1a00: 0a 7b 0d 0a 09 3a 3a 49 6e 76 65 72 74 52 65 63  .{...::InvertRec
1a10: 74 28 20 64 63 5f 2c 20 26 72 63 20 29 3b 0d 0a  t( dc_, &rc );..
1a20: 7d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 76 6f 69 64  }....inline void
1a30: 20 50 61 69 6e 74 65 72 3a 3a 44 72 61 77 4c 69   Painter::DrawLi
1a40: 6e 65 28 20 69 6e 74 20 78 31 2c 20 69 6e 74 20  ne( int x1, int 
1a50: 79 31 2c 20 69 6e 74 20 78 32 2c 20 69 6e 74 20  y1, int x2, int 
1a60: 79 32 20 29 0d 0a 7b 0d 0a 09 3a 3a 4d 6f 76 65  y2 )..{...::Move
1a70: 54 6f 45 78 28 20 64 63 5f 2c 20 78 31 2c 20 79  ToEx( dc_, x1, y
1a80: 31 2c 20 4e 55 4c 4c 20 29 3b 0d 0a 09 3a 3a 4c  1, NULL );...::L
1a90: 69 6e 65 54 6f 28 20 64 63 5f 2c 20 78 32 2c 20  ineTo( dc_, x2, 
1aa0: 79 32 20 29 3b 0d 0a 7d 0d 0a 0d 0a 69 6e 6c 69  y2 );..}....inli
1ab0: 6e 65 20 76 6f 69 64 20 50 61 69 6e 74 65 72 3a  ne void Painter:
1ac0: 3a 53 65 74 43 6c 69 70 28 20 63 6f 6e 73 74 20  :SetClip( const 
1ad0: 52 45 43 54 26 20 72 63 20 29 0d 0a 7b 0d 0a 09  RECT& rc )..{...
1ae0: 3a 3a 49 6e 74 65 72 73 65 63 74 43 6c 69 70 52  ::IntersectClipR
1af0: 65 63 74 28 20 64 63 5f 2c 20 72 63 2e 6c 65 66  ect( dc_, rc.lef
1b00: 74 2c 20 72 63 2e 74 6f 70 2c 20 72 63 2e 72 69  t, rc.top, rc.ri
1b10: 67 68 74 2c 20 72 63 2e 62 6f 74 74 6f 6d 20 29  ght, rc.bottom )
1b20: 3b 0d 0a 7d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 76  ;..}....inline v
1b30: 6f 69 64 20 50 61 69 6e 74 65 72 3a 3a 43 6c 65  oid Painter::Cle
1b40: 61 72 43 6c 69 70 28 29 0d 0a 7b 0d 0a 09 3a 3a  arClip()..{...::
1b50: 53 65 6c 65 63 74 43 6c 69 70 52 67 6e 28 20 64  SelectClipRgn( d
1b60: 63 5f 2c 20 4e 55 4c 4c 20 29 3b 0d 0a 7d 0d 0a  c_, NULL );..}..
1b70: 0d 0a 76 6f 69 64 20 50 61 69 6e 74 65 72 3a 3a  ..void Painter::
1b80: 44 72 61 77 48 53 50 28 20 69 6e 74 20 78 2c 20  DrawHSP( int x, 
1b90: 69 6e 74 20 79 2c 20 69 6e 74 20 74 69 6d 65 73  int y, int times
1ba0: 20 29 0d 0a 7b 0d 0a 09 2f 2f 20 94 bc 8a 70 83   )..{...// ...p.
1bb0: 58 83 79 81 5b 83 58 8b 4c 8d 86 28 83 7a 83 60  X.y.[.X.L..(.z.`
1bc0: 83 4c 83 58 82 cc 90 63 8c 5e 29 82 f0 95 60 82  .L.X...c.^)...`.
1bd0: ad 0d 0a 09 63 6f 6e 73 74 20 69 6e 74 20 77 3d  ....const int w=
1be0: 57 63 28 4c 27 20 27 29 2c 20 68 3d 48 28 29 3b  Wc(L' '), h=H();
1bf0: 0d 0a 09 50 4f 49 4e 54 20 70 74 5b 34 5d 20 3d  ...POINT pt[4] =
1c00: 20 7b 0d 0a 09 09 7b 20 78 20 20 20 20 2c 20 79   {....{ x    , y
1c10: 2b 68 2d 34 20 7d 2c 0d 0a 09 09 7b 20 78 20 20  +h-4 },....{ x  
1c20: 20 20 2c 20 79 2b 68 2d 32 20 7d 2c 0d 0a 09 09    , y+h-2 },....
1c30: 7b 20 78 2b 77 2d 33 2c 20 79 2b 68 2d 32 20 7d  { x+w-3, y+h-2 }
1c40: 2c 0d 0a 09 09 7b 20 78 2b 77 2d 33 2c 20 79 2b  ,....{ x+w-3, y+
1c50: 68 2d 35 20 7d 0d 0a 09 7d 3b 0d 0a 09 77 68 69  h-5 }...};...whi
1c60: 6c 65 28 20 74 69 6d 65 73 2d 2d 20 29 0d 0a 09  le( times-- )...
1c70: 7b 0d 0a 09 09 69 66 28 20 30 20 3c 3d 20 70 74  {....if( 0 <= pt
1c80: 5b 33 5d 2e 78 20 29 0d 0a 09 09 09 3a 3a 50 6f  [3].x ).....::Po
1c90: 6c 79 6c 69 6e 65 28 20 64 63 5f 2c 20 70 74 2c  lyline( dc_, pt,
1ca0: 20 63 6f 75 6e 74 6f 66 28 70 74 29 20 29 3b 0d   countof(pt) );.
1cb0: 0a 09 09 70 74 5b 30 5d 2e 78 20 2b 3d 20 77 3b  ...pt[0].x += w;
1cc0: 0d 0a 09 09 70 74 5b 31 5d 2e 78 20 2b 3d 20 77  ....pt[1].x += w
1cd0: 3b 0d 0a 09 09 70 74 5b 32 5d 2e 78 20 2b 3d 20  ;....pt[2].x += 
1ce0: 77 3b 0d 0a 09 09 70 74 5b 33 5d 2e 78 20 2b 3d  w;....pt[3].x +=
1cf0: 20 77 3b 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a 76 6f   w;...}..}....vo
1d00: 69 64 20 50 61 69 6e 74 65 72 3a 3a 44 72 61 77  id Painter::Draw
1d10: 5a 53 50 28 20 69 6e 74 20 78 2c 20 69 6e 74 20  ZSP( int x, int 
1d20: 79 2c 20 69 6e 74 20 74 69 6d 65 73 20 29 0d 0a  y, int times )..
1d30: 7b 0d 0a 09 2f 2f 20 91 53 8a 70 83 58 83 79 81  {...// .S.p.X.y.
1d40: 5b 83 58 8b 4c 8d 86 28 95 bd 82 bd 82 a2 8e 6c  [.X.L..(.......l
1d50: 8a 70 29 82 f0 95 60 82 ad 0d 0a 09 63 6f 6e 73  .p)...`.....cons
1d60: 74 20 69 6e 74 20 77 3d 57 63 28 30 78 33 30 30  t int w=Wc(0x300
1d70: 30 2f 2a 4c 27 81 40 27 2a 2f 29 2c 20 68 3d 48  0/*L'.@'*/), h=H
1d80: 28 29 3b 0d 0a 09 50 4f 49 4e 54 20 70 74 5b 34  ();...POINT pt[4
1d90: 5d 20 3d 20 7b 0d 0a 09 09 7b 20 78 20 20 20 20  ] = {....{ x    
1da0: 2c 20 79 2b 68 2d 34 20 7d 2c 0d 0a 09 09 7b 20  , y+h-4 },....{ 
1db0: 78 20 20 20 20 2c 20 79 2b 68 2d 32 20 7d 2c 0d  x    , y+h-2 },.
1dc0: 0a 09 09 7b 20 78 2b 77 2d 33 2c 20 79 2b 68 2d  ...{ x+w-3, y+h-
1dd0: 32 20 7d 2c 0d 0a 09 09 7b 20 78 2b 77 2d 33 2c  2 },....{ x+w-3,
1de0: 20 79 2b 68 2d 34 20 7d 0d 0a 09 7d 3b 0d 0a 09   y+h-4 }...};...
1df0: 77 68 69 6c 65 28 20 74 69 6d 65 73 2d 2d 20 29  while( times-- )
1e00: 0d 0a 09 7b 0d 0a 09 09 69 66 28 20 30 20 3c 3d  ...{....if( 0 <=
1e10: 20 70 74 5b 33 5d 2e 78 20 29 0d 0a 09 09 09 3a   pt[3].x ).....:
1e20: 3a 50 6f 6c 79 67 6f 6e 28 20 64 63 5f 2c 20 70  :Polygon( dc_, p
1e30: 74 2c 20 63 6f 75 6e 74 6f 66 28 70 74 29 20 29  t, countof(pt) )
1e40: 3b 0d 0a 09 09 70 74 5b 30 5d 2e 78 20 2b 3d 20  ;....pt[0].x += 
1e50: 77 3b 0d 0a 09 09 70 74 5b 31 5d 2e 78 20 2b 3d  w;....pt[1].x +=
1e60: 20 77 3b 0d 0a 09 09 70 74 5b 32 5d 2e 78 20 2b   w;....pt[2].x +
1e70: 3d 20 77 3b 0d 0a 09 09 70 74 5b 33 5d 2e 78 20  = w;....pt[3].x 
1e80: 2b 3d 20 77 3b 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a  += w;...}..}....
1e90: 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ....//----------
1ea0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1eb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d  ---------------.
1ee0: 0a 2f 2f 20 8d c4 95 60 89 e6 82 b5 82 bd 82 a2  .// ...`........
1ef0: 94 cd 88 cd 82 f0 20 49 6e 76 61 6c 69 64 61 74  ...... Invalidat
1f00: 65 20 82 b7 82 e9 81 42 0d 0a 2f 2f 2d 2d 2d 2d  e .....B..//----
1f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
1f50: 2d 2d 2d 2d 2d 0d 0a 0d 0a 76 6f 69 64 20 56 69  -----....void Vi
1f60: 65 77 49 6d 70 6c 3a 3a 52 65 44 72 61 77 28 20  ewImpl::ReDraw( 
1f70: 52 65 44 72 61 77 54 79 70 65 20 72 2c 20 63 6f  ReDrawType r, co
1f80: 6e 73 74 20 44 50 6f 73 2a 20 73 20 29 0d 0a 7b  nst DPos* s )..{
1f90: 0d 0a 09 2f 2f 20 82 dc 82 b8 83 58 83 4e 83 8d  ...// .....X.N..
1fa0: 81 5b 83 8b 83 6f 81 5b 82 f0 8d 58 90 56 0d 0a  .[...o.[...X.V..
1fb0: 09 55 70 64 61 74 65 53 63 72 6f 6c 6c 42 61 72  .UpdateScrollBar
1fc0: 28 29 3b 0d 0a 0d 0a 09 73 77 69 74 63 68 28 20  ();.....switch( 
1fd0: 72 20 29 0d 0a 09 7b 0d 0a 09 63 61 73 65 20 41  r )...{...case A
1fe0: 4c 4c 3a 20 2f 2f 20 91 53 89 e6 96 ca 0d 0a 0d  LL: // .S.......
1ff0: 0a 09 09 3a 3a 49 6e 76 61 6c 69 64 61 74 65 52  ...::InvalidateR
2000: 65 63 74 28 20 68 77 6e 64 5f 2c 20 4e 55 4c 4c  ect( hwnd_, NULL
2010: 2c 20 46 41 4c 53 45 20 29 3b 0d 0a 09 09 62 72  , FALSE );....br
2020: 65 61 6b 3b 0d 0a 0d 0a 09 63 61 73 65 20 4c 4e  eak;.....case LN
2030: 41 52 45 41 3a 20 2f 2f 20 8d 73 94 d4 8d 86 95  AREA: // .s.....
2040: 5c 8e a6 88 e6 82 cc 82 dd 0d 0a 0d 0a 09 09 69  \..............i
2050: 66 28 20 6c 6e 61 28 29 20 3e 20 30 20 29 0d 0a  f( lna() > 0 )..
2060: 09 09 7b 0d 0a 09 09 09 52 45 43 54 20 72 63 20  ..{.....RECT rc 
2070: 3d 20 7b 20 30 2c 20 30 2c 20 6c 6e 61 28 29 2c  = { 0, 0, lna(),
2080: 20 62 6f 74 74 6f 6d 28 29 20 7d 3b 0d 0a 09 09   bottom() };....
2090: 09 3a 3a 49 6e 76 61 6c 69 64 61 74 65 52 65 63  .::InvalidateRec
20a0: 74 28 20 68 77 6e 64 5f 2c 20 26 72 63 2c 20 46  t( hwnd_, &rc, F
20b0: 41 4c 53 45 20 29 3b 0d 0a 09 09 7d 0d 0a 09 09  ALSE );....}....
20c0: 62 72 65 61 6b 3b 0d 0a 0d 0a 09 63 61 73 65 20  break;.....case 
20d0: 4c 49 4e 45 3a 20 2f 2f 20 8e 77 92 e8 82 b5 82  LINE: // .w.....
20e0: bd 8d 73 82 cc 8c e3 94 bc 0d 0a 09 63 61 73 65  ..s.........case
20f0: 20 41 46 54 45 52 3a 20 2f 2f 20 8e 77 92 e8 82   AFTER: // .w...
2100: b5 82 bd 8d 73 88 c8 89 ba 91 53 95 94 0d 0a 0d  ....s.....S.....
2110: 0a 09 09 7b 0d 0a 09 09 09 44 50 6f 73 20 73 74  ...{.....DPos st
2120: 20 3d 20 28 20 73 2d 3e 61 64 3d 3d 30 20 3f 20   = ( s->ad==0 ? 
2130: 2a 73 20 3a 20 64 6f 63 5f 2e 6c 65 66 74 4f 66  *s : doc_.leftOf
2140: 28 2a 73 2c 74 72 75 65 29 20 29 3b 0d 0a 09 09  (*s,true) );....
2150: 09 49 6e 76 61 6c 69 64 61 74 65 56 69 65 77 28  .InvalidateView(
2160: 20 73 74 2c 20 72 3d 3d 41 46 54 45 52 20 29 3b   st, r==AFTER );
2170: 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a  ....}...}..}....
2180: 0d 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ....//----------
2190: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
21a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
21b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
21c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d  ---------------.
21d0: 0a 2f 2f 20 57 4d 5f 50 41 49 4e 54 83 6e 83 93  .// WM_PAINT.n..
21e0: 83 68 83 89 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d  .h....//--------
21f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2230: 2d 0d 0a 0d 0a 76 6f 69 64 20 56 69 65 77 49 6d  -....void ViewIm
2240: 70 6c 3a 3a 6f 6e 5f 70 61 69 6e 74 28 20 63 6f  pl::on_paint( co
2250: 6e 73 74 20 50 41 49 4e 54 53 54 52 55 43 54 26  nst PAINTSTRUCT&
2260: 20 70 73 20 29 0d 0a 7b 0d 0a 09 2f 2f 20 95 60   ps )..{...// .`
2270: 89 e6 94 cd 88 cd 82 cc 8f ee 95 f1 82 f0 8f da  ................
2280: 82 b5 82 ad 8e e6 93 be 0d 0a 09 50 61 69 6e 74  ...........Paint
2290: 65 72 26 20 70 20 3d 20 63 76 73 5f 2e 67 65 74  er& p = cvs_.get
22a0: 50 61 69 6e 74 65 72 28 29 3b 0d 0a 09 56 44 72  Painter();...VDr
22b0: 61 77 49 6e 66 6f 20 76 28 20 70 73 2e 72 63 50  awInfo v( ps.rcP
22c0: 61 69 6e 74 20 29 3b 0d 0a 09 47 65 74 44 72 61  aint );...GetDra
22d0: 77 50 6f 73 49 6e 66 6f 28 20 76 20 29 3b 0d 0a  wPosInfo( v );..
22e0: 0d 0a 09 69 66 28 20 70 73 2e 72 63 50 61 69 6e  ...if( ps.rcPain
22f0: 74 2e 72 69 67 68 74 20 3c 3d 20 6c 6e 61 28 29  t.right <= lna()
2300: 20 20 29 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 63 61    )...{....// ca
2310: 73 65 20 41 3a 20 8d 73 94 d4 8d 86 95 5c 8e a6  se A: .s.....\..
2320: 88 e6 82 cc 82 dd 8d 58 90 56 0d 0a 09 09 44 72  .......X.V....Dr
2330: 61 77 4c 4e 41 28 20 76 2c 20 70 20 29 3b 0d 0a  awLNA( v, p );..
2340: 09 7d 0d 0a 09 65 6c 73 65 20 69 66 28 20 6c 6e  .}...else if( ln
2350: 61 28 29 20 3c 3d 20 70 73 2e 72 63 50 61 69 6e  a() <= ps.rcPain
2360: 74 2e 6c 65 66 74 20 29 0d 0a 09 7b 0d 0a 09 09  t.left )...{....
2370: 2f 2f 20 63 61 73 65 20 42 3a 20 83 65 83 4c 83  // case B: .e.L.
2380: 58 83 67 95 5c 8e a6 88 e6 82 cc 82 dd 8d 58 90  X.g.\.........X.
2390: 56 0d 0a 09 09 44 72 61 77 54 58 54 28 20 76 2c  V....DrawTXT( v,
23a0: 20 70 20 29 3b 0d 0a 09 7d 0d 0a 09 65 6c 73 65   p );...}...else
23b0: 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 63 61 73 65 20  ...{....// case 
23c0: 43 3a 20 97 bc 95 fb 8d 58 90 56 0d 0a 09 09 44  C: .....X.V....D
23d0: 72 61 77 4c 4e 41 28 20 76 2c 20 70 20 29 3b 0d  rawLNA( v, p );.
23e0: 0a 09 09 70 2e 53 65 74 43 6c 69 70 28 20 63 76  ...p.SetClip( cv
23f0: 73 5f 2e 7a 6f 6e 65 28 29 20 29 3b 0d 0a 09 09  s_.zone() );....
2400: 44 72 61 77 54 58 54 28 20 76 2c 20 70 20 29 3b  DrawTXT( v, p );
2410: 0d 0a 09 09 70 2e 43 6c 65 61 72 43 6c 69 70 28  ....p.ClearClip(
2420: 29 3b 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a 0d 0a 0d  );...}..}.......
2430: 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  .//-------------
2440: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f  ------------..//
2480: 20 8d 73 94 d4 8d 86 83 5d 81 5b 83 93 95 60 89   .s.....].[...`.
2490: e6 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ...//-----------
24a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
24b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
24c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
24d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a  --------------..
24e0: 0d 0a 76 6f 69 64 20 56 69 65 77 49 6d 70 6c 3a  ..void ViewImpl:
24f0: 3a 44 72 61 77 4c 4e 41 28 20 63 6f 6e 73 74 20  :DrawLNA( const 
2500: 56 44 72 61 77 49 6e 66 6f 26 20 76 2c 20 50 61  VDrawInfo& v, Pa
2510: 69 6e 74 65 72 26 20 70 20 29 0d 0a 7b 0d 0a 09  inter& p )..{...
2520: 2f 2f 0d 0a 09 2f 2f 20 95 b6 8e 9a 97 f1 82 cc  //...// ........
2530: 82 dc 82 dc 91 ab 82 b5 8e 5a 82 f0 8d 73 82 a4  .........Z...s..
2540: 83 8b 81 5b 83 60 83 93 0d 0a 09 2f 2f 0d 0a 09  ...[.`.....//...
2550: 73 74 72 75 63 74 20 73 74 72 69 6e 74 20 7b 0d  struct strint {.
2560: 0a 09 09 73 74 72 69 6e 74 28 20 75 6c 6f 6e 67  ...strint( ulong
2570: 20 6e 75 6d 20 29 20 7b 0d 0a 09 09 09 69 6e 74   num ) {.....int
2580: 20 69 3d 31 31 3b 0d 0a 09 09 09 77 68 69 6c 65   i=11;.....while
2590: 28 20 6e 75 6d 20 29 20 64 69 67 69 74 5b 2d 2d  ( num ) digit[--
25a0: 69 5d 20 3d 20 28 75 6e 69 63 6f 64 65 29 28 4c  i] = (unicode)(L
25b0: 27 30 27 2b 28 6e 75 6d 25 31 30 29 29 2c 20 6e  '0'+(num%10)), n
25c0: 75 6d 2f 3d 31 30 3b 0d 0a 09 09 09 77 68 69 6c  um/=10;.....whil
25d0: 65 28 20 20 69 20 20 29 20 64 69 67 69 74 5b 2d  e(  i  ) digit[-
25e0: 2d 69 5d 20 3d 20 4c 27 20 27 3b 0d 0a 09 09 7d  -i] = L' ';....}
25f0: 0d 0a 09 09 76 6f 69 64 20 6f 70 65 72 61 74 6f  ....void operato
2600: 72 2b 2b 28 29 20 7b 0d 0a 09 09 09 69 6e 74 20  r++() {.....int 
2610: 69 3d 31 30 3b 0d 0a 09 09 09 64 6f 0d 0a 09 09  i=10;.....do....
2620: 09 09 69 66 28 20 64 69 67 69 74 5b 69 5d 20 3d  ..if( digit[i] =
2630: 3d 20 4c 27 39 27 20 29 0d 0a 09 09 09 09 09 64  = L'9' ).......d
2640: 69 67 69 74 5b 69 5d 20 3d 20 4c 27 30 27 3b 0d  igit[i] = L'0';.
2650: 0a 09 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 09  .....else.......
2660: 7b 20 2b 2b 64 69 67 69 74 5b 69 5d 3b 20 72 65  { ++digit[i]; re
2670: 74 75 72 6e 3b 20 7d 0d 0a 09 09 09 77 68 69 6c  turn; }.....whil
2680: 65 28 20 64 69 67 69 74 5b 2d 2d 69 5d 20 21 3d  e( digit[--i] !=
2690: 20 4c 27 20 27 20 29 3b 0d 0a 09 09 09 64 69 67   L' ' );.....dig
26a0: 69 74 5b 69 5d 20 3d 20 4c 27 31 27 3b 0d 0a 09  it[i] = L'1';...
26b0: 09 7d 0d 0a 09 09 76 6f 69 64 20 4f 75 74 70 75  .}....void Outpu
26c0: 74 28 20 50 61 69 6e 74 65 72 26 20 66 2c 20 69  t( Painter& f, i
26d0: 6e 74 20 78 2c 20 69 6e 74 20 79 20 29 20 7b 0d  nt x, int y ) {.
26e0: 0a 09 09 09 66 6f 72 28 20 75 6e 69 63 6f 64 65  ....for( unicode
26f0: 2a 20 70 3d 64 69 67 69 74 2b 31 30 3b 20 2a 70  * p=digit+10; *p
2700: 21 3d 4c 27 20 27 3b 20 2d 2d 70 2c 78 2d 3d 66  !=L' '; --p,x-=f
2710: 2e 46 28 29 20 29 0d 0a 09 09 09 09 66 2e 43 68  .F() )......f.Ch
2720: 61 72 4f 75 74 28 20 2a 70 2c 20 78 2c 20 79 20  arOut( *p, x, y 
2730: 29 3b 0d 0a 09 09 7d 0d 0a 09 09 75 6e 69 63 6f  );....}....unico
2740: 64 65 20 64 69 67 69 74 5b 31 31 5d 3b 0d 0a 09  de digit[11];...
2750: 7d 3b 0d 0a 0d 0a 09 2f 2f 20 94 77 96 ca 8f c1  };.....// .w....
2760: 8b 8e 0d 0a 09 52 45 43 54 20 72 63 20 3d 20 7b  .....RECT rc = {
2770: 20 76 2e 72 63 2e 6c 65 66 74 2c 20 76 2e 72 63   v.rc.left, v.rc
2780: 2e 74 6f 70 2c 20 6c 6e 61 28 29 2c 20 76 2e 72  .top, lna(), v.r
2790: 63 2e 62 6f 74 74 6f 6d 20 7d 3b 0d 0a 09 70 2e  c.bottom };...p.
27a0: 46 69 6c 6c 28 20 72 63 20 29 3b 0d 0a 0d 0a 09  Fill( rc );.....
27b0: 69 66 28 20 76 2e 72 63 2e 74 6f 70 20 3c 20 76  if( v.rc.top < v
27c0: 2e 59 4d 41 58 20 29 0d 0a 09 7b 0d 0a 09 09 2f  .YMAX )...{..../
27d0: 2f 20 8b ab 8a 45 90 fc 95 5c 8e a6 0d 0a 09 09  / ...E...\......
27e0: 69 6e 74 20 6c 69 6e 65 20 3d 20 6c 6e 61 28 29  int line = lna()
27f0: 20 2d 20 70 2e 46 28 29 2f 32 3b 0d 0a 09 09 70   - p.F()/2;....p
2800: 2e 44 72 61 77 4c 69 6e 65 28 20 6c 69 6e 65 2c  .DrawLine( line,
2810: 20 76 2e 72 63 2e 74 6f 70 2c 20 6c 69 6e 65 2c   v.rc.top, line,
2820: 20 76 2e 59 4d 41 58 20 29 3b 0d 0a 09 09 70 2e   v.YMAX );....p.
2830: 53 65 74 43 6f 6c 6f 72 28 20 4c 4e 20 29 3b 0d  SetColor( LN );.
2840: 0a 0d 0a 09 09 2f 2f 20 8d 73 94 d4 8d 86 95 5c  .....// .s.....\
2850: 8e a6 0d 0a 09 09 73 74 72 69 6e 74 20 6e 20 3d  ......strint n =
2860: 20 76 2e 54 4c 4d 49 4e 2b 31 3b 0d 0a 09 09 69   v.TLMIN+1;....i
2870: 6e 74 20 20 20 20 79 20 3d 20 76 2e 59 4d 49 4e  nt    y = v.YMIN
2880: 3b 0d 0a 09 09 69 6e 74 20 65 64 67 65 20 3d 20  ;....int edge = 
2890: 6c 6e 61 28 29 20 2d 20 70 2e 46 28 29 2a 32 3b  lna() - p.F()*2;
28a0: 0d 0a 09 09 66 6f 72 28 20 75 6c 6f 6e 67 20 69  ....for( ulong i
28b0: 3d 76 2e 54 4c 4d 49 4e 3b 20 79 3c 76 2e 59 4d  =v.TLMIN; y<v.YM
28c0: 41 58 3b 20 2b 2b 69 2c 2b 2b 6e 20 29 0d 0a 09  AX; ++i,++n )...
28d0: 09 7b 0d 0a 09 09 09 6e 2e 4f 75 74 70 75 74 28  .{.....n.Output(
28e0: 20 70 2c 20 65 64 67 65 2c 20 79 20 29 3b 0d 0a   p, edge, y );..
28f0: 09 09 09 79 20 2b 3d 20 70 2e 48 28 29 20 2a 20  ...y += p.H() * 
2900: 72 6c 6e 28 69 29 3b 0d 0a 09 09 7d 0d 0a 09 7d  rln(i);....}...}
2910: 0d 0a 7d 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d  ..}........//---
2920: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2930: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2940: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2950: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2960: 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 83 65 83 4c 83  ------..// .e.L.
2970: 58 83 67 95 60 89 e6 0d 0a 2f 2f 2d 2d 2d 2d 2d  X.g.`....//-----
2980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
2990: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
29a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
29b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
29c0: 2d 2d 2d 2d 0d 0a 0d 0a 69 6e 6c 69 6e 65 20 76  ----....inline v
29d0: 6f 69 64 20 56 69 65 77 49 6d 70 6c 3a 3a 49 6e  oid ViewImpl::In
29e0: 76 28 20 69 6e 74 20 79 2c 20 69 6e 74 20 78 62  v( int y, int xb
29f0: 2c 20 69 6e 74 20 78 65 2c 20 50 61 69 6e 74 65  , int xe, Painte
2a00: 72 26 20 70 20 29 0d 0a 7b 0d 0a 09 52 45 43 54  r& p )..{...RECT
2a10: 20 72 63 20 3d 20 7b 0d 0a 09 09 4d 61 78 28 20   rc = {....Max( 
2a20: 6c 65 66 74 28 29 2c 20 20 78 62 20 29 2c 20 79  left(),  xb ), y
2a30: 2c 0d 0a 09 09 4d 69 6e 28 20 72 69 67 68 74 28  ,....Min( right(
2a40: 29 2c 20 78 65 20 29 2c 20 79 2b 70 2e 48 28 29  ), xe ), y+p.H()
2a50: 2d 31 0d 0a 09 7d 3b 0d 0a 09 70 2e 49 6e 76 65  -1...};...p.Inve
2a60: 72 74 28 20 72 63 20 29 3b 0d 0a 7d 0d 0a 0d 0a  rt( rc );..}....
2a70: 76 6f 69 64 20 56 69 65 77 49 6d 70 6c 3a 3a 44  void ViewImpl::D
2a80: 72 61 77 54 58 54 28 20 63 6f 6e 73 74 20 56 44  rawTXT( const VD
2a90: 72 61 77 49 6e 66 6f 20 76 2c 20 50 61 69 6e 74  rawInfo v, Paint
2aa0: 65 72 26 20 70 20 29 0d 0a 7b 0d 0a 09 2f 2f 20  er& p )..{...// 
2ab0: 92 e8 90 94 82 50 0d 0a 2f 2f 09 63 6f 6e 73 74  .....P..//.const
2ac0: 20 69 6e 74 20 20 20 54 41 42 20 3d 20 70 2e 54   int   TAB = p.T
2ad0: 28 29 3b 0d 0a 09 63 6f 6e 73 74 20 69 6e 74 20  ();...const int 
2ae0: 20 20 20 20 48 20 3d 20 70 2e 48 28 29 3b 0d 0a      H = p.H();..
2af0: 09 63 6f 6e 73 74 20 75 6c 6f 6e 67 20 54 4c 4d  .const ulong TLM
2b00: 20 3d 20 64 6f 63 5f 2e 74 6c 6e 28 29 2d 31 3b   = doc_.tln()-1;
2b10: 0d 0a 0d 0a 09 2f 2f 20 8d ec 8b c6 97 70 95 cf  .....// .....p..
2b20: 90 94 82 50 0d 0a 09 52 45 43 54 20 20 61 20 3d  ...P...RECT  a =
2b30: 20 7b 20 30 2c 20 76 2e 59 4d 49 4e 2c 20 30 2c   { 0, v.YMIN, 0,
2b40: 20 76 2e 59 4d 49 4e 2b 70 2e 48 28 29 20 7d 3b   v.YMIN+p.H() };
2b50: 0d 0a 09 69 6e 74 20 63 6c 72 20 3d 20 2d 31 3b  ...int clr = -1;
2b60: 0d 0a 09 72 65 67 69 73 74 65 72 20 69 6e 74 20  ...register int 
2b70: 20 20 78 2c 20 78 32 3b 0d 0a 09 72 65 67 69 73    x, x2;...regis
2b80: 74 65 72 20 75 6c 6f 6e 67 20 69 2c 20 69 32 3b  ter ulong i, i2;
2b90: 0d 0a 0d 0a 09 2f 2f 20 98 5f 97 9d 8d 73 92 50  .....// ._...s.P
2ba0: 88 ca 82 cc 4c 6f 6f 70 0d 0a 09 66 6f 72 28 20  ....Loop...for( 
2bb0: 75 6c 6f 6e 67 20 74 6c 3d 76 2e 54 4c 4d 49 4e  ulong tl=v.TLMIN
2bc0: 3b 20 61 2e 74 6f 70 3c 76 2e 59 4d 41 58 3b 20  ; a.top<v.YMAX; 
2bd0: 2b 2b 74 6c 20 29 0d 0a 09 7b 0d 0a 09 09 2f 2f  ++tl )...{....//
2be0: 20 92 e8 90 94 82 51 0d 0a 09 09 63 6f 6e 73 74   .....Q....const
2bf0: 20 75 6e 69 63 6f 64 65 2a 20 73 74 72 20 3d 20   unicode* str = 
2c00: 64 6f 63 5f 2e 74 6c 28 74 6c 29 3b 0d 0a 09 09  doc_.tl(tl);....
2c10: 63 6f 6e 73 74 20 75 63 68 61 72 2a 20 20 20 66  const uchar*   f
2c20: 6c 67 20 3d 20 64 6f 63 5f 2e 70 6c 28 74 6c 29  lg = doc_.pl(tl)
2c30: 3b 0d 0a 09 09 63 6f 6e 73 74 20 69 6e 74 20 72  ;....const int r
2c40: 59 4d 41 58 20 3d 20 4d 69 6e 3c 69 6e 74 3e 28  YMAX = Min<int>(
2c50: 20 76 2e 59 4d 41 58 2c 20 61 2e 74 6f 70 2b 72   v.YMAX, a.top+r
2c60: 6c 6e 28 74 6c 29 2a 48 20 29 3b 0d 0a 0d 0a 09  ln(tl)*H );.....
2c70: 09 2f 2f 20 8d ec 8b c6 97 70 95 cf 90 94 82 51  .// .....p.....Q
2c80: 0d 0a 09 09 75 6c 6f 6e 67 20 73 74 74 3d 30 2c  ....ulong stt=0,
2c90: 20 65 6e 64 2c 20 74 2c 20 6e 3b 0d 0a 0d 0a 09   end, t, n;.....
2ca0: 09 2f 2f 20 95 5c 8e a6 8d 73 92 50 88 ca 82 cc  .// .\...s.P....
2cb0: 4c 6f 6f 70 0d 0a 09 09 66 6f 72 28 20 75 6c 6f  Loop....for( ulo
2cc0: 6e 67 20 72 6c 3d 30 3b 20 61 2e 74 6f 70 3c 72  ng rl=0; a.top<r
2cd0: 59 4d 41 58 3b 20 2b 2b 72 6c 2c 61 2e 74 6f 70  YMAX; ++rl,a.top
2ce0: 2b 3d 48 2c 61 2e 62 6f 74 74 6f 6d 2b 3d 48 2c  +=H,a.bottom+=H,
2cf0: 73 74 74 3d 65 6e 64 20 29 0d 0a 09 09 7b 0d 0a  stt=end )....{..
2d00: 09 09 09 2f 2f 20 8d ec 8b c6 97 70 95 cf 90 94  ...// .....p....
2d10: 82 52 0d 0a 09 09 09 65 6e 64 20 3d 20 72 6c 65  .R.....end = rle
2d20: 6e 64 28 74 6c 2c 72 6c 29 3b 0d 0a 09 09 09 69  nd(tl,rl);.....i
2d30: 66 28 20 61 2e 62 6f 74 74 6f 6d 3c 3d 76 2e 59  f( a.bottom<=v.Y
2d40: 4d 49 4e 20 29 0d 0a 09 09 09 09 63 6f 6e 74 69  MIN )......conti
2d50: 6e 75 65 3b 0d 0a 0d 0a 09 09 09 2f 2f 20 83 65  nue;.......// .e
2d60: 83 4c 83 58 83 67 83 66 81 5b 83 5e 95 60 89 e6  .L.X.g.f.[.^.`..
2d70: 0d 0a 09 09 09 66 6f 72 28 20 78 32 3d 78 3d 30  .....for( x2=x=0
2d80: 2c 69 32 3d 69 3d 73 74 74 3b 20 78 3c 3d 76 2e  ,i2=i=stt; x<=v.
2d90: 58 4d 41 58 20 26 26 20 69 3c 65 6e 64 3b 20 78  XMAX && i<end; x
2da0: 3d 78 32 2c 69 3d 69 32 20 29 0d 0a 09 09 09 7b  =x2,i=i2 ).....{
2db0: 0d 0a 09 09 09 09 2f 2f 20 6e 20 3a 3d 20 8e 9f  ......// n := ..
2dc0: 82 cc 54 6f 6b 65 6e 82 cc 93 aa 0d 0a 09 09 09  ..Token.........
2dd0: 09 74 20 3d 20 28 66 6c 67 5b 69 5d 3e 3e 35 29  .t = (flg[i]>>5)
2de0: 3b 0d 0a 09 09 09 09 6e 20 3d 20 69 20 2b 20 74  ;......n = i + t
2df0: 3b 0d 0a 09 09 09 09 69 66 28 20 6e 20 3e 3d 20  ;......if( n >= 
2e00: 65 6e 64 20 29 0d 0a 09 09 09 09 09 6e 20 3d 20  end ).......n = 
2e10: 65 6e 64 3b 0d 0a 09 09 09 09 65 6c 73 65 20 69  end;......else i
2e20: 66 28 20 74 3d 3d 37 20 7c 7c 20 74 3d 3d 30 20  f( t==7 || t==0 
2e30: 29 0d 0a 09 09 09 09 09 77 68 69 6c 65 28 20 6e  ).......while( n
2e40: 3c 65 6e 64 20 26 26 20 28 66 6c 67 5b 6e 5d 3e  <end && (flg[n]>
2e50: 3e 35 29 3d 3d 30 20 29 0d 0a 09 09 09 09 09 09  >5)==0 )........
2e60: 2b 2b 6e 3b 0d 0a 0d 0a 09 09 09 09 2f 2f 20 78  ++n;........// x
2e70: 32 2c 20 69 32 20 3a 3d 20 82 b1 82 cc 54 6f 6b  2, i2 := ....Tok
2e80: 65 6e 82 cc 89 45 92 5b 0d 0a 09 09 09 09 69 32  en...E.[......i2
2e90: 20 2b 2b 3b 0d 0a 09 09 09 09 78 32 20 3d 20 28   ++;......x2 = (
2ea0: 73 74 72 5b 69 5d 3d 3d 4c 27 5c 74 27 20 3f 20  str[i]==L'\t' ? 
2eb0: 70 2e 6e 65 78 74 54 61 62 28 78 32 29 20 3a 20  p.nextTab(x2) : 
2ec0: 78 32 2b 70 2e 57 28 26 73 74 72 5b 69 5d 29 29  x2+p.W(&str[i]))
2ed0: 3b 0d 0a 09 09 09 2f 2f 09 69 66 28 20 78 32 20  ;.....//.if( x2 
2ee0: 3c 3d 20 76 2e 58 4d 49 4e 20 29 0d 0a 09 09 09  <= v.XMIN ).....
2ef0: 2f 2f 09 09 78 3d 78 32 2c 20 69 3d 69 32 3b 0d  //..x=x2, i=i2;.
2f00: 0a 09 09 09 09 77 68 69 6c 65 28 20 69 32 3c 6e  .....while( i2<n
2f10: 20 26 26 20 78 32 3c 3d 76 2e 58 4d 41 58 20 29   && x2<=v.XMAX )
2f20: 0d 0a 09 09 09 09 09 78 32 20 2b 3d 20 70 2e 57  .......x2 += p.W
2f30: 28 20 26 73 74 72 5b 69 32 2b 2b 5d 20 29 3b 0d  ( &str[i2++] );.
2f40: 0a 0d 0a 09 09 09 09 2f 2f 20 8d c4 95 60 89 e6  .......// ...`..
2f50: 82 b7 82 d7 82 ab 94 cd 88 cd 82 c6 8f 64 82 c8  .............d..
2f60: 82 c1 82 c4 82 a2 82 c8 82 a2 0d 0a 09 09 09 09  ................
2f70: 69 66 28 20 78 32 3c 3d 76 2e 58 4d 49 4e 20 29  if( x2<=v.XMIN )
2f80: 0d 0a 09 09 09 09 09 63 6f 6e 74 69 6e 75 65 3b  .......continue;
2f90: 0d 0a 0d 0a 09 09 09 09 2f 2f 20 78 2c 20 69 20  ........// x, i 
2fa0: 3a 3d 20 82 b1 82 cc 83 67 81 5b 83 4e 83 93 82  := .....g.[.N...
2fb0: cc 8d b6 92 5b 0d 0a 09 09 09 09 69 66 28 20 78  ....[......if( x
2fc0: 3c 76 2e 58 4d 49 4e 20 29 0d 0a 09 09 09 09 7b  <v.XMIN )......{
2fd0: 0d 0a 09 09 09 09 09 2f 2f 20 74 61 62 82 cc 95  .......// tab...
2fe0: aa 82 aa 96 df 82 e8 82 b7 82 ac 81 48 0d 0a 09  ............H...
2ff0: 09 09 09 09 78 20 3d 20 78 32 2c 20 69 20 3d 20  ....x = x2, i = 
3000: 69 32 3b 0d 0a 09 09 09 09 09 77 68 69 6c 65 28  i2;.......while(
3010: 20 76 2e 58 4d 49 4e 3c 78 20 29 0d 0a 09 09 09   v.XMIN<x ).....
3020: 09 09 09 78 20 2d 3d 20 70 2e 57 28 20 26 73 74  ...x -= p.W( &st
3030: 72 5b 2d 2d 69 5d 20 29 3b 0d 0a 09 09 09 09 7d  r[--i] );......}
3040: 0d 0a 0d 0a 09 09 09 09 2f 2f 20 94 77 8c 69 93  ........// .w.i.
3050: 68 82 e8 82 c2 82 d4 82 b5 0d 0a 09 09 09 09 61  h..............a
3060: 2e 6c 65 66 74 20 20 3d 20 78 20 2b 20 76 2e 58  .left  = x + v.X
3070: 42 41 53 45 3b 0d 0a 09 09 09 09 61 2e 72 69 67  BASE;......a.rig
3080: 68 74 20 3d 20 78 32 20 2b 20 76 2e 58 42 41 53  ht = x2 + v.XBAS
3090: 45 3b 0d 0a 09 09 09 09 70 2e 46 69 6c 6c 28 20  E;......p.Fill( 
30a0: 61 20 29 3b 0d 0a 0d 0a 09 09 09 09 2f 2f 20 95  a );........// .
30b0: 60 89 e6 0d 0a 09 09 09 09 73 77 69 74 63 68 28  `........switch(
30c0: 20 73 74 72 5b 69 5d 20 29 0d 0a 09 09 09 09 7b   str[i] )......{
30d0: 0d 0a 09 09 09 09 63 61 73 65 20 4c 27 5c 74 27  ......case L'\t'
30e0: 3a 0d 0a 09 09 09 09 09 69 66 28 20 70 2e 73 63  :.......if( p.sc
30f0: 28 73 63 54 41 42 29 20 29 0d 0a 09 09 09 09 09  (scTAB) ).......
3100: 7b 0d 0a 09 09 09 09 09 09 70 2e 53 65 74 43 6f  {........p.SetCo
3110: 6c 6f 72 28 20 63 6c 72 3d 43 54 4c 20 29 3b 0d  lor( clr=CTL );.
3120: 0a 09 09 09 09 09 09 66 6f 72 28 20 3b 20 69 3c  .......for( ; i<
3130: 69 32 3b 20 2b 2b 69 2c 20 78 3d 70 2e 6e 65 78  i2; ++i, x=p.nex
3140: 74 54 61 62 28 78 29 20 29 0d 0a 09 09 09 09 09  tTab(x) ).......
3150: 09 09 70 2e 43 68 61 72 4f 75 74 28 20 4c 27 3e  ..p.CharOut( L'>
3160: 27 2c 20 78 2b 76 2e 58 42 41 53 45 2c 20 61 2e  ', x+v.XBASE, a.
3170: 74 6f 70 20 29 3b 0d 0a 09 09 09 09 09 7d 0d 0a  top );.......}..
3180: 09 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09 09  .....break;.....
3190: 09 63 61 73 65 20 4c 27 20 27 3a 0d 0a 09 09 09  .case L' ':.....
31a0: 09 09 69 66 28 20 70 2e 73 63 28 73 63 48 53 50  ..if( p.sc(scHSP
31b0: 29 20 29 0d 0a 09 09 09 09 09 09 70 2e 44 72 61  ) )........p.Dra
31c0: 77 48 53 50 28 20 78 2b 76 2e 58 42 41 53 45 2c  wHSP( x+v.XBASE,
31d0: 20 61 2e 74 6f 70 2c 20 69 32 2d 69 20 29 3b 0d   a.top, i2-i );.
31e0: 0a 09 09 09 09 09 62 72 65 61 6b 3b 0d 0a 09 09  ......break;....
31f0: 09 09 63 61 73 65 20 30 78 33 30 30 30 3a 2f 2f  ..case 0x3000://
3200: 4c 27 81 40 27 3a 0d 0a 09 09 09 09 09 69 66 28  L'.@':.......if(
3210: 20 70 2e 73 63 28 73 63 5a 53 50 29 20 29 0d 0a   p.sc(scZSP) )..
3220: 09 09 09 09 09 09 70 2e 44 72 61 77 5a 53 50 28  ......p.DrawZSP(
3230: 20 78 2b 76 2e 58 42 41 53 45 2c 20 61 2e 74 6f   x+v.XBASE, a.to
3240: 70 2c 20 69 32 2d 69 20 29 3b 0d 0a 09 09 09 09  p, i2-i );......
3250: 09 62 72 65 61 6b 3b 0d 0a 09 09 09 09 64 65 66  .break;......def
3260: 61 75 6c 74 3a 0d 0a 09 09 09 09 09 69 66 28 20  ault:.......if( 
3270: 63 6c 72 20 21 3d 20 28 66 6c 67 5b 69 5d 26 33  clr != (flg[i]&3
3280: 29 20 29 0d 0a 09 09 09 09 09 09 70 2e 53 65 74  ) )........p.Set
3290: 43 6f 6c 6f 72 28 20 63 6c 72 3d 28 66 6c 67 5b  Color( clr=(flg[
32a0: 69 5d 26 33 29 20 29 3b 0d 0a 09 09 09 09 09 70  i]&3) );.......p
32b0: 2e 53 74 72 69 6e 67 4f 75 74 28 20 73 74 72 2b  .StringOut( str+
32c0: 69 2c 20 69 32 2d 69 2c 20 78 2b 76 2e 58 42 41  i, i2-i, x+v.XBA
32d0: 53 45 2c 20 61 2e 74 6f 70 20 29 3b 0d 0a 09 09  SE, a.top );....
32e0: 09 09 09 2f 2f 70 2e 53 74 72 69 6e 67 4f 75 74  ...//p.StringOut
32f0: 28 20 73 74 72 2b 69 2c 20 69 32 2d 69 2c 20 78  ( str+i, i2-i, x
3300: 2b 76 2e 58 42 41 53 45 2c 20 61 2e 74 6f 70 20  +v.XBASE, a.top 
3310: 29 3b 0d 0a 09 09 09 09 09 2f 2f 20 89 bd 8c cc  );.......// ....
3320: 82 be 82 a9 82 51 93 78 95 60 82 ab 82 b5 82 c8  .....Q.x.`......
3330: 82 a2 82 c6 82 a4 82 dc 82 ad 82 a2 82 a9 82 f1  ................
3340: 81 63 0d 0a 09 09 09 09 09 62 72 65 61 6b 3b 0d  .c.......break;.
3350: 0a 09 09 09 09 7d 0d 0a 09 09 09 7d 0d 0a 0d 0a  .....}.....}....
3360: 09 09 09 2f 2f 20 91 49 91 f0 94 cd 88 cd 82 be  ...// .I........
3370: 82 c1 82 bd 82 e7 94 bd 93 5d 0d 0a 09 09 09 69  .........].....i
3380: 66 28 20 76 2e 53 59 42 3c 3d 61 2e 74 6f 70 20  f( v.SYB<=a.top 
3390: 26 26 20 61 2e 74 6f 70 3c 3d 76 2e 53 59 45 20  && a.top<=v.SYE 
33a0: 29 0d 0a 09 09 09 09 49 6e 76 28 20 61 2e 74 6f  )......Inv( a.to
33b0: 70 2c 20 61 2e 74 6f 70 3d 3d 76 2e 53 59 42 3f  p, a.top==v.SYB?
33c0: 76 2e 53 58 42 3a 28 76 2e 58 42 41 53 45 29 2c  v.SXB:(v.XBASE),
33d0: 0d 0a 09 09 09 09 20 20 20 20 20 20 20 20 20 20  ......          
33e0: 20 20 61 2e 74 6f 70 3d 3d 76 2e 53 59 45 3f 76    a.top==v.SYE?v
33f0: 2e 53 58 45 3a 28 76 2e 58 42 41 53 45 2b 78 29  .SXE:(v.XBASE+x)
3400: 2c 20 70 20 29 3b 0d 0a 0d 0a 09 09 09 2f 2f 20  , p );.......// 
3410: 8d 73 96 96 82 e6 82 e8 8c e3 82 eb 82 cc 97 5d  .s.............]
3420: 94 92 82 f0 94 77 8c 69 90 46 93 68 0d 0a 09 09  .....w.i.F.h....
3430: 09 69 66 28 20 78 3c 76 2e 58 4d 41 58 20 29 0d  .if( x<v.XMAX ).
3440: 0a 09 09 09 7b 0d 0a 09 09 09 09 61 2e 6c 65 66  ....{......a.lef
3450: 74 20 3d 20 76 2e 58 42 41 53 45 20 2b 20 4d 61  t = v.XBASE + Ma
3460: 78 28 20 76 2e 58 4d 49 4e 2c 20 78 20 29 3b 0d  x( v.XMIN, x );.
3470: 0a 09 09 09 09 61 2e 72 69 67 68 74 3d 20 76 2e  .....a.right= v.
3480: 58 42 41 53 45 20 2b 20 76 2e 58 4d 41 58 3b 0d  XBASE + v.XMAX;.
3490: 0a 09 09 09 09 70 2e 46 69 6c 6c 28 20 61 20 29  .....p.Fill( a )
34a0: 3b 0d 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 0d 0a  ;.....}....}....
34b0: 09 09 2f 2f 20 8d 73 96 96 8b 4c 8d 86 95 60 89  ..// .s...L...`.
34c0: e6 94 bd 93 5d 0d 0a 09 09 53 70 65 63 69 61 6c  ....]....Special
34d0: 43 68 61 72 73 20 73 63 20 3d 20 28 74 6c 3d 3d  Chars sc = (tl==
34e0: 54 4c 4d 20 3f 20 73 63 45 4f 46 20 3a 20 73 63  TLM ? scEOF : sc
34f0: 45 4f 4c 29 3b 0d 0a 09 09 69 66 28 20 69 3d 3d  EOL);....if( i==
3500: 64 6f 63 5f 2e 6c 65 6e 28 74 6c 29 20 26 26 20  doc_.len(tl) && 
3510: 2d 33 32 37 36 38 3c 78 2b 76 2e 58 42 41 53 45  -32768<x+v.XBASE
3520: 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 69 66 28 20   )....{.....if( 
3530: 70 2e 73 63 28 73 63 29 20 29 0d 0a 09 09 09 7b  p.sc(sc) ).....{
3540: 0d 0a 09 09 09 09 73 74 61 74 69 63 20 63 6f 6e  ......static con
3550: 73 74 20 75 6e 69 63 6f 64 65 2a 20 63 6f 6e 73  st unicode* cons
3560: 74 20 73 73 74 72 5b 5d 20 3d 20 7b 20 4c 22 5b  t sstr[] = { L"[
3570: 45 4f 46 5d 22 2c 20 4c 22 2f 22 20 7d 3b 0d 0a  EOF]", L"/" };..
3580: 09 09 09 09 73 74 61 74 69 63 20 63 6f 6e 73 74  ....static const
3590: 20 69 6e 74 20 73 6c 65 6e 5b 5d 20 3d 20 7b 20   int slen[] = { 
35a0: 35 2c 20 31 20 7d 3b 0d 0a 09 09 09 09 70 2e 53  5, 1 };......p.S
35b0: 65 74 43 6f 6c 6f 72 28 20 63 6c 72 3d 43 54 4c  etColor( clr=CTL
35c0: 20 29 3b 0d 0a 09 09 09 09 70 2e 53 74 72 69 6e   );......p.Strin
35d0: 67 4f 75 74 28 20 73 73 74 72 5b 73 63 5d 2c 20  gOut( sstr[sc], 
35e0: 73 6c 65 6e 5b 73 63 5d 2c 20 78 2b 76 2e 58 42  slen[sc], x+v.XB
35f0: 41 53 45 2c 20 61 2e 74 6f 70 2d 48 20 29 3b 0d  ASE, a.top-H );.
3600: 0a 09 09 09 7d 0d 0a 09 09 09 69 66 28 20 76 2e  ....}.....if( v.
3610: 53 59 42 3c 61 2e 74 6f 70 20 26 26 20 61 2e 74  SYB<a.top && a.t
3620: 6f 70 3c 3d 76 2e 53 59 45 20 26 26 20 73 63 3d  op<=v.SYE && sc=
3630: 3d 73 63 45 4f 4c 20 29 0d 0a 09 09 09 09 49 6e  =scEOL )......In
3640: 76 28 20 61 2e 74 6f 70 2d 48 2c 20 78 2b 76 2e  v( a.top-H, x+v.
3650: 58 42 41 53 45 2c 20 78 2b 76 2e 58 42 41 53 45  XBASE, x+v.XBASE
3660: 2b 70 2e 57 63 28 4c 27 2f 27 29 2c 20 70 20 29  +p.Wc(L'/'), p )
3670: 3b 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 0d 0a 09 2f  ;....}...}...../
3680: 2f 20 45 4f 46 8c e3 97 5d 94 92 82 f0 94 77 8c  / EOF...].....w.
3690: 69 90 46 93 68 0d 0a 09 69 66 28 20 61 2e 74 6f  i.F.h...if( a.to
36a0: 70 20 3c 20 76 2e 72 63 2e 62 6f 74 74 6f 6d 20  p < v.rc.bottom 
36b0: 29 0d 0a 09 7b 0d 0a 09 09 61 2e 6c 65 66 74 20  )...{....a.left 
36c0: 20 20 3d 20 76 2e 72 63 2e 6c 65 66 74 3b 0d 0a    = v.rc.left;..
36d0: 09 09 61 2e 72 69 67 68 74 20 20 3d 20 76 2e 72  ..a.right  = v.r
36e0: 63 2e 72 69 67 68 74 3b 0d 0a 09 09 61 2e 62 6f  c.right;....a.bo
36f0: 74 74 6f 6d 20 3d 20 76 2e 72 63 2e 62 6f 74 74  ttom = v.rc.bott
3700: 6f 6d 3b 0d 0a 09 09 70 2e 46 69 6c 6c 28 20 61  om;....p.Fill( a
3710: 20 29 3b 0d 0a 09 7d 0d 0a 7d 0d 0a               );...}..}..