Hex Artifact Content

Not logged in

Artifact a2aa2ab09e9c8e83cbfd13d50275a9484351c66a:


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