@ -8,10 +8,29 @@ Layout *lt = NULL;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					/* static */  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  double  ratio  =  RATIO ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  double  hratio  =  HRATIO ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  double  vratio  =  VRATIO ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  unsigned  int  nlayouts  =  0 ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  unsigned  int  nmaster  =  NMASTER ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					incratio ( const  char  * arg ,  double  * ratio ,  double  def )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						double  delta ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( lt - > arrange  ! =  tile )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( ! arg )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							* ratio  =  def ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( 1  = =  sscanf ( arg ,  " %lf " ,  & delta ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								if ( delta  +  ( * ratio )  <  .1  | |  delta  +  ( * ratio )  >  1.9 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								* ratio  + =  delta ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						lt - > arrange ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					static  double  /* simple pow() */  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					spow ( double  x ,  double  y )  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					{  
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -31,21 +50,21 @@ tile(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						for ( n  =  0 ,  c  =  nexttiled ( clients ) ;  c ;  c  =  nexttiled ( c - > next ) )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							n + + ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						mw  =  ( n  < =  nmaster )  ?  waw  :   waw  /  ( 1  +  ratio ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						mw  =  ( n  < =  nmaster )  ?  waw  :   waw  /  ( 1  +  h ratio) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						tw  =  waw  -  mw ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( n  >  0 )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( n  <  nmaster )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								for ( i  =  0 ;  i  <  n ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									sum  + =  spow ( ratio ,  i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									sum  + =  spow ( v ratio,  i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								mscale  =  wah  /  sum ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								for ( i  =  0 ;  i  <  nmaster ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									sum  + =  spow ( ratio ,  i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									sum  + =  spow ( v ratio,  i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								mscale  =  wah  /  sum ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								for ( sum  =  0 ,  i  =  0 ;  i  <  ( n  -  nmaster ) ;  i + + )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									sum  + =  spow ( ratio ,  i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									sum  + =  spow ( v ratio,  i ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								tscale  =  wah  /  sum ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -62,7 +81,7 @@ tile(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									if ( i  +  1  = =  n  | |  i  +  1  = =  nmaster )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
										nh  =  ( way  +  wah )  -  ny  -  ( 2  *  c - > border ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
										nh  =  ( mscale  *  spow ( ratio ,  i ) )  -  ( 2  *  c - > border ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
										nh  =  ( mscale  *  spow ( v ratio,  i ) )  -  ( 2  *  c - > border ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								else  {  /* tile window */   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									if ( i  = =  nmaster )  {   
				
			 
			
		
	
	
		
			
				
					
						
						
						
							
								 
							 
						
					 
				
				 
				
					@ -73,7 +92,7 @@ tile(void) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									if ( i  +  1  = =  n )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
										nh  =  ( way  +  wah )  -  ny  -  ( 2  *  c - > border ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									else   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
										nh  =  ( tscale  *  spow ( ratio ,  i  -  nmaster ) )  -  ( 2  *  c - > border ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
										nh  =  ( tscale  *  spow ( v ratio,  i  -  nmaster ) )  -  ( 2  *  c - > border ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								if ( nh  <  bh )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									nh  =  bh ;   
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -133,21 +152,13 @@ focusclient(const char *arg) {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					incratio ( const  char  * arg )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						double  delta ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					inchratio ( const  char  * arg )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						incratio ( arg ,  & hratio ,  HRATIO ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( lt - > arrange  ! =  tile )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						if ( ! arg )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							ratio  =  RATIO ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						else  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							if ( 1  = =  sscanf ( arg ,  " %lf " ,  & delta ) )  {   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								if ( delta  +  ratio  <  .1  | |  delta  +  ratio  >  1.9 )   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
									return ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
								ratio  + =  delta ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
							}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						}   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						lt - > arrange ( ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					void  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					incvratio ( const  char  * arg )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
						incratio ( arg ,  & vratio ,  VRATIO ) ;   
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					}  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					void