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