MCPcopy Create free account
hub / github.com/ddnet/ddnet / CreateRectQuadContainer

Method CreateRectQuadContainer

src/engine/client/graphics_threaded.cpp:1226–1312  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1224}
1225
1226int CGraphics_Threaded::CreateRectQuadContainer(float x, float y, float w, float h, float r, int Corners)
1227{
1228 int ContainerIndex = CreateQuadContainer(false);
1229
1230 if(Corners == 0 || r == 0.0f)
1231 {
1232 CQuadItem ItemQ = CQuadItem(x, y, w, h);
1233 QuadContainerAddQuads(ContainerIndex, &ItemQ, 1);
1234 QuadContainerUpload(ContainerIndex);
1235 QuadContainerChangeAutomaticUpload(ContainerIndex, true);
1236 return ContainerIndex;
1237 }
1238
1239 const int NumSegments = 8;
1240 const float SegmentsAngle = pi / 2 / NumSegments;
1241 IGraphics::CFreeformItem aFreeform[NumSegments * 4];
1242 size_t NumItems = 0;
1243
1244 for(int i = 0; i < NumSegments; i += 2)
1245 {
1246 float a1 = i * SegmentsAngle;
1247 float a2 = (i + 1) * SegmentsAngle;
1248 float a3 = (i + 2) * SegmentsAngle;
1249 float Ca1 = std::cos(a1);
1250 float Ca2 = std::cos(a2);
1251 float Ca3 = std::cos(a3);
1252 float Sa1 = std::sin(a1);
1253 float Sa2 = std::sin(a2);
1254 float Sa3 = std::sin(a3);
1255
1256 if(Corners & CORNER_TL)
1257 aFreeform[NumItems++] = IGraphics::CFreeformItem(
1258 x + r, y + r,
1259 x + (1 - Ca1) * r, y + (1 - Sa1) * r,
1260 x + (1 - Ca3) * r, y + (1 - Sa3) * r,
1261 x + (1 - Ca2) * r, y + (1 - Sa2) * r);
1262
1263 if(Corners & CORNER_TR)
1264 aFreeform[NumItems++] = IGraphics::CFreeformItem(
1265 x + w - r, y + r,
1266 x + w - r + Ca1 * r, y + (1 - Sa1) * r,
1267 x + w - r + Ca3 * r, y + (1 - Sa3) * r,
1268 x + w - r + Ca2 * r, y + (1 - Sa2) * r);
1269
1270 if(Corners & CORNER_BL)
1271 aFreeform[NumItems++] = IGraphics::CFreeformItem(
1272 x + r, y + h - r,
1273 x + (1 - Ca1) * r, y + h - r + Sa1 * r,
1274 x + (1 - Ca3) * r, y + h - r + Sa3 * r,
1275 x + (1 - Ca2) * r, y + h - r + Sa2 * r);
1276
1277 if(Corners & CORNER_BR)
1278 aFreeform[NumItems++] = IGraphics::CFreeformItem(
1279 x + w - r, y + h - r,
1280 x + w - r + Ca1 * r, y + h - r + Sa1 * r,
1281 x + w - r + Ca3 * r, y + h - r + Sa3 * r,
1282 x + w - r + Ca2 * r, y + h - r + Sa2 * r);
1283 }

Callers 5

DrawMethod · 0.80
DoButton_MenuMethod · 0.80
RenderScoreHudMethod · 0.80
OnRenderMethod · 0.80
OnPrepareLinesMethod · 0.80

Calls 2

CQuadItemClass · 0.85
CFreeformItemClass · 0.85

Tested by

no test coverage detected