| 
									
										
										
										
											2011-10-31 23:37:04 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | General Structure | 
					
						
							|  |  |  | | | 
					
						
							|  |  |  | | | 
					
						
							| 
									
										
										
										
											2011-12-20 01:49:42 +04:00
										 |  |  | |       |                                  |     | | 
					
						
							|  |  |  | |       +----------------------------------+     | loading buffer | 
					
						
							|  |  |  | |       +----------------------------------+     | (rows loading or unloading while scrolling) | 
					
						
							|  |  |  | |       |                                  |     | | 
					
						
							|  |  |  | |       |               row                |     | | 
					
						
							|  |  |  | |       |                                  |     | | 
					
						
							|  |  |  | |       +----------------------------------+     | | 
					
						
							|  |  |  | |                                               -+ | 
					
						
							|  |  |  | |                                               -+ | 
					
						
							|  |  |  | |       +----------------------------------+     | scroll buffer | 
					
						
							|  |  |  | |       |                                  |     | (loaded rows) | 
					
						
							|  |  |  | |       |               row                |     | | 
					
						
							|  |  |  | |       |                                  |     | | 
					
						
							|  |  |  | |       +----------------------------------+     | | 
					
						
							|  |  |  | |       +----------------------------------+     | | 
					
						
							|  |  |  | |       |                                  |     | | 
					
						
							|  |  |  | |       |               row                |     | | 
					
						
							|  |  |  | |       |                                  |     | | 
					
						
							|  |  |  | |       +----------------------------------+     | | 
					
						
							|  |  |  | |                                               -+ | 
					
						
							| 
									
										
										
										
											2011-10-31 23:37:04 +03:00
										 |  |  | |     +-visible-area-------------------------+ | 
					
						
							| 
									
										
										
										
											2011-12-20 01:49:42 +04:00
										 |  |  | |     |                                      | | 
					
						
							|  |  |  | |     | +----------------------------------+ | | 
					
						
							|  |  |  | |     | | +========+ +--------+ +--------+ | | | 
					
						
							|  |  |  | |     | | |  ref   | |        | |        | | | | 
					
						
							|  |  |  | |     | | +========+ +--------+ +--------+ | | | 
					
						
							|  |  |  | |     | +----------------------------------+ | | 
					
						
							|  |  |  | |     | +----------------------------------+ | | 
					
						
							|  |  |  | |     | | +--------+ +--------+ +--------+ | | | 
					
						
							|  |  |  | |     | | | block  | |        | |        | | | | 
					
						
							|  |  |  | |     | | +--------+ +--------+ +--------+ | | | 
					
						
							|  |  |  | |     | +----------------------------------+ | | 
					
						
							|  |  |  | |     | +----------------------------------+ | | 
					
						
							|  |  |  | |     | |                                  | | | 
					
						
							|  |  |  | |     | |               row                | | | 
					
						
							|  |  |  | |     | |                                  | | | 
					
						
							|  |  |  | |     | +----------------------------------+ | | 
					
						
							|  |  |  | |     |                                      | | 
					
						
							| 
									
										
										
										
											2011-10-31 23:37:04 +03:00
										 |  |  | |     +--------------------------------------+ | 
					
						
							| 
									
										
										
										
											2011-12-20 01:49:42 +04:00
										 |  |  | |                                               -+ | 
					
						
							|  |  |  | |       +----------------------------------+     | scroll buffer | 
					
						
							|  |  |  | |       |                                  |     | (loaded rows) | 
					
						
							|  |  |  | |       |               row                |     | | 
					
						
							|  |  |  | |       |                                  |     | | 
					
						
							|  |  |  | |       +----------------------------------+     | | 
					
						
							|  |  |  | |       +----------------------------------+     | | 
					
						
							|  |  |  | |       |                                  |     | | 
					
						
							|  |  |  | |       |               row                |     | | 
					
						
							|  |  |  | |       |                                  |     | | 
					
						
							|  |  |  | |       +----------------------------------+     | | 
					
						
							|  |  |  | |                                               -+ | 
					
						
							|  |  |  | |                                               -+ | 
					
						
							|  |  |  | |       +----------------------------------+     | loading buffer | 
					
						
							|  |  |  | |       |                                  |     | (rows loading or unloading while scrolling) | 
					
						
							|  |  |  | |       |               row                |     | | 
					
						
							|  |  |  | |       |                                  |     | | 
					
						
							|  |  |  | |       +----------------------------------+     | | 
					
						
							|  |  |  | |       +----------------------------------+     | | 
					
						
							|  |  |  | |       |                                  |     | | 
					
						
							| 
									
										
										
										
											2011-10-31 23:37:04 +03:00
										 |  |  | | | 
					
						
							|  |  |  | | | 
					
						
							|  |  |  | 	elements | 
					
						
							|  |  |  | 		view / visible area | 
					
						
							|  |  |  | 		scroll buffer | 
					
						
							|  |  |  | 		loading/unloading buffer | 
					
						
							|  |  |  | 	operation/actions | 
					
						
							|  |  |  | 		scroll | 
					
						
							|  |  |  | 		resize | 
					
						
							|  |  |  | 		filter | 
					
						
							|  |  |  | 	positioning | 
					
						
							|  |  |  | 		reference block | 
					
						
							|  |  |  | 		| a block top-left of the visible area. | 
					
						
							|  |  |  | 		| | 
					
						
							|  |  |  | 		| this block must remain in the same position during any operations  | 
					
						
							|  |  |  | 		| with the content of grid. including: | 
					
						
							|  |  |  | 		| 	- resizing | 
					
						
							|  |  |  | 		| 	- filtering | 
					
						
							|  |  |  | 		| | 
					
						
							|  |  |  | 		| there is only one exception: arity of the grid -- the top-most row | 
					
						
							|  |  |  | 		| must always be full. thus moving the reference left of right, but  | 
					
						
							|  |  |  | 		| never up or down. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | . | 
					
						
							|  |  |  | | vim:set spell ts=4 sw=4 : |