| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -182,53 +182,26 @@ void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color colo | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    rlEnd(); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			void DrawLineDashed(Vector2 startPos, Vector2 endPos, int dashSize, int whiteSpaceSize, Color color) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Draw a line defining thickness | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Calculate the vector and length of the line | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float dx = endPos.x - startPos.x; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float dy = endPos.y - startPos.y; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float lineLength = sqrtf(dx*dx + dy*dy); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // If the line is too short for dashing or dash size is invalid, draw a solid thick line | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (lineLength < (dashSize + whiteSpaceSize) || dashSize <= 0) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        DrawLineV(startPos, endPos, color); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        return; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Calculate the normalized direction vector of the line | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float invLineLength = 1 / lineLength; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float dirX = dx * invLineLength; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float dirY = dy * invLineLength; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    Vector2 currentPos = startPos; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float distanceTraveled = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    rlBegin(RL_LINES); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    rlColor4ub(color.r, color.g, color.b, color.a); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    Vector2 delta = { endPos.x - startPos.x, endPos.y - startPos.y }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float length = sqrtf(delta.x*delta.x + delta.y*delta.y); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    while (distanceTraveled < lineLength) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if ((length > 0) && (thick > 0)) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        // Calculate the end of the current dash | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        float dashEndDist = distanceTraveled + dashSize; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        if (dashEndDist > lineLength) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            dashEndDist = lineLength; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        Vector2 dashEndPos = { startPos.x + dashEndDist * dirX, startPos.y + dashEndDist * dirY }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        float scale = thick/(2*length); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        // Draw the dash segment | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        rlVertex2f(currentPos.x, currentPos.y); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        rlVertex2f(dashEndPos.x, dashEndPos.y); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        Vector2 radius = { -scale*delta.y, scale*delta.x }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        Vector2 strip[4] = { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { startPos.x - radius.x, startPos.y - radius.y }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { startPos.x + radius.x, startPos.y + radius.y }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { endPos.x - radius.x, endPos.y - radius.y }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { endPos.x + radius.x, endPos.y + radius.y } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        // Update the distance traveled and move the current position for the next dash | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        distanceTraveled = dashEndDist + whiteSpaceSize; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        currentPos.x = startPos.x + distanceTraveled * dirX; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        currentPos.y = startPos.y + distanceTraveled * dirY; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        DrawTriangleStrip(strip, 4, color); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    rlEnd(); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Draw a line (using gl lines) | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -295,26 +268,50 @@ void DrawLineBezier(Vector2 startPos, Vector2 endPos, float thick, Color color) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    DrawTriangleStrip(points, 2*SPLINE_SEGMENT_DIVISIONS + 2, color); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Draw a line defining thickness | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			void DrawLineEx(Vector2 startPos, Vector2 endPos, float thick, Color color) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Draw a dashed line | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			void DrawLineDashed(Vector2 startPos, Vector2 endPos, int dashSize, int spaceSize, Color color) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    Vector2 delta = { endPos.x - startPos.x, endPos.y - startPos.y }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float length = sqrtf(delta.x*delta.x + delta.y*delta.y); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Calculate the vector and length of the line | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float dx = endPos.x - startPos.x; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float dy = endPos.y - startPos.y; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float lineLength = sqrtf(dx*dx + dy*dy); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if ((length > 0) && (thick > 0)) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // If the line is too short for dashing or dash size is invalid, draw a solid thick line | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if ((lineLength < (dashSize + spaceSize)) || (dashSize <= 0)) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        float scale = thick/(2*length); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        DrawLineV(startPos, endPos, color); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        return; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        Vector2 radius = { -scale*delta.y, scale*delta.x }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        Vector2 strip[4] = { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { startPos.x - radius.x, startPos.y - radius.y }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { startPos.x + radius.x, startPos.y + radius.y }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { endPos.x - radius.x, endPos.y - radius.y }, | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            { endPos.x + radius.x, endPos.y + radius.y } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // Calculate the normalized direction vector of the line | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float invLineLength = 1.0f/lineLength; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float dirX = dx*invLineLength; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float dirY = dy*invLineLength; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        DrawTriangleStrip(strip, 4, color); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    Vector2 currentPos = startPos; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    float distanceTraveled = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    rlBegin(RL_LINES); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        rlColor4ub(color.r, color.g, color.b, color.a); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        while (distanceTraveled < lineLength) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Calculate the end of the current dash | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            float dashEndDist = distanceTraveled + dashSize; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            if (dashEndDist > lineLength) dashEndDist = lineLength; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            Vector2 dashEndPos = { startPos.x + dashEndDist*dirX, startPos.y + dashEndDist*dirY }; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Draw the dash segment | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            rlVertex2f(currentPos.x, currentPos.y); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            rlVertex2f(dashEndPos.x, dashEndPos.y); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            // Update the distance traveled and move the current position for the next dash | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            distanceTraveled = dashEndDist + spaceSize; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            currentPos.x = startPos.x + distanceTraveled*dirX; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			            currentPos.y = startPos.y + distanceTraveled*dirY; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    rlEnd(); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Draw a color-filled circle | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |