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 73 63 72 6f 6c 6c 2e 63 70 70 20 83 ip_scroll.cpp .
00d0: 58 83 4e 83 8d 81 5b 83 8b 0d 0a 2f 2f 0d 0a 2f X.N...[....//../
00e0: 2f 09 09 83 45 83 43 83 93 83 68 83 45 83 54 83 /...E.C...h.E.T.
00f0: 43 83 59 82 cd 83 58 83 4e 83 8d 81 5b 83 8b 83 C.Y...X.N...[...
0100: 6f 81 5b 82 cc 88 ca 92 75 82 c9 82 e6 82 c1 82 o.[.....u.......
0110: c4 0d 0a 2f 2f 09 09 95 60 89 e6 88 ca 92 75 82 ...//...`.....u.
0120: f0 93 4b 93 96 82 c9 8d 58 90 56 82 b5 82 c4 82 ..K.....X.V.....
0130: a2 82 ad 8f 88 97 9d 82 aa 82 b1 82 b1 81 42 0d ..............B.
0140: 0a 2f 2f 0d 0a 2f 2f 2d 2d 2d 2d 20 69 70 5f 74 .//..//---- ip_t
0150: 65 78 74 2e 63 70 70 20 20 20 95 b6 8e 9a 97 f1 ext.cpp ......
0160: 91 80 8d ec 81 45 91 bc 0d 0a 2f 2f 2d 2d 2d 2d .....E....//----
0170: 20 69 70 5f 70 61 72 73 65 2e 63 70 70 20 20 83 ip_parse.cpp .
0180: 4c 81 5b 83 8f 81 5b 83 68 89 f0 90 cd 0d 0a 2f L.[...[.h....../
0190: 2f 2d 2d 2d 2d 20 69 70 5f 77 72 61 70 2e 63 70 /---- ip_wrap.cp
01a0: 70 20 20 20 90 dc 82 e8 95 d4 82 b5 0d 0a 2f 2f p ..........//
01b0: 2d 2d 2d 2d 20 69 70 5f 64 72 61 77 2e 63 70 70 ---- ip_draw.cpp
01c0: 20 20 20 95 60 89 e6 81 45 91 bc 0d 0a 2f 2f 2d .`...E....//-
01d0: 2d 2d 2d 20 69 70 5f 63 75 72 73 6f 72 2e 63 70 --- ip_cursor.cp
01e0: 70 20 83 4a 81 5b 83 5c 83 8b 83 52 83 93 83 67 p .J.[.\...R...g
01f0: 83 8d 81 5b 83 8b 0d 0a 2f 2f 3d 3d 3d 3d 3d 3d ...[....//======
0200: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0210: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0220: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0230: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0240: 3d 3d 3d 0d 0a 0d 0a 0d 0a 0d 0a 2f 2f 2d 2d 2d ===........//---
0250: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0260: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0270: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0280: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0290: 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 95 60 89 e6 97 ------..// .`...
02a0: cc 88 e6 83 54 83 43 83 59 8a c7 97 9d 0d 0a 2f ....T.C.Y....../
02b0: 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d /---------------
02c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
02f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 6e 61 ----------....na
0300: 6d 65 73 70 61 63 65 0d 0a 7b 0d 0a 09 73 74 61 mespace..{...sta
0310: 74 69 63 20 69 6e 74 20 4c 6f 67 31 30 28 20 75 tic int Log10( u
0320: 6c 6f 6e 67 20 6e 20 29 0d 0a 09 7b 0d 0a 09 09 long n )...{....
0330: 63 6f 6e 73 74 20 73 74 61 74 69 63 20 75 6c 6f const static ulo
0340: 6e 67 20 70 6f 77 65 72 5f 6f 66 5f 74 65 6e 5b ng power_of_ten[
0350: 5d 20 3d 0d 0a 09 09 09 7b 20 31 2c 20 31 30 2c ] =.....{ 1, 10,
0360: 20 31 30 30 2c 20 31 30 30 30 2c 20 31 30 30 30 100, 1000, 1000
0370: 30 2c 20 31 30 30 30 30 30 2c 20 31 30 30 30 30 0, 100000, 10000
0380: 30 30 2c 0d 0a 09 09 09 20 20 31 30 30 30 30 30 00,..... 100000
0390: 30 30 2c 20 31 30 30 30 30 30 30 30 30 2c 20 31 00, 100000000, 1
03a0: 30 30 30 30 30 30 30 30 30 20 7d 3b 20 2f 2f 20 000000000 }; //
03b0: 31 30 5e 30 20 81 60 20 31 30 5e 39 0d 0a 09 09 10^0 .` 10^9....
03c0: 69 6e 74 20 63 3d 33 3b 0d 0a 09 09 69 66 28 20 int c=3;....if(
03d0: 70 6f 77 65 72 5f 6f 66 5f 74 65 6e 5b 39 5d 20 power_of_ten[9]
03e0: 3c 3d 20 6e 20 29 0d 0a 09 09 09 63 3d 31 30 3b <= n ).....c=10;
03f0: 0d 0a 09 09 65 6c 73 65 0d 0a 09 09 09 77 68 69 ....else.....whi
0400: 6c 65 28 20 70 6f 77 65 72 5f 6f 66 5f 74 65 6e le( power_of_ten
0410: 5b 63 5d 20 3c 3d 20 6e 20 29 0d 0a 09 09 09 09 [c] <= n )......
0420: 63 2b 2b 3b 0d 0a 09 09 72 65 74 75 72 6e 20 63 c++;....return c
0430: 3b 20 2f 2f 20 33 3c 3d 63 3c 3d 31 30 20 73 2e ; // 3<=c<=10 s.
0440: 74 2e 20 31 30 5e 28 63 2d 31 29 20 3c 3d 20 6e t. 10^(c-1) <= n
0450: 20 3c 20 31 30 5e 63 0d 0a 09 7d 0d 0a 7d 0d 0a < 10^c...}..}..
0460: 0d 0a 62 6f 6f 6c 20 43 61 6e 76 61 73 3a 3a 43 ..bool Canvas::C
0470: 61 6c 63 4c 4e 41 72 65 61 57 69 64 74 68 28 29 alcLNAreaWidth()
0480: 0d 0a 7b 0d 0a 09 63 6f 6e 73 74 20 69 6e 74 20 ..{...const int
0490: 70 72 65 76 20 3d 20 74 78 74 5a 6f 6e 65 5f 2e prev = txtZone_.
04a0: 6c 65 66 74 3b 0d 0a 09 69 66 28 20 73 68 6f 77 left;...if( show
04b0: 4c 4e 5f 20 29 0d 0a 09 7b 0d 0a 09 09 74 78 74 LN_ )...{....txt
04c0: 5a 6f 6e 65 5f 2e 6c 65 66 74 20 20 3d 20 28 31 Zone_.left = (1
04d0: 20 2b 20 66 69 67 4e 75 6d 5f 29 20 2a 20 66 6f + figNum_) * fo
04e0: 6e 74 5f 2d 3e 46 28 29 3b 0d 0a 09 09 69 66 28 nt_->F();....if(
04f0: 20 74 78 74 5a 6f 6e 65 5f 2e 6c 65 66 74 2b 66 txtZone_.left+f
0500: 6f 6e 74 5f 2d 3e 57 28 29 20 3e 3d 20 74 78 74 ont_->W() >= txt
0510: 5a 6f 6e 65 5f 2e 72 69 67 68 74 20 29 0d 0a 09 Zone_.right )...
0520: 09 09 74 78 74 5a 6f 6e 65 5f 2e 6c 65 66 74 20 ..txtZone_.left
0530: 3d 20 30 3b 20 2f 2f 20 8d 73 94 d4 8d 86 83 5d = 0; // .s.....]
0540: 81 5b 83 93 82 aa 83 66 83 4a 82 b7 82 ac 82 e9 .[.....f.J......
0550: 82 c6 82 ab 82 cd 95 5c 8e a6 82 b5 82 c8 82 a2 .......\........
0560: 0d 0a 09 7d 0d 0a 09 65 6c 73 65 0d 0a 09 7b 0d ...}...else...{.
0570: 0a 09 09 74 78 74 5a 6f 6e 65 5f 2e 6c 65 66 74 ...txtZone_.left
0580: 20 3d 20 30 3b 0d 0a 09 7d 0d 0a 0d 0a 09 72 65 = 0;...}.....re
0590: 74 75 72 6e 20 28 70 72 65 76 20 21 3d 20 74 78 turn (prev != tx
05a0: 74 5a 6f 6e 65 5f 2e 6c 65 66 74 29 3b 0d 0a 7d tZone_.left);..}
05b0: 0d 0a 0d 0a 76 6f 69 64 20 43 61 6e 76 61 73 3a ....void Canvas:
05c0: 3a 43 61 6c 63 57 72 61 70 57 69 64 74 68 28 29 :CalcWrapWidth()
05d0: 0d 0a 7b 0d 0a 09 73 77 69 74 63 68 28 20 77 72 ..{...switch( wr
05e0: 61 70 54 79 70 65 5f 20 29 0d 0a 09 7b 0d 0a 09 apType_ )...{...
05f0: 63 61 73 65 20 4e 4f 57 52 41 50 3a 0d 0a 09 09 case NOWRAP:....
0600: 77 72 61 70 57 69 64 74 68 5f 20 3d 20 30 78 66 wrapWidth_ = 0xf
0610: 66 66 66 66 66 66 66 3b 0d 0a 09 09 62 72 65 61 fffffff;....brea
0620: 6b 3b 0d 0a 09 63 61 73 65 20 52 49 47 48 54 45 k;...case RIGHTE
0630: 44 47 45 3a 0d 0a 09 09 77 72 61 70 57 69 64 74 DGE:....wrapWidt
0640: 68 5f 20 3d 20 74 78 74 5a 6f 6e 65 5f 2e 72 69 h_ = txtZone_.ri
0650: 67 68 74 20 2d 20 74 78 74 5a 6f 6e 65 5f 2e 6c ght - txtZone_.l
0660: 65 66 74 20 2d 20 33 3b 0d 0a 09 09 62 72 65 61 eft - 3;....brea
0670: 6b 3b 20 2f 2f 43 61 72 65 74 82 cc 95 aa 2d 33 k; //Caret....-3
0680: 95 e2 90 b3 0d 0a 09 64 65 66 61 75 6c 74 3a 0d .......default:.
0690: 0a 09 09 77 72 61 70 57 69 64 74 68 5f 20 3d 20 ...wrapWidth_ =
06a0: 77 72 61 70 54 79 70 65 5f 20 2a 20 66 6f 6e 74 wrapType_ * font
06b0: 5f 2d 3e 57 28 29 3b 0d 0a 09 09 62 72 65 61 6b _->W();....break
06c0: 3b 0d 0a 09 7d 0d 0a 7d 0d 0a 0d 0a 43 61 6e 76 ;...}..}....Canv
06d0: 61 73 3a 3a 43 61 6e 76 61 73 28 20 63 6f 6e 73 as::Canvas( cons
06e0: 74 20 56 69 65 77 26 20 76 77 20 29 0d 0a 09 3a t View& vw )...:
06f0: 20 77 72 61 70 54 79 70 65 5f 20 28 20 2d 31 20 wrapType_ ( -1
0700: 29 0d 0a 09 2c 20 73 68 6f 77 4c 4e 5f 20 20 20 )..., showLN_
0710: 28 20 66 61 6c 73 65 20 29 0d 0a 09 2c 20 77 72 ( false )..., wr
0720: 61 70 57 69 64 74 68 5f 28 20 30 78 66 66 66 66 apWidth_( 0xffff
0730: 66 66 66 66 20 29 0d 0a 09 2c 20 66 69 67 4e 75 ffff )..., figNu
0740: 6d 5f 20 20 20 28 20 33 20 29 0d 0a 09 2c 20 66 m_ ( 3 )..., f
0750: 6f 6e 74 5f 20 20 20 20 20 28 20 6e 65 77 20 50 ont_ ( new P
0760: 61 69 6e 74 65 72 28 20 3a 3a 47 65 74 44 43 28 ainter( ::GetDC(
0770: 76 77 2e 68 77 6e 64 28 29 29 2c 0d 0a 09 20 20 vw.hwnd()),...
0780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0790: 56 43 6f 6e 66 69 67 28 54 45 58 54 28 22 46 69 VConfig(TEXT("Fi
07a0: 78 65 64 53 79 73 22 29 2c 31 34 29 20 29 20 29 xedSys"),14) ) )
07b0: 0d 0a 7b 0d 0a 09 76 77 2e 67 65 74 43 6c 69 65 ..{...vw.getClie
07c0: 6e 74 52 65 63 74 28 20 26 74 78 74 5a 6f 6e 65 ntRect( &txtZone
07d0: 5f 20 29 3b 0d 0a 7d 0d 0a 0d 0a 62 6f 6f 6c 20 _ );..}....bool
07e0: 43 61 6e 76 61 73 3a 3a 6f 6e 5f 76 69 65 77 5f Canvas::on_view_
07f0: 72 65 73 69 7a 65 28 20 69 6e 74 20 63 78 2c 20 resize( int cx,
0800: 69 6e 74 20 63 79 20 29 0d 0a 7b 0d 0a 09 74 78 int cy )..{...tx
0810: 74 5a 6f 6e 65 5f 2e 72 69 67 68 74 20 20 3d 20 tZone_.right =
0820: 63 78 3b 0d 0a 09 74 78 74 5a 6f 6e 65 5f 2e 62 cx;...txtZone_.b
0830: 6f 74 74 6f 6d 20 3d 20 63 79 3b 0d 0a 0d 0a 09 ottom = cy;.....
0840: 43 61 6c 63 4c 4e 41 72 65 61 57 69 64 74 68 28 CalcLNAreaWidth(
0850: 29 3b 0d 0a 09 69 66 28 20 77 72 61 70 54 79 70 );...if( wrapTyp
0860: 65 5f 20 3d 3d 20 52 49 47 48 54 45 44 47 45 20 e_ == RIGHTEDGE
0870: 29 0d 0a 09 7b 0d 0a 09 09 43 61 6c 63 57 72 61 )...{....CalcWra
0880: 70 57 69 64 74 68 28 29 3b 0d 0a 09 09 72 65 74 pWidth();....ret
0890: 75 72 6e 20 74 72 75 65 3b 0d 0a 09 7d 0d 0a 09 urn true;...}...
08a0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 7d return false;..}
08b0: 0d 0a 0d 0a 76 6f 69 64 20 43 61 6e 76 61 73 3a ....void Canvas:
08c0: 3a 6f 6e 5f 66 6f 6e 74 5f 63 68 61 6e 67 65 28 :on_font_change(
08d0: 20 63 6f 6e 73 74 20 56 43 6f 6e 66 69 67 26 20 const VConfig&
08e0: 76 63 20 29 0d 0a 7b 0d 0a 09 48 44 43 20 64 63 vc )..{...HDC dc
08f0: 20 3d 20 66 6f 6e 74 5f 2d 3e 67 65 74 44 43 28 = font_->getDC(
0900: 29 3b 0d 0a 09 66 6f 6e 74 5f 20 3d 20 4e 55 4c );...font_ = NUL
0910: 4c 3b 20 2f 2f 20 90 e6 82 c9 83 66 83 58 83 67 L; // .....f.X.g
0920: 83 89 83 4e 83 5e 82 f0 8c c4 82 ce 82 cb 82 ce ...N.^..........
0930: 82 c8 82 e7 82 c8 82 a2 81 63 0d 0a 09 20 20 20 .........c...
0940: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 82 c1 // ..
0950: 82 c4 82 a4 82 ed 81 5b 8a 69 8d 44 88 ab 82 a1 .......[.i.D....
0960: 81 5b 81 5b 81 5b 28 54 5f 54 29 0d 0a 09 66 6f .[.[.[(T_T)...fo
0970: 6e 74 5f 20 3d 20 6e 65 77 20 50 61 69 6e 74 65 nt_ = new Painte
0980: 72 28 20 64 63 2c 20 76 63 20 29 3b 0d 0a 0d 0a r( dc, vc );....
0990: 09 43 61 6c 63 4c 4e 41 72 65 61 57 69 64 74 68 .CalcLNAreaWidth
09a0: 28 29 3b 0d 0a 09 43 61 6c 63 57 72 61 70 57 69 ();...CalcWrapWi
09b0: 64 74 68 28 29 3b 0d 0a 7d 0d 0a 0d 0a 76 6f 69 dth();..}....voi
09c0: 64 20 43 61 6e 76 61 73 3a 3a 6f 6e 5f 63 6f 6e d Canvas::on_con
09d0: 66 69 67 5f 63 68 61 6e 67 65 28 20 69 6e 74 20 fig_change( int
09e0: 77 72 61 70 2c 20 62 6f 6f 6c 20 73 68 6f 77 6c wrap, bool showl
09f0: 6e 20 29 0d 0a 7b 0d 0a 09 73 68 6f 77 4c 4e 5f n )..{...showLN_
0a00: 20 3d 20 73 68 6f 77 6c 6e 3b 0d 0a 09 77 72 61 = showln;...wra
0a10: 70 54 79 70 65 5f 20 3d 20 77 72 61 70 3b 0d 0a pType_ = wrap;..
0a20: 0d 0a 09 43 61 6c 63 4c 4e 41 72 65 61 57 69 64 ...CalcLNAreaWid
0a30: 74 68 28 29 3b 0d 0a 09 43 61 6c 63 57 72 61 70 th();...CalcWrap
0a40: 57 69 64 74 68 28 29 3b 0d 0a 7d 0d 0a 0d 0a 62 Width();..}....b
0a50: 6f 6f 6c 20 43 61 6e 76 61 73 3a 3a 6f 6e 5f 74 ool Canvas::on_t
0a60: 6c 6e 5f 63 68 61 6e 67 65 28 20 75 6c 6f 6e 67 ln_change( ulong
0a70: 20 74 6c 6e 20 29 0d 0a 7b 0d 0a 09 66 69 67 4e tln )..{...figN
0a80: 75 6d 5f 20 3d 20 4c 6f 67 31 30 28 20 74 6c 6e um_ = Log10( tln
0a90: 20 29 3b 20 2f 2f 20 8c 85 90 94 8c 76 8e 5a 0d ); // .....v.Z.
0aa0: 0a 0d 0a 09 69 66 28 20 43 61 6c 63 4c 4e 41 72 ....if( CalcLNAr
0ab0: 65 61 57 69 64 74 68 28 29 20 29 0d 0a 09 7b 0d eaWidth() )...{.
0ac0: 0a 09 09 69 66 28 20 77 72 61 70 54 79 70 65 5f ...if( wrapType_
0ad0: 20 3d 3d 20 52 49 47 48 54 45 44 47 45 20 29 0d == RIGHTEDGE ).
0ae0: 0a 09 09 09 43 61 6c 63 57 72 61 70 57 69 64 74 ....CalcWrapWidt
0af0: 68 28 29 3b 0d 0a 09 09 72 65 74 75 72 6e 20 74 h();....return t
0b00: 72 75 65 3b 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 rue;...}...retur
0b10: 6e 20 66 61 6c 73 65 3b 0d 0a 7d 0d 0a 0d 0a 0d n false;..}.....
0b20: 0a 0d 0a 2f 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ...//-----------
0b30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0b40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0b50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0b60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a --------------..
0b70: 2f 2f 20 83 58 83 4e 83 8d 81 5b 83 8b 83 6f 81 // .X.N...[...o.
0b80: 5b 8c 76 8e 5a 83 8b 81 5b 83 60 83 93 0d 0a 2f [.v.Z...[.`..../
0b90: 2f 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d /---------------
0ba0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0bb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0bc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0bd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 2f 20 72 ----------..// r
0be0: 6c 20 28 89 a1 83 58 83 4e 83 8d 81 5b 83 8b 8f l (...X.N...[...
0bf0: ee 95 f1 29 0d 0a 2f 2f 20 6d 61 78 3a 20 20 76 ...)..// max: v
0c00: 69 65 77 2e 74 78 74 2e 74 78 74 77 69 64 74 68 iew.txt.txtwidth
0c10: 28 29 0d 0a 2f 2f 20 70 61 67 65 3a 20 76 69 65 ()..// page: vie
0c20: 77 2e 63 78 28 29 0d 0a 2f 2f 20 70 6f 73 3a 20 w.cx()..// pos:
0c30: 20 30 81 60 6d 61 78 2d 70 61 67 65 0d 0a 0d 0a 0.`max-page....
0c40: 2f 2f 20 75 64 20 28 8f 63 83 58 83 4e 83 8d 81 // ud (.c.X.N...
0c50: 5b 83 8b 8f ee 95 f1 29 0d 0a 2f 2f 20 6d 61 78 [......)..// max
0c60: 3a 20 20 20 76 69 65 77 2e 74 78 74 2e 76 6c 6e : view.txt.vln
0c70: 28 29 20 2b 20 70 61 67 65 20 2d 20 31 0d 0a 2f () + page - 1../
0c80: 2f 20 70 61 67 65 3a 20 20 76 69 65 77 2e 63 79 / page: view.cy
0c90: 28 29 20 2f 20 76 69 65 77 2e 66 6e 74 2e 48 28 () / view.fnt.H(
0ca0: 29 0d 0a 2f 2f 20 64 65 6c 74 61 3a 20 30 81 60 )..// delta: 0.`
0cb0: 76 69 65 77 2e 66 6e 74 2e 48 28 29 0d 0a 2f 2f view.fnt.H()..//
0cc0: 20 70 6f 73 3a 20 20 20 30 81 60 6d 61 78 2d 70 pos: 0.`max-p
0cd0: 61 67 65 20 28 74 6f 70 82 cc 8d 73 94 d4 8d 86 age (top...s....
0ce0: 29 0d 0a 0d 0a 62 6f 6f 6c 20 56 69 65 77 49 6d )....bool ViewIm
0cf0: 70 6c 3a 3a 52 65 53 65 74 53 63 72 6f 6c 6c 49 pl::ReSetScrollI
0d00: 6e 66 6f 28 29 0d 0a 7b 0d 0a 09 63 6f 6e 73 74 nfo()..{...const
0d10: 20 69 6e 74 20 70 72 65 76 52 6c 50 6f 73 20 3d int prevRlPos =
0d20: 20 72 6c 53 63 72 5f 2e 6e 50 6f 73 3b 0d 0a 09 rlScr_.nPos;...
0d30: 63 6f 6e 73 74 20 75 6c 6f 6e 67 20 63 78 20 3d const ulong cx =
0d40: 20 63 76 73 5f 2e 7a 6f 6e 65 28 29 2e 72 69 67 cvs_.zone().rig
0d50: 68 74 20 2d 20 63 76 73 5f 2e 7a 6f 6e 65 28 29 ht - cvs_.zone()
0d60: 2e 6c 65 66 74 3b 0d 0a 09 63 6f 6e 73 74 20 75 .left;...const u
0d70: 6c 6f 6e 67 20 63 79 20 3d 20 63 76 73 5f 2e 7a long cy = cvs_.z
0d80: 6f 6e 65 28 29 2e 62 6f 74 74 6f 6d 3b 0d 0a 0d one().bottom;...
0d90: 0a 09 2f 2f 20 89 a1 82 cd 95 cf 82 c8 92 6c 82 ..// .........l.
0da0: c9 82 c8 82 e7 82 c8 82 a2 82 e6 82 a4 95 e2 90 ................
0db0: b3 82 b7 82 e9 82 be 82 af 82 c5 82 e6 82 a2 0d ................
0dc0: 0a 2f 2f 09 72 6c 53 63 72 5f 2e 6e 50 61 67 65 .//.rlScr_.nPage
0dd0: 20 3d 20 63 78 20 2b 20 31 3b 0d 0a 2f 2f 09 72 = cx + 1;..//.r
0de0: 6c 53 63 72 5f 2e 6e 4d 61 78 20 20 3d 20 4d 61 lScr_.nMax = Ma
0df0: 78 28 20 74 65 78 74 43 78 5f 2c 20 63 78 20 29 x( textCx_, cx )
0e00: 3b 0d 0a 2f 2f 09 72 6c 53 63 72 5f 2e 6e 50 6f ;..//.rlScr_.nPo
0e10: 73 20 20 3d 20 4d 69 6e 3c 69 6e 74 3e 28 20 72 s = Min<int>( r
0e20: 6c 53 63 72 5f 2e 6e 50 6f 73 2c 20 72 6c 53 63 lScr_.nPos, rlSc
0e30: 72 5f 2e 6e 4d 61 78 2d 72 6c 53 63 72 5f 2e 6e r_.nMax-rlScr_.n
0e40: 50 61 67 65 2b 31 20 29 3b 0d 0a 09 72 6c 53 63 Page+1 );...rlSc
0e50: 72 5f 2e 6e 50 61 67 65 20 3d 20 63 78 20 2b 20 r_.nPage = cx +
0e60: 31 3b 0d 0a 09 72 6c 53 63 72 5f 2e 6e 4d 61 78 1;...rlScr_.nMax
0e70: 20 20 3d 20 4d 61 78 28 20 74 65 78 74 43 78 5f = Max( textCx_
0e80: 2b 33 2c 20 63 78 20 29 3b 0d 0a 09 72 6c 53 63 +3, cx );...rlSc
0e90: 72 5f 2e 6e 50 6f 73 20 20 3d 20 4d 69 6e 3c 69 r_.nPos = Min<i
0ea0: 6e 74 3e 28 20 72 6c 53 63 72 5f 2e 6e 50 6f 73 nt>( rlScr_.nPos
0eb0: 2c 20 72 6c 53 63 72 5f 2e 6e 4d 61 78 2d 72 6c , rlScr_.nMax-rl
0ec0: 53 63 72 5f 2e 6e 50 61 67 65 2b 31 20 29 3b 0d Scr_.nPage+1 );.
0ed0: 0a 0d 0a 09 2f 2f 20 8f 63 82 cd 6e 50 61 67 65 ....// .c..nPage
0ee0: 82 c6 6e 4d 61 78 82 cd 82 c6 82 e8 82 a0 82 a6 ..nMax..........
0ef0: 82 b8 95 e2 90 b3 0d 0a 09 2f 2f 20 6e 50 6f 73 .........// nPos
0f00: 82 cd 8f ea 8d 87 82 c9 82 e6 82 c1 82 c4 92 bc ................
0f10: 82 b5 95 fb 82 aa 88 d9 82 c8 82 e9 82 cc 82 c5 ................
0f20: 95 ca 83 8b 81 5b 83 60 83 93 82 c9 82 c4 0d 0a .....[.`........
0f30: 09 75 64 53 63 72 5f 2e 6e 50 61 67 65 20 3d 20 .udScr_.nPage =
0f40: 63 79 20 2f 20 63 76 73 5f 2e 67 65 74 50 61 69 cy / cvs_.getPai
0f50: 6e 74 65 72 28 29 2e 48 28 29 20 2b 20 31 3b 0d nter().H() + 1;.
0f60: 0a 09 75 64 53 63 72 5f 2e 6e 4d 61 78 20 20 3d ..udScr_.nMax =
0f70: 20 76 6c 6e 28 29 20 2b 20 75 64 53 63 72 5f 2e vln() + udScr_.
0f80: 6e 50 61 67 65 20 2d 20 32 3b 0d 0a 0d 0a 09 2f nPage - 2;...../
0f90: 2f 20 89 a1 83 58 83 4e 83 8d 81 5b 83 8b 82 aa / ...X.N...[....
0fa0: 8b 4e 82 ab 82 bd 82 e7 74 72 75 65 0d 0a 09 72 .N......true...r
0fb0: 65 74 75 72 6e 20 28 70 72 65 76 52 6c 50 6f 73 eturn (prevRlPos
0fc0: 20 21 3d 20 72 6c 53 63 72 5f 2e 6e 50 6f 73 29 != rlScr_.nPos)
0fd0: 3b 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 56 69 65 ;..}....void Vie
0fe0: 77 49 6d 70 6c 3a 3a 46 6f 72 63 65 53 63 72 6f wImpl::ForceScro
0ff0: 6c 6c 54 6f 28 20 75 6c 6f 6e 67 20 74 6c 20 29 llTo( ulong tl )
1000: 0d 0a 7b 0d 0a 09 75 64 53 63 72 5f 2e 6e 50 6f ..{...udScr_.nPo
1010: 73 20 3d 20 74 6c 32 76 6c 28 74 6c 29 3b 0d 0a s = tl2vl(tl);..
1020: 09 75 64 53 63 72 5f 74 6c 5f 20 20 20 3d 20 74 .udScr_tl_ = t
1030: 6c 3b 0d 0a 09 75 64 53 63 72 5f 76 72 6c 5f 20 l;...udScr_vrl_
1040: 20 3d 20 30 3b 0d 0a 7d 0d 0a 0d 0a 75 6c 6f 6e = 0;..}....ulon
1050: 67 20 56 69 65 77 49 6d 70 6c 3a 3a 74 6c 32 76 g ViewImpl::tl2v
1060: 6c 28 20 75 6c 6f 6e 67 20 74 6c 20 29 20 63 6f l( ulong tl ) co
1070: 6e 73 74 0d 0a 7b 0d 0a 09 69 66 28 20 76 6c 6e nst..{...if( vln
1080: 28 29 20 3d 3d 20 64 6f 63 5f 2e 74 6c 6e 28 29 () == doc_.tln()
1090: 20 29 0d 0a 09 09 72 65 74 75 72 6e 20 74 6c 3b )....return tl;
10a0: 0d 0a 0d 0a 09 75 6c 6f 6e 67 20 76 6c 3d 30 3b .....ulong vl=0;
10b0: 0d 0a 09 66 6f 72 28 20 75 6c 6f 6e 67 20 69 3d ...for( ulong i=
10c0: 30 3b 20 69 3c 74 6c 3b 20 2b 2b 69 20 29 0d 0a 0; i<tl; ++i )..
10d0: 09 09 76 6c 20 2b 3d 20 72 6c 6e 28 69 29 3b 0d ..vl += rln(i);.
10e0: 0a 09 72 65 74 75 72 6e 20 76 6c 3b 0d 0a 7d 0d ..return vl;..}.
10f0: 0a 0d 0a 76 6f 69 64 20 56 69 65 77 49 6d 70 6c ...void ViewImpl
1100: 3a 3a 55 70 64 61 74 65 53 63 72 6f 6c 6c 42 61 ::UpdateScrollBa
1110: 72 28 29 0d 0a 7b 0d 0a 09 3a 3a 53 65 74 53 63 r()..{...::SetSc
1120: 72 6f 6c 6c 49 6e 66 6f 28 20 68 77 6e 64 5f 2c rollInfo( hwnd_,
1130: 20 53 42 5f 48 4f 52 5a 2c 20 26 72 6c 53 63 72 SB_HORZ, &rlScr
1140: 5f 2c 20 54 52 55 45 20 29 3b 0d 0a 09 3a 3a 53 _, TRUE );...::S
1150: 65 74 53 63 72 6f 6c 6c 49 6e 66 6f 28 20 68 77 etScrollInfo( hw
1160: 6e 64 5f 2c 20 53 42 5f 56 45 52 54 2c 20 26 75 nd_, SB_VERT, &u
1170: 64 53 63 72 5f 2c 20 54 52 55 45 20 29 3b 0d 0a dScr_, TRUE );..
1180: 7d 0d 0a 0d 0a 52 65 44 72 61 77 54 79 70 65 20 }....ReDrawType
1190: 56 69 65 77 49 6d 70 6c 3a 3a 54 65 78 74 55 70 ViewImpl::TextUp
11a0: 64 61 74 65 5f 53 63 72 6f 6c 6c 42 61 72 0d 0a date_ScrollBar..
11b0: 09 28 20 63 6f 6e 73 74 20 44 50 6f 73 26 20 73 .( const DPos& s
11c0: 2c 20 63 6f 6e 73 74 20 44 50 6f 73 26 20 65 2c , const DPos& e,
11d0: 20 63 6f 6e 73 74 20 44 50 6f 73 26 20 65 32 20 const DPos& e2
11e0: 29 0d 0a 7b 0d 0a 09 63 6f 6e 73 74 20 75 6c 6f )..{...const ulo
11f0: 6e 67 20 70 72 65 76 55 64 4d 61 78 20 3d 20 75 ng prevUdMax = u
1200: 64 53 63 72 5f 2e 6e 4d 61 78 3b 0d 0a 09 63 6f dScr_.nMax;...co
1210: 6e 73 74 20 62 6f 6f 6c 20 72 6c 53 63 72 6f 6c nst bool rlScrol
1220: 6c 65 64 20 3d 20 52 65 53 65 74 53 63 72 6f 6c led = ReSetScrol
1230: 6c 49 6e 66 6f 28 29 3b 0d 0a 09 63 6f 6e 73 74 lInfo();...const
1240: 20 6c 6f 6e 67 20 76 6c 5f 64 69 66 20 3d 20 28 long vl_dif = (
1250: 75 64 53 63 72 5f 2e 6e 4d 61 78 20 2d 20 70 72 udScr_.nMax - pr
1260: 65 76 55 64 4d 61 78 29 3b 0d 0a 09 52 65 44 72 evUdMax);...ReDr
1270: 61 77 54 79 70 65 20 61 6e 73 20 3d 0d 0a 09 09 awType ans =....
1280: 28 76 6c 5f 64 69 66 21 3d 30 20 7c 7c 20 73 2e (vl_dif!=0 || s.
1290: 74 6c 21 3d 65 32 2e 74 6c 20 3f 20 41 46 54 45 tl!=e2.tl ? AFTE
12a0: 52 20 3a 20 4c 49 4e 45 29 3b 0d 0a 0d 0a 09 69 R : LINE);.....i
12b0: 66 28 20 75 64 53 63 72 5f 74 6c 5f 20 3c 20 73 f( udScr_tl_ < s
12c0: 2e 74 6c 20 29 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 .tl )...{....//
12d0: 83 70 83 5e 81 5b 83 93 82 50 81 46 8c bb 8d dd .p.^.[...P.F....
12e0: 82 cc 89 e6 96 ca 8f e3 92 5b 82 e6 82 e8 89 ba .........[......
12f0: 82 c5 8d 58 90 56 82 b3 82 ea 82 bd 8f ea 8d 87 ...X.V..........
1300: 0d 0a 09 09 2f 2f 20 83 58 83 4e 83 8d 81 5b 83 ....// .X.N...[.
1310: 8b 82 b5 82 c8 82 a2 0d 0a 09 7d 0d 0a 09 65 6c ..........}...el
1320: 73 65 20 69 66 28 20 75 64 53 63 72 5f 74 6c 5f se if( udScr_tl_
1330: 20 3d 3d 20 73 2e 74 6c 20 29 0d 0a 09 7b 0d 0a == s.tl )...{..
1340: 09 09 2f 2f 20 83 70 83 5e 81 5b 83 93 82 51 81 ..// .p.^.[...Q.
1350: 46 8c bb 8d dd 82 cc 89 e6 96 ca 8f e3 92 5b 82 F.............[.
1360: c6 93 af 82 b6 8d 73 82 c5 8d 58 90 56 82 b3 82 ......s...X.V...
1370: ea 82 bd 8f ea 8d 87 0d 0a 09 09 2f 2f 20 8f 6f ...........// .o
1380: 97 88 82 e9 82 be 82 af 93 af 82 b6 88 ca 92 75 ...............u
1390: 82 f0 95 5c 8e a6 82 b5 91 b1 82 af 82 e6 82 a4 ...\............
13a0: 82 c6 8e 8e 82 dd 82 e9 81 42 0d 0a 0d 0a 09 09 .........B......
13b0: 69 66 28 20 73 74 61 74 69 63 5f 63 61 73 74 3c if( static_cast<
13c0: 75 6c 6f 6e 67 3e 28 75 64 53 63 72 5f 2e 6e 50 ulong>(udScr_.nP
13d0: 6f 73 29 20 3e 3d 20 76 6c 6e 28 29 20 29 0d 0a os) >= vln() )..
13e0: 09 09 7b 0d 0a 09 09 09 2f 2f 20 83 70 83 5e 81 ..{.....// .p.^.
13f0: 5b 83 93 32 2d 31 81 46 82 b5 82 a9 82 b5 82 bb [..2-1.F........
1400: 82 b1 82 cd 82 b7 82 c5 82 c9 45 4f 46 82 e6 82 ..........EOF...
1410: e8 82 e0 89 ba 82 be 81 49 0d 0a 09 09 09 2f 2f ........I.....//
1420: 20 82 b5 82 e1 81 5b 82 c8 82 a2 82 cc 82 c5 88 .....[.........
1430: ea 94 d4 89 ba 82 cc 8d 73 82 f0 95 5c 8e a6 0d ........s...\...
1440: 0a 09 09 09 75 64 53 63 72 5f 2e 6e 50 6f 73 20 ....udScr_.nPos
1450: 3d 20 76 6c 6e 28 29 2d 31 3b 0d 0a 09 09 09 75 = vln()-1;.....u
1460: 64 53 63 72 5f 74 6c 5f 20 20 20 3d 20 64 6f 63 dScr_tl_ = doc
1470: 5f 2e 74 6c 6e 28 29 2d 31 3b 0d 0a 09 09 09 75 _.tln()-1;.....u
1480: 64 53 63 72 5f 76 72 6c 5f 20 20 3d 20 72 6c 6e dScr_vrl_ = rln
1490: 28 75 64 53 63 72 5f 74 6c 5f 29 2d 31 3b 0d 0a (udScr_tl_)-1;..
14a0: 09 09 09 61 6e 73 20 3d 20 41 4c 4c 3b 0d 0a 09 ...ans = ALL;...
14b0: 09 7d 0d 0a 09 09 65 6c 73 65 0d 0a 09 09 7b 0d .}....else....{.
14c0: 0a 09 09 09 2f 2f 20 83 70 83 5e 81 5b 83 93 32 ....// .p.^.[..2
14d0: 2d 32 81 46 0d 0a 09 09 09 2f 2f 20 83 58 83 4e -2.F.....// .X.N
14e0: 83 8d 81 5b 83 8b 96 b3 82 b5 0d 0a 09 09 09 77 ...[...........w
14f0: 68 69 6c 65 28 20 75 64 53 63 72 5f 76 72 6c 5f hile( udScr_vrl_
1500: 20 3e 3d 20 72 6c 6e 28 75 64 53 63 72 5f 74 6c >= rln(udScr_tl
1510: 5f 29 20 29 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 _) ).....{......
1520: 75 64 53 63 72 5f 76 72 6c 5f 20 2d 3d 20 72 6c udScr_vrl_ -= rl
1530: 6e 28 75 64 53 63 72 5f 74 6c 5f 29 3b 0d 0a 09 n(udScr_tl_);...
1540: 09 09 09 75 64 53 63 72 5f 74 6c 5f 2b 2b 3b 0d ...udScr_tl_++;.
1550: 0a 09 09 09 7d 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a ....}....}...}..
1560: 09 65 6c 73 65 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 .else...{....//
1570: 83 70 83 5e 81 5b 83 93 82 52 81 46 8c bb 8d dd .p.^.[...R.F....
1580: 82 cc 89 e6 96 ca 8f e3 92 5b 82 e6 82 e8 8f e3 .........[......
1590: 82 c5 8d 58 90 56 82 b3 82 ea 82 bd 8f ea 8d 87 ...X.V..........
15a0: 0d 0a 09 09 2f 2f 20 95 5c 8e a6 93 e0 97 65 82 ....// .\.....e.
15b0: f0 95 cf 82 a6 82 c8 82 a2 82 e6 82 a4 82 c9 8a ................
15c0: e6 92 a3 82 e9 0d 0a 0d 0a 09 09 69 66 28 20 65 ...........if( e
15d0: 2e 74 6c 20 3c 20 75 64 53 63 72 5f 74 6c 5f 20 .tl < udScr_tl_
15e0: 29 0d 0a 09 09 7b 0d 0a 09 09 09 2f 2f 20 83 70 )....{.....// .p
15f0: 83 5e 81 5b 83 93 33 2d 31 81 46 95 cf 8d 58 94 .^.[..3-1.F...X.
1600: cd 88 cd 82 cc 8f 49 92 5b 82 e0 81 41 8c bb 8d ......I.[...A...
1610: dd 8d 73 82 e6 82 e8 8f e3 82 cc 8f ea 8d 87 0d ..s.............
1620: 0a 09 09 09 2f 2f 20 8d 73 94 d4 8d 86 82 cd 95 ....// .s.......
1630: cf 82 ed 82 e9 82 aa 95 5c 8e a6 93 e0 97 65 82 ........\.....e.
1640: cd 95 cf 82 ed 82 e7 82 c8 82 a2 82 c5 8d cf 82 ................
1650: de 0d 0a 09 09 09 75 64 53 63 72 5f 2e 6e 50 6f ......udScr_.nPo
1660: 73 20 2b 3d 20 76 6c 5f 64 69 66 3b 0d 0a 09 09 s += vl_dif;....
1670: 09 75 64 53 63 72 5f 74 6c 5f 20 20 20 2b 3d 20 .udScr_tl_ +=
1680: 28 65 32 2e 74 6c 20 2d 20 65 2e 74 6c 29 3b 0d (e2.tl - e.tl);.
1690: 0a 09 09 09 61 6e 73 20 3d 20 4c 4e 41 52 45 41 ....ans = LNAREA
16a0: 3b 0d 0a 09 09 7d 0d 0a 09 09 65 6c 73 65 0d 0a ;....}....else..
16b0: 09 09 7b 0d 0a 09 09 09 2f 2f 20 83 70 83 5e 81 ..{.....// .p.^.
16c0: 5b 83 93 33 2d 32 81 46 0d 0a 09 09 09 2f 2f 20 [..3-2.F.....//
16d0: 82 c7 82 a4 82 b5 82 e6 81 5b 82 e0 82 c8 82 a2 .........[......
16e0: 82 cc 82 c5 93 4b 93 96 82 c8 88 ca 92 75 82 c9 .....K.......u..
16f0: 83 58 83 4e 83 8d 81 5b 83 8b 0d 0a 09 09 09 46 .X.N...[.......F
1700: 6f 72 63 65 53 63 72 6f 6c 6c 54 6f 28 20 65 32 orceScrollTo( e2
1710: 2e 74 6c 20 29 3b 0d 0a 09 09 09 61 6e 73 20 3d .tl );.....ans =
1720: 20 41 4c 4c 3b 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a ALL;....}...}..
1730: 0d 0a 09 2f 2f 20 82 c7 82 f1 82 c8 8d c4 95 60 ...// .........`
1740: 89 e6 82 f0 82 b7 82 ea 82 ce 82 e6 82 a2 82 a9 ................
1750: 95 d4 82 b7 0d 0a 09 72 65 74 75 72 6e 20 28 72 .......return (r
1760: 6c 53 63 72 6f 6c 6c 65 64 20 3f 20 41 4c 4c 20 lScrolled ? ALL
1770: 3a 20 61 6e 73 29 3b 0d 0a 7d 0d 0a 0d 0a 76 6f : ans);..}....vo
1780: 69 64 20 56 69 65 77 49 6d 70 6c 3a 3a 53 63 72 id ViewImpl::Scr
1790: 6f 6c 6c 54 6f 28 20 63 6f 6e 73 74 20 56 50 6f ollTo( const VPo
17a0: 73 26 20 76 70 20 29 0d 0a 7b 0d 0a 09 2f 2f 20 s& vp )..{...//
17b0: 89 a1 83 74 83 48 81 5b 83 4a 83 58 0d 0a 09 69 ...t.H.[.J.X...i
17c0: 6e 74 20 64 78 3d 30 3b 0d 0a 09 69 66 28 20 76 nt dx=0;...if( v
17d0: 70 2e 76 78 20 3c 20 28 73 69 67 6e 65 64 29 72 p.vx < (signed)r
17e0: 6c 53 63 72 5f 2e 6e 50 6f 73 20 29 0d 0a 09 7b lScr_.nPos )...{
17f0: 0d 0a 09 09 64 78 20 3d 20 76 70 2e 76 78 20 2d ....dx = vp.vx -
1800: 20 72 6c 53 63 72 5f 2e 6e 50 6f 73 3b 0d 0a 09 rlScr_.nPos;...
1810: 7d 0d 0a 09 65 6c 73 65 0d 0a 09 7b 0d 0a 09 09 }...else...{....
1820: 63 6f 6e 73 74 20 69 6e 74 20 57 20 3d 20 63 76 const int W = cv
1830: 73 5f 2e 67 65 74 50 61 69 6e 74 65 72 28 29 2e s_.getPainter().
1840: 57 28 29 3b 0d 0a 09 09 69 66 28 20 72 6c 53 63 W();....if( rlSc
1850: 72 5f 2e 6e 50 6f 73 20 2b 20 28 73 69 67 6e 65 r_.nPos + (signe
1860: 64 29 28 72 6c 53 63 72 5f 2e 6e 50 61 67 65 2d d)(rlScr_.nPage-
1870: 57 29 20 3c 3d 20 76 70 2e 76 78 20 29 0d 0a 09 W) <= vp.vx )...
1880: 09 09 64 78 20 3d 20 76 70 2e 76 78 20 2d 20 28 ..dx = vp.vx - (
1890: 72 6c 53 63 72 5f 2e 6e 50 6f 73 20 2b 20 72 6c rlScr_.nPos + rl
18a0: 53 63 72 5f 2e 6e 50 61 67 65 29 20 2b 20 57 3b Scr_.nPage) + W;
18b0: 0d 0a 09 7d 0d 0a 0d 0a 09 2f 2f 20 8f 63 83 74 ...}.....// .c.t
18c0: 83 48 81 5b 83 4a 83 58 0d 0a 09 69 6e 74 20 64 .H.[.J.X...int d
18d0: 79 3d 30 3b 0d 0a 09 69 66 28 20 76 70 2e 76 6c y=0;...if( vp.vl
18e0: 20 3c 20 28 75 6e 73 69 67 6e 65 64 29 75 64 53 < (unsigned)udS
18f0: 63 72 5f 2e 6e 50 6f 73 20 29 0d 0a 09 09 64 79 cr_.nPos )....dy
1900: 20 3d 20 76 70 2e 76 6c 20 2d 20 75 64 53 63 72 = vp.vl - udScr
1910: 5f 2e 6e 50 6f 73 3b 0d 0a 09 65 6c 73 65 20 69 _.nPos;...else i
1920: 66 28 20 75 64 53 63 72 5f 2e 6e 50 6f 73 20 2b f( udScr_.nPos +
1930: 20 28 75 64 53 63 72 5f 2e 6e 50 61 67 65 2d 31 (udScr_.nPage-1
1940: 29 20 3c 3d 20 76 70 2e 76 6c 20 29 0d 0a 09 09 ) <= vp.vl )....
1950: 64 79 20 3d 20 76 70 2e 76 6c 20 2d 20 28 75 64 dy = vp.vl - (ud
1960: 53 63 72 5f 2e 6e 50 6f 73 20 2b 20 75 64 53 63 Scr_.nPos + udSc
1970: 72 5f 2e 6e 50 61 67 65 29 20 2b 20 32 3b 0d 0a r_.nPage) + 2;..
1980: 0d 0a 09 2f 2f 20 83 58 83 4e 83 8d 81 5b 83 8b ...// .X.N...[..
1990: 0d 0a 09 69 66 28 20 64 79 21 3d 30 20 29 09 55 ...if( dy!=0 ).U
19a0: 70 44 6f 77 6e 28 20 64 79 2c 20 64 78 3d 3d 30 pDown( dy, dx==0
19b0: 20 29 3b 0d 0a 09 69 66 28 20 64 78 21 3d 30 20 );...if( dx!=0
19c0: 29 09 53 63 72 6f 6c 6c 56 69 65 77 28 20 64 78 ).ScrollView( dx
19d0: 2c 20 30 2c 20 74 72 75 65 20 29 3b 0d 0a 7d 0d , 0, true );..}.
19e0: 0a 0d 0a 76 6f 69 64 20 56 69 65 77 49 6d 70 6c ...void ViewImpl
19f0: 3a 3a 47 65 74 44 72 61 77 50 6f 73 49 6e 66 6f ::GetDrawPosInfo
1a00: 28 20 56 44 72 61 77 49 6e 66 6f 26 20 76 20 29 ( VDrawInfo& v )
1a10: 20 63 6f 6e 73 74 0d 0a 7b 0d 0a 09 63 6f 6e 73 const..{...cons
1a20: 74 20 69 6e 74 20 48 20 3d 20 63 76 73 5f 2e 67 t int H = cvs_.g
1a30: 65 74 50 61 69 6e 74 65 72 28 29 2e 48 28 29 3b etPainter().H();
1a40: 0d 0a 0d 0a 09 6c 6f 6e 67 20 6d 6f 73 74 5f 75 .....long most_u
1a50: 6e 64 65 72 20 3d 20 28 76 6c 6e 28 29 2d 75 64 nder = (vln()-ud
1a60: 53 63 72 5f 2e 6e 50 6f 73 29 2a 48 3b 0d 0a 09 Scr_.nPos)*H;...
1a70: 69 66 28 20 6d 6f 73 74 5f 75 6e 64 65 72 20 3c if( most_under <
1a80: 3d 20 76 2e 72 63 2e 74 6f 70 20 29 0d 0a 09 7b = v.rc.top )...{
1a90: 0d 0a 09 09 76 2e 59 4d 49 4e 20 20 3d 20 76 2e ....v.YMIN = v.
1aa0: 72 63 2e 74 6f 70 3b 0d 0a 09 09 76 2e 59 4d 41 rc.top;....v.YMA
1ab0: 58 20 20 3d 20 6d 6f 73 74 5f 75 6e 64 65 72 3b X = most_under;
1ac0: 0d 0a 09 7d 0d 0a 09 65 6c 73 65 0d 0a 09 7b 0d ...}...else...{.
1ad0: 0a 09 09 69 6e 74 20 20 20 20 79 20 3d 20 2d 28 ...int y = -(
1ae0: 73 69 67 6e 65 64 29 75 64 53 63 72 5f 76 72 6c signed)udScr_vrl
1af0: 5f 3b 0d 0a 09 09 75 6c 6f 6e 67 20 74 6c 20 3d _;....ulong tl =
1b00: 20 75 64 53 63 72 5f 74 6c 5f 3b 0d 0a 09 09 69 udScr_tl_;....i
1b10: 6e 74 20 20 74 6f 70 20 3d 20 76 2e 72 63 2e 74 nt top = v.rc.t
1b20: 6f 70 20 2f 20 48 3b 0d 0a 09 09 77 68 69 6c 65 op / H;....while
1b30: 28 20 79 20 2b 20 28 73 69 67 6e 65 64 29 72 6c ( y + (signed)rl
1b40: 6e 28 74 6c 29 20 3c 3d 20 74 6f 70 20 29 0d 0a n(tl) <= top )..
1b50: 09 09 09 79 20 2b 3d 20 72 6c 6e 28 20 74 6c 2b ...y += rln( tl+
1b60: 2b 20 29 3b 0d 0a 0d 0a 09 09 2f 2f 20 8f 63 8d + );......// .c.
1b70: c0 95 57 0d 0a 09 09 76 2e 59 4d 49 4e 20 20 3d ..W....v.YMIN =
1b80: 20 79 20 2a 20 48 3b 0d 0a 09 09 76 2e 59 4d 41 y * H;....v.YMA
1b90: 58 20 20 3d 20 4d 69 6e 28 20 76 2e 72 63 2e 62 X = Min( v.rc.b
1ba0: 6f 74 74 6f 6d 2c 20 6d 6f 73 74 5f 75 6e 64 65 ottom, most_unde
1bb0: 72 20 29 3b 0d 0a 09 09 76 2e 54 4c 4d 49 4e 20 r );....v.TLMIN
1bc0: 3d 20 74 6c 3b 0d 0a 0d 0a 09 09 2f 2f 20 89 a1 = tl;......// ..
1bd0: 8d c0 95 57 0d 0a 09 09 76 2e 58 42 41 53 45 20 ...W....v.XBASE
1be0: 3d 20 6c 65 66 74 28 29 20 2d 20 72 6c 53 63 72 = left() - rlScr
1bf0: 5f 2e 6e 50 6f 73 3b 0d 0a 09 09 76 2e 58 4d 49 _.nPos;....v.XMI
1c00: 4e 20 20 3d 20 76 2e 72 63 2e 6c 65 66 74 20 20 N = v.rc.left
1c10: 2d 20 76 2e 58 42 41 53 45 3b 0d 0a 09 09 76 2e - v.XBASE;....v.
1c20: 58 4d 41 58 20 20 3d 20 76 2e 72 63 2e 72 69 67 XMAX = v.rc.rig
1c30: 68 74 20 2d 20 76 2e 58 42 41 53 45 3b 0d 0a 0d ht - v.XBASE;...
1c40: 0a 09 09 2f 2f 20 91 49 91 f0 94 cd 88 cd 0d 0a ...// .I........
1c50: 09 09 76 2e 53 58 42 20 3d 20 76 2e 53 58 45 20 ..v.SXB = v.SXE
1c60: 3d 20 76 2e 53 59 42 20 3d 20 76 2e 53 59 45 20 = v.SYB = v.SYE
1c70: 3d 20 30 78 37 66 66 66 66 66 66 66 3b 0d 0a 0d = 0x7fffffff;...
1c80: 0a 09 09 63 6f 6e 73 74 20 56 50 6f 73 20 2a 62 ...const VPos *b
1c90: 67 2c 20 2a 65 64 3b 0d 0a 09 09 69 66 28 20 63 g, *ed;....if( c
1ca0: 75 72 5f 2e 67 65 74 43 75 72 50 6f 73 28 20 26 ur_.getCurPos( &
1cb0: 62 67 2c 20 26 65 64 20 29 20 29 0d 0a 09 09 7b bg, &ed ) )....{
1cc0: 0d 0a 09 09 09 76 2e 53 58 42 20 3d 20 62 67 2d .....v.SXB = bg-
1cd0: 3e 76 78 20 2d 20 72 6c 53 63 72 5f 2e 6e 50 6f >vx - rlScr_.nPo
1ce0: 73 20 2b 20 6c 65 66 74 28 29 3b 0d 0a 09 09 09 s + left();.....
1cf0: 76 2e 53 58 45 20 3d 20 65 64 2d 3e 76 78 20 2d v.SXE = ed->vx -
1d00: 20 72 6c 53 63 72 5f 2e 6e 50 6f 73 20 2b 20 6c rlScr_.nPos + l
1d10: 65 66 74 28 29 3b 0d 0a 09 09 09 76 2e 53 59 42 eft();.....v.SYB
1d20: 20 3d 20 28 62 67 2d 3e 76 6c 20 2d 20 75 64 53 = (bg->vl - udS
1d30: 63 72 5f 2e 6e 50 6f 73 29 20 2a 20 48 3b 0d 0a cr_.nPos) * H;..
1d40: 09 09 09 76 2e 53 59 45 20 3d 20 28 65 64 2d 3e ...v.SYE = (ed->
1d50: 76 6c 20 2d 20 75 64 53 63 72 5f 2e 6e 50 6f 73 vl - udScr_.nPos
1d60: 29 20 2a 20 48 3b 0d 0a 09 09 7d 0d 0a 09 7d 0d ) * H;....}...}.
1d70: 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 56 69 65 77 49 .}....void ViewI
1d80: 6d 70 6c 3a 3a 53 63 72 6f 6c 6c 56 69 65 77 28 mpl::ScrollView(
1d90: 20 69 6e 74 20 64 78 2c 20 69 6e 74 20 64 79 2c int dx, int dy,
1da0: 20 62 6f 6f 6c 20 75 70 64 61 74 65 20 29 0d 0a bool update )..
1db0: 7b 0d 0a 09 2f 2f 20 83 58 83 4e 83 8d 81 5b 83 {...// .X.N...[.
1dc0: 8b 8a 4a 8e 6e 92 ca 92 6d 0d 0a 09 63 75 72 5f ..J.n...m...cur_
1dd0: 2e 6f 6e 5f 73 63 72 6f 6c 6c 5f 62 65 67 69 6e .on_scroll_begin
1de0: 28 29 3b 0d 0a 0d 0a 09 63 6f 6e 73 74 20 52 45 ();.....const RE
1df0: 43 54 2a 20 63 6c 69 70 20 3d 20 28 64 79 3d 3d CT* clip = (dy==
1e00: 30 20 3f 20 26 63 76 73 5f 2e 7a 6f 6e 65 28 29 0 ? &cvs_.zone()
1e10: 20 3a 20 4e 55 4c 4c 29 3b 0d 0a 09 63 6f 6e 73 : NULL);...cons
1e20: 74 20 69 6e 74 20 48 20 3d 20 63 76 73 5f 2e 67 t int H = cvs_.g
1e30: 65 74 50 61 69 6e 74 65 72 28 29 2e 48 28 29 3b etPainter().H();
1e40: 0d 0a 0d 0a 09 2f 2f 20 83 58 83 4e 83 8d 81 5b .....// .X.N...[
1e50: 83 8b 83 6f 81 5b 8d 58 90 56 0d 0a 09 69 66 28 ...o.[.X.V...if(
1e60: 20 64 78 20 21 3d 20 30 20 29 0d 0a 09 7b 0d 0a dx != 0 )...{..
1e70: 09 09 2f 2f 20 94 cd 88 cd 83 60 83 46 83 62 83 ..// .....`.F.b.
1e80: 4e 0d 0a 09 09 69 66 28 20 72 6c 53 63 72 5f 2e N....if( rlScr_.
1e90: 6e 50 6f 73 2b 64 78 20 3c 20 30 20 29 0d 0a 09 nPos+dx < 0 )...
1ea0: 09 09 64 78 20 3d 20 2d 72 6c 53 63 72 5f 2e 6e ..dx = -rlScr_.n
1eb0: 50 6f 73 3b 0d 0a 09 09 65 6c 73 65 20 69 66 28 Pos;....else if(
1ec0: 20 72 6c 53 63 72 5f 2e 6e 4d 61 78 2d 28 73 69 rlScr_.nMax-(si
1ed0: 67 6e 65 64 29 72 6c 53 63 72 5f 2e 6e 50 61 67 gned)rlScr_.nPag
1ee0: 65 20 3c 20 72 6c 53 63 72 5f 2e 6e 50 6f 73 2b e < rlScr_.nPos+
1ef0: 64 78 20 29 20 0d 0a 09 09 09 64 78 20 3d 20 72 dx ) .....dx = r
1f00: 6c 53 63 72 5f 2e 6e 4d 61 78 2d 72 6c 53 63 72 lScr_.nMax-rlScr
1f10: 5f 2e 6e 50 61 67 65 2d 72 6c 53 63 72 5f 2e 6e _.nPage-rlScr_.n
1f20: 50 6f 73 2b 31 3b 0d 0a 0d 0a 09 09 72 6c 53 63 Pos+1;......rlSc
1f30: 72 5f 2e 6e 50 6f 73 20 2b 3d 20 64 78 3b 0d 0a r_.nPos += dx;..
1f40: 09 09 3a 3a 53 65 74 53 63 72 6f 6c 6c 49 6e 66 ..::SetScrollInf
1f50: 6f 28 20 68 77 6e 64 5f 2c 20 53 42 5f 48 4f 52 o( hwnd_, SB_HOR
1f60: 5a 2c 20 26 72 6c 53 63 72 5f 2c 20 54 52 55 45 Z, &rlScr_, TRUE
1f70: 20 29 3b 0d 0a 09 09 64 78 20 3d 20 2d 64 78 3b );....dx = -dx;
1f80: 0d 0a 09 7d 0d 0a 09 69 66 28 20 64 79 20 21 3d ...}...if( dy !=
1f90: 20 30 20 29 0d 0a 09 7b 0d 0a 09 09 2f 2f 20 94 0 )...{....// .
1fa0: cd 88 cd 83 60 83 46 83 62 83 4e 81 63 82 cd 91 ....`.F.b.N.c...
1fb0: 4f 8f 88 97 9d 82 c5 8f 49 82 ed 82 c1 82 c4 82 O.......I.......
1fc0: e9 81 42 0d 0a 0d 0a 09 09 75 64 53 63 72 5f 2e ..B......udScr_.
1fd0: 6e 50 6f 73 20 2b 3d 20 64 79 3b 0d 0a 09 09 3a nPos += dy;....:
1fe0: 3a 53 65 74 53 63 72 6f 6c 6c 49 6e 66 6f 28 20 :SetScrollInfo(
1ff0: 68 77 6e 64 5f 2c 20 53 42 5f 56 45 52 54 2c 20 hwnd_, SB_VERT,
2000: 26 75 64 53 63 72 5f 2c 20 54 52 55 45 20 29 3b &udScr_, TRUE );
2010: 0d 0a 09 09 64 79 20 2a 3d 20 2d 48 3b 0d 0a 09 ....dy *= -H;...
2020: 7d 0d 0a 09 69 66 28 20 64 78 21 3d 30 20 7c 7c }...if( dx!=0 ||
2030: 20 64 79 21 3d 30 20 29 0d 0a 09 7b 0d 0a 09 09 dy!=0 )...{....
2040: 69 66 28 20 2d 64 78 3e 3d 72 69 67 68 74 28 29 if( -dx>=right()
2050: 20 7c 7c 20 64 78 3e 3d 72 69 67 68 74 28 29 0d || dx>=right().
2060: 0a 09 09 20 7c 7c 20 2d 64 79 3e 3d 62 6f 74 74 ... || -dy>=bott
2070: 6f 6d 28 29 20 7c 7c 20 64 79 3e 3d 62 6f 74 74 om() || dy>=bott
2080: 6f 6d 28 29 20 29 0d 0a 09 09 7b 0d 0a 09 09 09 om() )....{.....
2090: 2f 2f 20 91 53 89 e6 96 ca 8d c4 95 60 89 e6 0d // .S.......`...
20a0: 0a 09 09 09 2f 2f 20 82 bf 82 e5 82 a4 82 c7 36 ....// ........6
20b0: 35 35 33 36 82 cc 94 7b 90 94 82 ad 82 e7 82 a2 5536...{........
20c0: 83 58 83 4e 83 8d 81 5b 83 8b 82 b5 82 bd 82 c6 .X.N...[........
20d0: 82 ab 82 c9 81 41 0d 0a 09 09 09 2f 2f 20 53 63 .....A.....// Sc
20e0: 72 6f 6c 6c 57 69 6e 64 6f 77 45 78 20 6f 6e 20 rollWindowEx on
20f0: 57 69 6e 39 78 20 82 be 82 c6 8d c4 95 60 89 e6 Win9x .......`..
2100: 82 aa 95 cf 82 c8 82 cc 82 f0 89 f1 94 f0 81 42 ...............B
2110: 0d 0a 09 09 09 3a 3a 49 6e 76 61 6c 69 64 61 74 .....::Invalidat
2120: 65 52 65 63 74 28 20 68 77 6e 64 5f 2c 20 4e 55 eRect( hwnd_, NU
2130: 4c 4c 2c 20 46 41 4c 53 45 20 29 3b 0d 0a 09 09 LL, FALSE );....
2140: 7d 0d 0a 09 09 65 6c 73 65 0d 0a 09 09 7b 0d 0a }....else....{..
2150: 09 09 09 2f 2f 20 8d c4 95 60 89 e6 82 cc 95 73 ...// ...`.....s
2160: 97 76 82 c8 97 cc 88 e6 82 f0 83 58 83 4e 83 8d .v.........X.N..
2170: 81 5b 83 8b 0d 0a 09 09 09 3a 3a 53 63 72 6f 6c .[.......::Scrol
2180: 6c 57 69 6e 64 6f 77 45 78 28 20 68 77 6e 64 5f lWindowEx( hwnd_
2190: 2c 20 64 78 2c 20 64 79 2c 20 4e 55 4c 4c 2c 20 , dx, dy, NULL,
21a0: 0d 0a 09 09 09 09 09 63 6c 69 70 2c 20 4e 55 4c .......clip, NUL
21b0: 4c 2c 20 4e 55 4c 4c 2c 20 53 57 5f 49 4e 56 41 L, NULL, SW_INVA
21c0: 4c 49 44 41 54 45 20 29 3b 0d 0a 0d 0a 09 09 09 LIDATE );.......
21d0: 2f 2f 20 91 a6 8e 9e 8d c4 95 60 89 e6 81 48 0d // .......`...H.
21e0: 0a 09 09 09 69 66 28 20 75 70 64 61 74 65 20 29 ....if( update )
21f0: 0d 0a 09 09 09 7b 0d 0a 09 09 09 09 2f 2f 20 8f .....{......// .
2200: 63 83 58 83 4e 83 8d 81 5b 83 8b 82 cd 8d 82 91 c.X.N...[.......
2210: ac 89 bb 82 b5 82 bd 82 a2 82 cc 82 c5 88 ea 8d ................
2220: 48 95 76 0d 0a 09 09 09 09 69 66 28 20 64 79 20 H.v......if( dy
2230: 21 3d 20 30 20 29 0d 0a 09 09 09 09 7b 0d 0a 09 != 0 )......{...
2240: 09 09 09 09 2f 2f 20 8d c4 95 60 89 e6 82 cc 95 ....// ...`.....
2250: 4b 97 76 82 c8 97 cc 88 e6 82 f0 8e a9 95 aa 82 K.v.............
2260: c5 8c 76 8e 5a 0d 0a 09 09 09 09 09 52 45 43 54 ..v.Z.......RECT
2270: 20 72 63 20 3d 20 7b 30 2c 30 2c 72 69 67 68 74 rc = {0,0,right
2280: 28 29 2c 62 6f 74 74 6f 6d 28 29 7d 3b 0d 0a 09 (),bottom()};...
2290: 09 09 09 09 69 66 28 20 64 79 20 3c 20 30 20 29 ....if( dy < 0 )
22a0: 20 72 63 2e 74 6f 70 20 20 3d 20 72 63 2e 62 6f rc.top = rc.bo
22b0: 74 74 6f 6d 20 2b 20 64 79 3b 0d 0a 09 09 09 09 ttom + dy;......
22c0: 09 65 6c 73 65 20 20 20 20 20 20 20 20 20 72 63 .else rc
22d0: 2e 62 6f 74 74 6f 6d 20 3d 20 64 79 3b 0d 0a 0d .bottom = dy;...
22e0: 0a 09 09 09 09 09 2f 2f 20 83 43 83 93 83 65 83 ......// .C...e.
22f0: 8a 83 7d 83 45 83 58 82 cc 92 86 83 7b 83 5e 83 ..}.E.X.....{.^.
2300: 93 83 4e 83 8a 83 62 83 4e 82 c9 82 e6 82 e9 0d ..N...b.N.......
2310: 0a 09 09 09 09 09 2f 2f 20 83 49 81 5b 83 67 83 ......// .I.[.g.
2320: 58 83 4e 83 8d 81 5b 83 8b 97 70 83 4a 81 5b 83 X.N...[...p.J.[.
2330: 5c 83 8b 82 cc 89 ba 82 cc 95 94 95 aa 82 f0 90 \...............
2340: e6 82 c9 95 60 82 ad 0d 0a 09 09 09 09 09 2f 2f ....`.........//
2350: 20 82 51 89 f1 82 c9 95 aa 82 af 82 e9 82 b1 82 .Q.............
2360: c6 82 c5 81 41 8f ac 82 b3 82 c8 8b e9 8c 60 95 ....A.........`.
2370: 94 95 aa 93 f1 82 c2 82 c5 8d cf 82 de 82 cc 82 ................
2380: c5 8d 82 91 ac 0d 0a 09 09 09 09 09 3a 3a 56 61 ............::Va
2390: 6c 69 64 61 74 65 52 65 63 74 28 20 68 77 6e 64 lidateRect( hwnd
23a0: 5f 2c 20 26 72 63 20 29 3b 0d 0a 09 09 09 09 09 _, &rc );.......
23b0: 3a 3a 55 70 64 61 74 65 57 69 6e 64 6f 77 28 20 ::UpdateWindow(
23c0: 68 77 6e 64 5f 20 29 3b 0d 0a 09 09 09 09 09 3a hwnd_ );.......:
23d0: 3a 49 6e 76 61 6c 69 64 61 74 65 52 65 63 74 28 :InvalidateRect(
23e0: 20 68 77 6e 64 5f 2c 20 26 72 63 2c 20 46 41 4c hwnd_, &rc, FAL
23f0: 53 45 20 29 3b 0d 0a 09 09 09 09 7d 0d 0a 09 09 SE );......}....
2400: 09 09 3a 3a 55 70 64 61 74 65 57 69 6e 64 6f 77 ..::UpdateWindow
2410: 28 20 68 77 6e 64 5f 20 29 3b 0d 0a 09 09 09 7d ( hwnd_ );.....}
2420: 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 0d 0a 09 2f 2f ....}...}.....//
2430: 20 83 58 83 4e 83 8d 81 5b 83 8b 8f 49 97 b9 92 .X.N...[...I...
2440: ca 92 6d 0d 0a 09 63 75 72 5f 2e 6f 6e 5f 73 63 ..m...cur_.on_sc
2450: 72 6f 6c 6c 5f 65 6e 64 28 29 3b 0d 0a 7d 0d 0a roll_end();..}..
2460: 0d 0a 76 6f 69 64 20 56 69 65 77 49 6d 70 6c 3a ..void ViewImpl:
2470: 3a 6f 6e 5f 68 73 63 72 6f 6c 6c 28 20 69 6e 74 :on_hscroll( int
2480: 20 63 6f 64 65 20 29 0d 0a 7b 0d 0a 09 2f 2f 20 code )..{...//
2490: 95 cf 89 bb 97 ca 82 f0 8c 76 8e 5a 0d 0a 09 69 .........v.Z...i
24a0: 6e 74 20 64 78 3b 0d 0a 09 73 77 69 74 63 68 28 nt dx;...switch(
24b0: 20 63 6f 64 65 20 29 0d 0a 09 7b 0d 0a 09 64 65 code )...{...de
24c0: 66 61 75 6c 74 3a 20 20 20 20 20 20 20 20 20 20 fault:
24d0: 20 72 65 74 75 72 6e 3b 0d 0a 09 63 61 73 65 20 return;...case
24e0: 53 42 5f 4c 49 4e 45 4c 45 46 54 3a 20 20 64 78 SB_LINELEFT: dx
24f0: 3d 20 2d 63 76 73 5f 2e 67 65 74 50 61 69 6e 74 = -cvs_.getPaint
2500: 65 72 28 29 2e 57 28 29 3b 20 62 72 65 61 6b 3b er().W(); break;
2510: 0d 0a 09 63 61 73 65 20 53 42 5f 4c 49 4e 45 52 ...case SB_LINER
2520: 49 47 48 54 3a 20 64 78 3d 20 2b 63 76 73 5f 2e IGHT: dx= +cvs_.
2530: 67 65 74 50 61 69 6e 74 65 72 28 29 2e 57 28 29 getPainter().W()
2540: 3b 20 62 72 65 61 6b 3b 0d 0a 09 63 61 73 65 20 ; break;...case
2550: 53 42 5f 50 41 47 45 4c 45 46 54 3a 20 20 64 78 SB_PAGELEFT: dx
2560: 3d 20 2d 28 63 78 28 29 3e 3e 31 29 3b 20 62 72 = -(cx()>>1); br
2570: 65 61 6b 3b 0d 0a 09 63 61 73 65 20 53 42 5f 50 eak;...case SB_P
2580: 41 47 45 52 49 47 48 54 3a 20 64 78 3d 20 2b 28 AGERIGHT: dx= +(
2590: 63 78 28 29 3e 3e 31 29 3b 20 62 72 65 61 6b 3b cx()>>1); break;
25a0: 0d 0a 09 63 61 73 65 20 53 42 5f 54 48 55 4d 42 ...case SB_THUMB
25b0: 54 52 41 43 4b 3a 0d 0a 09 09 7b 0d 0a 09 09 09 TRACK:....{.....
25c0: 53 43 52 4f 4c 4c 49 4e 46 4f 20 73 69 20 3d 20 SCROLLINFO si =
25d0: 7b 20 73 69 7a 65 6f 66 28 53 43 52 4f 4c 4c 49 { sizeof(SCROLLI
25e0: 4e 46 4f 29 2c 20 53 49 46 5f 54 52 41 43 4b 50 NFO), SIF_TRACKP
25f0: 4f 53 20 7d 3b 0d 0a 09 09 09 3a 3a 47 65 74 53 OS };.....::GetS
2600: 63 72 6f 6c 6c 49 6e 66 6f 28 20 68 77 6e 64 5f crollInfo( hwnd_
2610: 2c 20 53 42 5f 48 4f 52 5a 2c 20 26 73 69 20 29 , SB_HORZ, &si )
2620: 3b 0d 0a 09 09 09 64 78 20 3d 20 73 69 2e 6e 54 ;.....dx = si.nT
2630: 72 61 63 6b 50 6f 73 20 2d 20 72 6c 53 63 72 5f rackPos - rlScr_
2640: 2e 6e 50 6f 73 3b 0d 0a 09 09 09 62 72 65 61 6b .nPos;.....break
2650: 3b 0d 0a 09 09 7d 0d 0a 09 63 61 73 65 20 53 42 ;....}...case SB
2660: 5f 4c 45 46 54 3a 20 20 20 20 64 78 20 3d 20 2d _LEFT: dx = -
2670: 72 6c 53 63 72 5f 2e 6e 50 6f 73 3b 20 62 72 65 rlScr_.nPos; bre
2680: 61 6b 3b 0d 0a 09 63 61 73 65 20 53 42 5f 52 49 ak;...case SB_RI
2690: 47 48 54 3a 20 20 20 64 78 20 3d 20 72 6c 53 63 GHT: dx = rlSc
26a0: 72 5f 2e 6e 4d 61 78 2b 31 2d 28 73 69 67 6e 65 r_.nMax+1-(signe
26b0: 64 29 72 6c 53 63 72 5f 2e 6e 50 61 67 65 2d 72 d)rlScr_.nPage-r
26c0: 6c 53 63 72 5f 2e 6e 50 6f 73 3b 20 62 72 65 61 lScr_.nPos; brea
26d0: 6b 3b 0d 0a 09 7d 0d 0a 0d 0a 09 2f 2f 20 83 58 k;...}.....// .X
26e0: 83 4e 83 8d 81 5b 83 8b 0d 0a 09 53 63 72 6f 6c .N...[.....Scrol
26f0: 6c 56 69 65 77 28 20 64 78 2c 20 30 2c 20 63 6f lView( dx, 0, co
2700: 64 65 21 3d 53 42 5f 54 48 55 4d 42 54 52 41 43 de!=SB_THUMBTRAC
2710: 4b 20 29 3b 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 K );..}....void
2720: 56 69 65 77 49 6d 70 6c 3a 3a 6f 6e 5f 76 73 63 ViewImpl::on_vsc
2730: 72 6f 6c 6c 28 20 69 6e 74 20 63 6f 64 65 20 29 roll( int code )
2740: 0d 0a 7b 0d 0a 09 2f 2f 20 95 cf 89 bb 97 ca 82 ..{...// .......
2750: f0 8c 76 8e 5a 0d 0a 09 69 6e 74 20 64 79 3b 0d ..v.Z...int dy;.
2760: 0a 09 73 77 69 74 63 68 28 20 63 6f 64 65 20 29 ..switch( code )
2770: 0d 0a 09 7b 0d 0a 09 64 65 66 61 75 6c 74 3a 20 ...{...default:
2780: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b return;
2790: 0d 0a 09 63 61 73 65 20 53 42 5f 4c 49 4e 45 55 ...case SB_LINEU
27a0: 50 3a 20 20 20 64 79 3d 20 2d 31 3b 20 62 72 65 P: dy= -1; bre
27b0: 61 6b 3b 0d 0a 09 63 61 73 65 20 53 42 5f 4c 49 ak;...case SB_LI
27c0: 4e 45 44 4f 57 4e 3a 20 64 79 3d 20 2b 31 3b 20 NEDOWN: dy= +1;
27d0: 62 72 65 61 6b 3b 0d 0a 09 63 61 73 65 20 53 42 break;...case SB
27e0: 5f 50 41 47 45 55 50 3a 20 20 20 64 79 3d 20 2d _PAGEUP: dy= -
27f0: 28 63 79 28 29 20 2f 20 63 76 73 5f 2e 67 65 74 (cy() / cvs_.get
2800: 50 61 69 6e 74 65 72 28 29 2e 48 28 29 29 3b 20 Painter().H());
2810: 62 72 65 61 6b 3b 0d 0a 09 63 61 73 65 20 53 42 break;...case SB
2820: 5f 50 41 47 45 44 4f 57 4e 3a 20 64 79 3d 20 2b _PAGEDOWN: dy= +
2830: 28 63 79 28 29 20 2f 20 63 76 73 5f 2e 67 65 74 (cy() / cvs_.get
2840: 50 61 69 6e 74 65 72 28 29 2e 48 28 29 29 3b 20 Painter().H());
2850: 62 72 65 61 6b 3b 0d 0a 09 63 61 73 65 20 53 42 break;...case SB
2860: 5f 54 48 55 4d 42 54 52 41 43 4b 3a 0d 0a 09 09 _THUMBTRACK:....
2870: 7b 0d 0a 09 09 09 53 43 52 4f 4c 4c 49 4e 46 4f {.....SCROLLINFO
2880: 20 73 69 20 3d 20 7b 20 73 69 7a 65 6f 66 28 53 si = { sizeof(S
2890: 43 52 4f 4c 4c 49 4e 46 4f 29 2c 20 53 49 46 5f CROLLINFO), SIF_
28a0: 54 52 41 43 4b 50 4f 53 20 7d 3b 0d 0a 09 09 09 TRACKPOS };.....
28b0: 3a 3a 47 65 74 53 63 72 6f 6c 6c 49 6e 66 6f 28 ::GetScrollInfo(
28c0: 20 68 77 6e 64 5f 2c 20 53 42 5f 56 45 52 54 2c hwnd_, SB_VERT,
28d0: 20 26 73 69 20 29 3b 0d 0a 09 09 09 64 79 20 3d &si );.....dy =
28e0: 20 73 69 2e 6e 54 72 61 63 6b 50 6f 73 20 2d 20 si.nTrackPos -
28f0: 75 64 53 63 72 5f 2e 6e 50 6f 73 3b 0d 0a 09 09 udScr_.nPos;....
2900: 09 62 72 65 61 6b 3b 0d 0a 09 09 7d 0d 0a 09 63 .break;....}...c
2910: 61 73 65 20 53 42 5f 54 4f 50 3a 20 20 20 20 20 ase SB_TOP:
2920: 20 64 79 20 3d 20 2d 75 64 53 63 72 5f 2e 6e 50 dy = -udScr_.nP
2930: 6f 73 3b 20 62 72 65 61 6b 3b 0d 0a 09 63 61 73 os; break;...cas
2940: 65 20 53 42 5f 42 4f 54 54 4f 4d 3a 20 20 20 64 e SB_BOTTOM: d
2950: 79 20 3d 20 75 64 53 63 72 5f 2e 6e 4d 61 78 2b y = udScr_.nMax+
2960: 31 2d 28 73 69 67 6e 65 64 29 75 64 53 63 72 5f 1-(signed)udScr_
2970: 2e 6e 50 61 67 65 2d 75 64 53 63 72 5f 2e 6e 50 .nPage-udScr_.nP
2980: 6f 73 3b 20 62 72 65 61 6b 3b 0d 0a 09 7d 0d 0a os; break;...}..
2990: 0d 0a 09 2f 2f 20 83 58 83 4e 83 8d 81 5b 83 8b ...// .X.N...[..
29a0: 0d 0a 09 55 70 44 6f 77 6e 28 20 64 79 2c 20 63 ...UpDown( dy, c
29b0: 6f 64 65 3d 3d 53 42 5f 54 48 55 4d 42 54 52 41 ode==SB_THUMBTRA
29c0: 43 4b 20 29 3b 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 CK );..}....void
29d0: 20 56 69 65 77 49 6d 70 6c 3a 3a 6f 6e 5f 77 68 ViewImpl::on_wh
29e0: 65 65 6c 28 20 73 68 6f 72 74 20 64 65 6c 74 61 eel( short delta
29f0: 20 29 0d 0a 7b 0d 0a 09 2f 2f 20 83 58 83 4e 83 )..{...// .X.N.
2a00: 8d 81 5b 83 8b 0d 0a 09 55 70 44 6f 77 6e 28 20 ..[.....UpDown(
2a10: 2d 64 65 6c 74 61 20 2f 20 57 48 45 45 4c 5f 44 -delta / WHEEL_D
2a20: 45 4c 54 41 20 2a 20 33 2c 20 66 61 6c 73 65 20 ELTA * 3, false
2a30: 29 3b 0d 0a 7d 0d 0a 0d 0a 76 6f 69 64 20 56 69 );..}....void Vi
2a40: 65 77 49 6d 70 6c 3a 3a 55 70 44 6f 77 6e 28 20 ewImpl::UpDown(
2a50: 69 6e 74 20 64 79 2c 20 62 6f 6f 6c 20 74 68 75 int dy, bool thu
2a60: 6d 62 20 29 0d 0a 7b 0d 0a 20 20 2f 2f 20 82 50 mb )..{.. // .P
2a70: 81 44 75 64 53 63 72 5f 2e 6e 50 6f 73 20 2b 20 .DudScr_.nPos +
2a80: 64 79 20 82 aa 90 b3 8f ed 94 cd 88 cd 82 c9 8e dy .............
2a90: fb 82 dc 82 e9 82 e6 82 a4 82 c9 95 e2 90 b3 0d ................
2aa0: 0a 09 69 66 28 20 75 64 53 63 72 5f 2e 6e 50 6f ..if( udScr_.nPo
2ab0: 73 2b 64 79 20 3c 20 30 20 29 0d 0a 09 09 64 79 s+dy < 0 )....dy
2ac0: 20 3d 20 2d 75 64 53 63 72 5f 2e 6e 50 6f 73 3b = -udScr_.nPos;
2ad0: 0d 0a 09 65 6c 73 65 20 69 66 28 20 75 64 53 63 ...else if( udSc
2ae0: 72 5f 2e 6e 4d 61 78 2b 31 2d 28 73 69 67 6e 65 r_.nMax+1-(signe
2af0: 64 29 75 64 53 63 72 5f 2e 6e 50 61 67 65 20 3c d)udScr_.nPage <
2b00: 20 75 64 53 63 72 5f 2e 6e 50 6f 73 2b 64 79 20 udScr_.nPos+dy
2b10: 29 20 0d 0a 09 09 64 79 20 3d 20 75 64 53 63 72 ) ....dy = udScr
2b20: 5f 2e 6e 4d 61 78 2b 31 2d 75 64 53 63 72 5f 2e _.nMax+1-udScr_.
2b30: 6e 50 61 67 65 2d 75 64 53 63 72 5f 2e 6e 50 6f nPage-udScr_.nPo
2b40: 73 3b 0d 0a 09 69 66 28 20 64 79 3d 3d 30 20 29 s;...if( dy==0 )
2b50: 0d 0a 09 09 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 ....return;....
2b60: 20 2f 2f 20 82 51 81 7c 82 50 81 44 90 dc 82 e8 // .Q.|.P.D....
2b70: 95 d4 82 b5 96 b3 82 b5 82 cc 8f ea 8d 87 82 cd ................
2b80: 88 ea 8b 43 82 c9 83 57 83 83 83 93 83 76 8f 6f ...C...W.....v.o
2b90: 97 88 82 e9 0d 0a 09 69 66 28 20 21 77 72 61 70 .......if( !wrap
2ba0: 65 78 69 73 74 73 28 29 20 29 0d 0a 09 7b 0d 0a exists() )...{..
2bb0: 09 09 75 64 53 63 72 5f 74 6c 5f 20 3d 20 75 64 ..udScr_tl_ = ud
2bc0: 53 63 72 5f 2e 6e 50 6f 73 20 2b 20 64 79 3b 0d Scr_.nPos + dy;.
2bd0: 0a 09 7d 0d 0a 0d 0a 20 20 2f 2f 20 82 51 81 7c ..}.... // .Q.|
2be0: 82 51 81 44 82 c5 82 c8 82 af 82 e8 82 e1 81 41 .Q.D...........A
2bf0: 8c bb 8d dd 88 ca 92 75 82 a9 82 e7 82 cc 91 8a .......u........
2c00: 91 ce 83 54 81 5b 83 60 0d 0a 20 20 2f 2f 20 53 ...T.[.`.. // S
2c10: 63 72 6f 6c 6c 42 61 72 82 f0 98 41 91 b1 93 49 crollBar...A...I
2c20: 82 c9 83 68 83 89 83 62 83 4f 82 b9 82 b8 88 ea ...h...b.O......
2c30: 93 78 82 c9 88 ea 8b 43 82 c9 94 f2 82 f1 82 be .x.....C........
2c40: 8f ea 8d 87 82 cd 0d 0a 20 20 2f 2f 20 31 8d 73 ........ // 1.s
2c50: 96 da 82 e2 8d c5 8f 49 8d 73 82 a9 82 e7 82 cc .......I.s......
2c60: 91 8a 91 ce 83 54 81 5b 83 60 82 cc 95 fb 82 aa .....T.[.`......
2c70: 97 4c 8c f8 82 c8 89 c2 94 5c 90 ab 82 aa 82 a0 .L.......\......
2c80: 82 e9 82 aa 81 41 0d 0a 20 20 2f 2f 20 82 bb 82 .....A.. // ...
2c90: cc 8f ea 8d 87 82 cd 91 bd 8f ad 91 ac 93 78 82 ..............x.
2ca0: aa 92 78 82 ad 82 c8 82 c1 82 c4 82 e0 95 60 89 ..x...........`.
2cb0: e6 82 aa 88 f8 82 c1 82 a9 82 a9 82 e9 82 b1 82 ................
2cc0: c6 82 cd 82 c8 82 a2 82 cc 82 c5 82 6e 82 6a 0d ............n.j.
2cd0: 0a 09 65 6c 73 65 0d 0a 09 7b 0d 0a 09 09 69 6e ..else...{....in
2ce0: 74 20 20 20 72 6c 20 3d 20 64 79 20 2b 20 75 64 t rl = dy + ud
2cf0: 53 63 72 5f 76 72 6c 5f 3b 0d 0a 09 09 75 6c 6f Scr_vrl_;....ulo
2d00: 6e 67 20 74 6c 20 3d 20 75 64 53 63 72 5f 74 6c ng tl = udScr_tl
2d10: 5f 3b 0d 0a 0d 0a 09 09 69 66 28 20 64 79 3c 30 _;......if( dy<0
2d20: 20 29 20 2f 2f 20 8f e3 82 d6 96 df 82 e9 8f ea ) // ..........
2d30: 8d 87 0d 0a 09 09 7b 0d 0a 09 09 09 2f 2f 20 83 ......{.....// .
2d40: 57 83 83 83 93 83 76 90 e6 98 5f 97 9d 8d 73 82 W.....v..._...s.
2d50: cc 8d 73 93 aa 82 d6 44 61 73 68 21 0d 0a 09 09 ..s....Dash!....
2d60: 09 77 68 69 6c 65 28 20 72 6c 20 3c 20 30 20 29 .while( rl < 0 )
2d70: 0d 0a 09 09 09 09 72 6c 20 2b 3d 20 72 6c 6e 28 ......rl += rln(
2d80: 2d 2d 74 6c 29 3b 0d 0a 09 09 7d 0d 0a 09 09 65 --tl);....}....e
2d90: 6c 73 65 20 69 66 28 20 64 79 3e 30 20 29 20 2f lse if( dy>0 ) /
2da0: 2f 20 89 ba 82 d6 90 69 82 de 8f ea 8d 87 0d 0a / .....i........
2db0: 09 09 7b 0d 0a 09 09 09 2f 2f 20 83 57 83 83 83 ..{.....// .W...
2dc0: 93 83 76 90 e6 98 5f 97 9d 8d 73 82 cc 8d 73 93 ..v..._...s...s.
2dd0: aa 82 d6 44 61 73 68 21 0d 0a 09 09 09 77 68 69 ...Dash!.....whi
2de0: 6c 65 28 20 72 6c 20 3e 20 30 20 29 0d 0a 09 09 le( rl > 0 )....
2df0: 09 09 72 6c 20 2d 3d 20 72 6c 6e 28 74 6c 2b 2b ..rl -= rln(tl++
2e00: 29 3b 0d 0a 09 09 09 69 66 28 20 72 6c 20 3c 20 );.....if( rl <
2e10: 30 20 29 0d 0a 09 09 09 09 72 6c 20 2b 3d 20 72 0 )......rl += r
2e20: 6c 6e 28 2d 2d 74 6c 29 3b 20 2f 2f 8d 73 82 ab ln(--tl); //.s..
2e30: 89 df 82 ac 8f 43 90 b3 0d 0a 09 09 7d 0d 0a 09 .....C......}...
2e40: 09 75 64 53 63 72 5f 74 6c 5f 20 3d 20 74 6c 3b .udScr_tl_ = tl;
2e50: 0d 0a 09 09 75 64 53 63 72 5f 76 72 6c 5f 3d 20 ....udScr_vrl_=
2e60: 73 74 61 74 69 63 5f 63 61 73 74 3c 75 6c 6f 6e static_cast<ulon
2e70: 67 3e 28 72 6c 29 3b 0d 0a 09 7d 0d 0a 0d 0a 20 g>(rl);...}....
2e80: 20 2f 2f 20 82 53 81 44 89 e6 96 ca 82 f0 83 58 // .S.D.......X
2e90: 83 4e 83 8d 81 5b 83 8b 0d 0a 09 53 63 72 6f 6c .N...[.....Scrol
2ea0: 6c 56 69 65 77 28 20 30 2c 20 64 79 2c 20 21 74 lView( 0, dy, !t
2eb0: 68 75 6d 62 20 29 3b 0d 0a 7d 0d 0a 0d 0a 76 6f humb );..}....vo
2ec0: 69 64 20 56 69 65 77 49 6d 70 6c 3a 3a 49 6e 76 id ViewImpl::Inv
2ed0: 61 6c 69 64 61 74 65 56 69 65 77 28 20 63 6f 6e alidateView( con
2ee0: 73 74 20 44 50 6f 73 26 20 64 70 2c 20 62 6f 6f st DPos& dp, boo
2ef0: 6c 20 61 66 74 65 72 61 6c 6c 20 29 20 63 6f 6e l afterall ) con
2f00: 73 74 0d 0a 7b 0d 0a 09 63 6f 6e 73 74 20 69 6e st..{...const in
2f10: 74 20 48 20 3d 20 63 76 73 5f 2e 67 65 74 50 61 t H = cvs_.getPa
2f20: 69 6e 74 65 72 28 29 2e 48 28 29 3b 0d 0a 0d 0a inter().H();....
2f30: 09 2f 2f 20 95 5c 8e a6 88 e6 82 e6 82 e8 8f e3 .// .\..........
2f40: 82 c5 82 cc 8d 58 90 56 0d 0a 09 69 66 28 20 64 .....X.V...if( d
2f50: 70 2e 74 6c 20 3c 20 75 64 53 63 72 5f 74 6c 5f p.tl < udScr_tl_
2f60: 20 29 0d 0a 09 7b 0d 0a 09 09 69 66 28 20 61 66 )...{....if( af
2f70: 74 65 72 61 6c 6c 20 29 0d 0a 09 09 09 3a 3a 49 terall ).....::I
2f80: 6e 76 61 6c 69 64 61 74 65 52 65 63 74 28 20 68 nvalidateRect( h
2f90: 77 6e 64 5f 2c 20 4e 55 4c 4c 2c 20 46 41 4c 53 wnd_, NULL, FALS
2fa0: 45 20 29 3b 0d 0a 09 09 72 65 74 75 72 6e 3b 0d E );....return;.
2fb0: 0a 09 7d 0d 0a 0d 0a 09 2f 2f 20 8a 4a 8e 6e 79 ..}.....// .J.ny
2fc0: 8d c0 95 57 8c 76 8e 5a 0d 0a 09 69 6e 74 20 72 ...W.v.Z...int r
2fd0: 3d 30 2c 20 79 62 3d 2d 28 73 69 67 6e 65 64 29 =0, yb=-(signed)
2fe0: 75 64 53 63 72 5f 76 72 6c 5f 3b 0d 0a 09 66 6f udScr_vrl_;...fo
2ff0: 72 28 20 69 6e 74 20 74 3d 75 64 53 63 72 5f 74 r( int t=udScr_t
3000: 6c 5f 2c 20 79 62 65 3d 63 79 28 29 2f 48 3b 20 l_, ybe=cy()/H;
3010: 28 75 6e 73 69 67 6e 65 64 29 74 3c 64 70 2e 74 (unsigned)t<dp.t
3020: 6c 3b 20 79 62 2b 3d 72 6c 6e 28 74 2b 2b 29 20 l; yb+=rln(t++)
3030: 29 0d 0a 09 09 69 66 28 20 79 62 20 3e 3d 20 79 )....if( yb >= y
3040: 62 65 20 29 0d 0a 09 09 09 72 65 74 75 72 6e 3b be ).....return;
3050: 0d 0a 09 66 6f 72 28 20 3b 20 64 70 2e 61 64 3e ...for( ; dp.ad>
3060: 72 6c 65 6e 64 28 64 70 2e 74 6c 2c 72 29 3b 20 rlend(dp.tl,r);
3070: 2b 2b 72 2c 2b 2b 79 62 20 29 3b 0d 0a 09 79 62 ++r,++yb );...yb
3080: 20 3d 20 48 20 2a 20 4d 61 78 28 20 79 62 2c 20 = H * Max( yb,
3090: 2d 31 30 30 20 29 3b 20 2f 2f 20 8f e3 82 c9 82 -100 ); // .....
30a0: cd 82 dd 8f 6f 82 b5 89 df 82 ac 82 c8 82 a2 82 ....o...........
30b0: e6 82 a4 92 b2 90 ae 0d 0a 09 69 66 28 20 79 62 ..........if( yb
30c0: 20 3e 3d 20 63 79 28 29 20 29 0d 0a 09 09 72 65 >= cy() )....re
30d0: 74 75 72 6e 3b 0d 0a 0d 0a 09 2f 2f 20 82 50 8d turn;.....// .P.
30e0: 73 96 da 82 f0 8d c4 95 60 89 e6 0d 0a 09 69 6e s.......`.....in
30f0: 74 20 72 62 20 3d 20 28 72 3d 3d 30 20 3f 20 30 t rb = (r==0 ? 0
3100: 20 3a 20 72 6c 65 6e 64 28 64 70 2e 74 6c 2c 72 : rlend(dp.tl,r
3110: 2d 31 29 29 3b 0d 0a 09 69 6e 74 20 78 62 20 3d -1));...int xb =
3120: 20 6c 65 66 74 28 29 20 2b 20 4d 61 78 28 20 30 left() + Max( 0
3130: 55 4c 2c 0d 0a 09 09 43 61 6c 63 4c 69 6e 65 57 UL,....CalcLineW
3140: 69 64 74 68 28 64 6f 63 5f 2e 74 6c 28 64 70 2e idth(doc_.tl(dp.
3150: 74 6c 29 2b 72 62 2c 64 70 2e 61 64 2d 72 62 29 tl)+rb,dp.ad-rb)
3160: 20 2d 72 6c 53 63 72 5f 2e 6e 50 6f 73 20 29 3b -rlScr_.nPos );
3170: 0d 0a 09 69 66 28 20 78 62 20 3c 20 72 69 67 68 ...if( xb < righ
3180: 74 28 29 20 29 0d 0a 09 7b 0d 0a 09 09 52 45 43 t() )...{....REC
3190: 54 20 72 63 3d 7b 78 62 2c 79 62 2c 72 69 67 68 T rc={xb,yb,righ
31a0: 74 28 29 2c 79 62 2b 48 7d 3b 0d 0a 09 09 3a 3a t(),yb+H};....::
31b0: 49 6e 76 61 6c 69 64 61 74 65 52 65 63 74 28 20 InvalidateRect(
31c0: 68 77 6e 64 5f 2c 20 26 72 63 2c 20 46 41 4c 53 hwnd_, &rc, FALS
31d0: 45 20 29 3b 0d 0a 09 7d 0d 0a 0d 0a 09 2f 2f 20 E );...}.....//
31e0: 8e 63 82 e8 0d 0a 09 69 6e 74 20 79 65 3b 0d 0a .c.....int ye;..
31f0: 09 79 62 20 2b 3d 20 48 3b 0d 0a 09 69 66 28 20 .yb += H;...if(
3200: 61 66 74 65 72 61 6c 6c 20 29 0d 0a 09 09 78 62 afterall )....xb
3210: 3d 30 2c 20 79 65 3d 63 79 28 29 3b 0d 0a 09 65 =0, ye=cy();...e
3220: 6c 73 65 0d 0a 09 09 78 62 3d 6c 65 66 74 28 29 lse....xb=left()
3230: 2c 20 79 65 3d 4d 69 6e 28 63 79 28 29 2c 79 62 , ye=Min(cy(),yb
3240: 2b 28 69 6e 74 29 28 48 2a 28 72 6c 6e 28 64 70 +(int)(H*(rln(dp
3250: 2e 74 6c 29 2d 72 2d 31 29 29 29 3b 0d 0a 09 69 .tl)-r-1)));...i
3260: 66 28 20 79 62 20 3c 20 79 65 20 29 0d 0a 09 7b f( yb < ye )...{
3270: 0d 0a 09 09 52 45 43 54 20 72 63 3d 7b 78 62 2c ....RECT rc={xb,
3280: 79 62 2c 72 69 67 68 74 28 29 2c 79 65 7d 3b 0d yb,right(),ye};.
3290: 0a 09 09 3a 3a 49 6e 76 61 6c 69 64 61 74 65 52 ...::InvalidateR
32a0: 65 63 74 28 20 68 77 6e 64 5f 2c 20 26 72 63 2c ect( hwnd_, &rc,
32b0: 20 46 41 4c 53 45 20 29 3b 0d 0a 09 7d 0d 0a 7d FALSE );...}..}
32c0: 0d 0a ..