| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -827,16 +827,27 @@ Image GenImageGradientLinear(int width, int height, int direction, Color start, | 
															
														
														
													
														
															
																 | 
																 | 
																    float cosDir = cosf(radianDirection); | 
																 | 
																 | 
																    float cosDir = cosf(radianDirection); | 
															
														
														
													
														
															
																 | 
																 | 
																    float sinDir = sinf(radianDirection); | 
																 | 
																 | 
																    float sinDir = sinf(radianDirection); | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    // Calculate how far the top-left pixel is along the gradient direction from the center of said gradient | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    float startingPos = 0.5 - (cosDir*width/2) - (sinDir*height/2); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    // With directions that lie in the first or third quadrant (i.e. from top-left to  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    // bottom-right or vice-versa), pixel (0, 0) is the farthest point on the gradient | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    // (i.e. the pixel which should become one of the gradient's ends color); while for | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    // directions that lie in the second or fourth quadrant, that point is pixel (width, 0). | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    float maxPosValue =  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            ((signbit(sinDir) != 0) == (signbit(cosDir) != 0)) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            ? fabs(startingPos) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            : fabs(startingPos+width*cosDir); | 
															
														
														
													
														
															
																 | 
																 | 
																    for (int i = 0; i < width; i++) | 
																 | 
																 | 
																    for (int i = 0; i < width; i++) | 
															
														
														
													
														
															
																 | 
																 | 
																    { | 
																 | 
																 | 
																    { | 
															
														
														
													
														
															
																 | 
																 | 
																        for (int j = 0; j < height; j++) | 
																 | 
																 | 
																        for (int j = 0; j < height; j++) | 
															
														
														
													
														
															
																 | 
																 | 
																        { | 
																 | 
																 | 
																        { | 
															
														
														
													
														
															
																 | 
																 | 
																            // Calculate the relative position of the pixel along the gradient direction | 
																 | 
																 | 
																            // Calculate the relative position of the pixel along the gradient direction | 
															
														
														
													
														
															
																 | 
																 | 
																            float pos = (i*cosDir + j*sinDir)/(width*cosDir + height*sinDir); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            float pos = (startingPos + (i*cosDir + j*sinDir)) / maxPosValue; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																            float factor = pos; | 
																 | 
																 | 
																            float factor = pos; | 
															
														
														
													
														
															
																 | 
																 | 
																            factor = (factor > 1.0f)? 1.0f : factor;  // Clamp to [0,1] | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            factor = (factor < 0.0f)? 0.0f : factor;  // Clamp to [0,1] | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            factor = (factor > 1.0f)? 1.0f : factor;  // Clamp to [-1,1] | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            factor = (factor < -1.0f)? -1.0f : factor;  // Clamp to [-1,1] | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            factor = factor / 2 + 0.5f; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																            // Generate the color for this pixel | 
																 | 
																 | 
																            // Generate the color for this pixel | 
															
														
														
													
														
															
																 | 
																 | 
																            pixels[j*width + i].r = (int)((float)end.r*factor + (float)start.r*(1.0f - factor)); | 
																 | 
																 | 
																            pixels[j*width + i].r = (int)((float)end.r*factor + (float)start.r*(1.0f - factor)); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
 |