42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* $Id$ */
 | |
| 
 | |
| #ifndef SLOPE_H
 | |
| #define SLOPE_H
 | |
| 
 | |
| typedef enum Slope {
 | |
| 	SLOPE_FLAT     = 0x00,
 | |
| 	SLOPE_W        = 0x01,
 | |
| 	SLOPE_S        = 0x02,
 | |
| 	SLOPE_E        = 0x04,
 | |
| 	SLOPE_N        = 0x08,
 | |
| 	SLOPE_STEEP    = 0x10,
 | |
| 	SLOPE_NW       = SLOPE_N | SLOPE_W,
 | |
| 	SLOPE_SW       = SLOPE_S | SLOPE_W,
 | |
| 	SLOPE_SE       = SLOPE_S | SLOPE_E,
 | |
| 	SLOPE_NE       = SLOPE_N | SLOPE_E,
 | |
| 	SLOPE_EW       = SLOPE_E | SLOPE_W,
 | |
| 	SLOPE_NS       = SLOPE_N | SLOPE_S,
 | |
| 	SLOPE_ELEVATED = SLOPE_N | SLOPE_E | SLOPE_S | SLOPE_W,
 | |
| 	SLOPE_NWS      = SLOPE_N | SLOPE_W | SLOPE_S,
 | |
| 	SLOPE_WSE      = SLOPE_W | SLOPE_S | SLOPE_E,
 | |
| 	SLOPE_SEN      = SLOPE_S | SLOPE_E | SLOPE_N,
 | |
| 	SLOPE_ENW      = SLOPE_E | SLOPE_N | SLOPE_W,
 | |
| 	SLOPE_STEEP_W  = SLOPE_STEEP | SLOPE_NWS,
 | |
| 	SLOPE_STEEP_S  = SLOPE_STEEP | SLOPE_WSE,
 | |
| 	SLOPE_STEEP_E  = SLOPE_STEEP | SLOPE_SEN,
 | |
| 	SLOPE_STEEP_N  = SLOPE_STEEP | SLOPE_ENW
 | |
| } Slope;
 | |
| 
 | |
| static inline bool IsSteepSlope(Slope s)
 | |
| {
 | |
| 	return (s & SLOPE_STEEP) != 0;
 | |
| }
 | |
| 
 | |
| static inline Slope ComplementSlope(Slope s)
 | |
| {
 | |
| 	assert(!IsSteepSlope(s));
 | |
| 	return (Slope)(0xF ^ s);
 | |
| }
 | |
| 
 | |
| #endif /* SLOPE_H */
 | 
