this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Removed Arc and ArcFilled crossesZero checks. These holdovers from pre-GL code caused incorrect rendering for certain angle values.

+26 -49
+26 -49
SDL_gpu/GL_common/SDL_gpuShapes_GL_common.inl
··· 165 165 end_angle -= 360; 166 166 } 167 167 168 - // Check if the angle to be drawn crosses 0 169 - Uint8 crossesZero = (start_angle < 0 && end_angle > 0) || (start_angle < 360 && end_angle > 360); 170 - 171 - if(end_angle == 0) 172 - end_angle = 360; 173 - else if(crossesZero) 174 - { 175 - float sa = originalSA; 176 - // Render the left part 177 - while(sa < 0.0f) 178 - sa += 360; 179 - Arc(renderer, target, x, y, radius, sa, 359.9f, color); 180 - 181 - // Continue to render the right part 182 - start_angle = 0; 183 - while(end_angle >= 360) 184 - end_angle -= 360; 185 - } 186 - 187 168 188 169 float t = start_angle; 189 170 float dt = ((end_angle - start_angle)/360)*(1.25f/sqrtf(radius)) * DEGPERRAD; // s = rA, so dA = ds/r. ds of 1.25*sqrt(radius) is good, use A in degrees. ··· 250 231 start_angle -= 360; 251 232 end_angle -= 360; 252 233 } 253 - 254 - // Check if the angle to be drawn crosses 0 255 - Uint8 crossesZero = (start_angle < 0 && end_angle > 0) || (start_angle < 360 && end_angle > 360); 256 - 257 - if(end_angle == 0) 258 - end_angle = 360; 259 - else if(crossesZero) 260 - { 261 - float sa = originalSA; 262 - 263 - // Render the left part 264 - while(sa < 0.0f) 265 - sa += 360; 266 - ArcFilled(renderer, target, x, y, radius, sa, 359.9f, color); 267 - 268 - // Continue to render the right part 269 - start_angle = 0; 270 - while(end_angle >= 360) 271 - end_angle -= 360; 272 - } 273 234 274 235 float t = start_angle; 275 236 float dt = ((end_angle - start_angle)/360)*(1.25f/sqrtf(radius)) * DEGPERRAD; // s = rA, so dA = ds/r. ds of 1.25*sqrt(radius) is good, use A in degrees. ··· 389 350 outer_radius = s; 390 351 } 391 352 353 + if(start_angle > end_angle) 354 + { 355 + float swapa = end_angle; 356 + end_angle = start_angle; 357 + start_angle = swapa; 358 + } 359 + if(start_angle == end_angle) 360 + return; 361 + 392 362 if(inner_radius == outer_radius) 393 363 { 394 364 Arc(renderer, target, x, y, inner_radius, start_angle, end_angle, color); 395 365 return; 396 366 } 397 367 368 + Uint8 circled = (end_angle - start_angle >= 360); 398 369 // Composited shape... But that means error codes may be confusing. :-/ 399 370 float dx1, dy1, dx2, dy2, dx3, dy3, dx4, dy4; 400 371 Arc(renderer, target, x, y, inner_radius, start_angle, end_angle, color); 401 372 402 - dx1 = inner_radius*cos(end_angle*RADPERDEG); 403 - dy1 = inner_radius*sin(end_angle*RADPERDEG); 404 - dx2 = outer_radius*cos(end_angle*RADPERDEG); 405 - dy2 = outer_radius*sin(end_angle*RADPERDEG); 406 - Line(renderer, target, x+dx1, y+dy1, x+dx2, y+dy2, color); 373 + if(!circled) 374 + { 375 + dx1 = inner_radius*cos(end_angle*RADPERDEG); 376 + dy1 = inner_radius*sin(end_angle*RADPERDEG); 377 + dx2 = outer_radius*cos(end_angle*RADPERDEG); 378 + dy2 = outer_radius*sin(end_angle*RADPERDEG); 379 + Line(renderer, target, x+dx1, y+dy1, x+dx2, y+dy2, color); 380 + } 407 381 408 382 Arc(renderer, target, x, y, outer_radius, start_angle, end_angle, color); 409 383 410 - dx3 = inner_radius*cos(start_angle*RADPERDEG); 411 - dy3 = inner_radius*sin(start_angle*RADPERDEG); 412 - dx4 = outer_radius*cos(start_angle*RADPERDEG); 413 - dy4 = outer_radius*sin(start_angle*RADPERDEG); 414 - Line(renderer, target, x+dx3, y+dy3, x+dx4, y+dy4, color); 384 + if(!circled) 385 + { 386 + dx3 = inner_radius*cos(start_angle*RADPERDEG); 387 + dy3 = inner_radius*sin(start_angle*RADPERDEG); 388 + dx4 = outer_radius*cos(start_angle*RADPERDEG); 389 + dy4 = outer_radius*sin(start_angle*RADPERDEG); 390 + Line(renderer, target, x+dx3, y+dy3, x+dx4, y+dy4, color); 391 + } 415 392 } 416 393 417 394 static void SectorFilled(GPU_Renderer* renderer, GPU_Target* target, float x, float y, float inner_radius, float outer_radius, float start_angle, float end_angle, SDL_Color color)