MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / parentResized

Method parentResized

Engine/source/gui/core/guiControl.cpp:1372–1475  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1370//-----------------------------------------------------------------------------
1371
1372void GuiControl::parentResized(const RectI &oldParentRect, const RectI &newParentRect)
1373{
1374 Point2I newPosition = getPosition();
1375 Point2I newExtent = getExtent();
1376
1377 S32 deltaX = newParentRect.extent.x - oldParentRect.extent.x;
1378 S32 deltaY = newParentRect.extent.y - oldParentRect.extent.y;
1379
1380 if (mHorizSizing == horizResizeCenter)
1381 newPosition.x = (newParentRect.extent.x - getWidth()) >> 1;
1382 else if (mHorizSizing == horizResizeWidth)
1383 newExtent.x += deltaX;
1384 else if (mHorizSizing == horizResizeLeft)
1385 newPosition.x += deltaX;
1386 else if (mHorizSizing == horizResizeRelative && oldParentRect.extent.x != 0)
1387 {
1388 S32 newLeft = mRoundToNearest( ( F32( newPosition.x ) / F32( oldParentRect.extent.x ) ) * F32( newParentRect.extent.x ) );
1389 S32 newWidth = mRoundToNearest( ( F32( newExtent.x ) / F32( oldParentRect.extent.x ) ) * F32( newParentRect.extent.x ) );
1390
1391 newPosition.x = newLeft;
1392 newExtent.x = newWidth;
1393 }
1394 else if (mHorizSizing == horizResizeAspectLeft && oldParentRect.extent.x != 0)
1395 {
1396 S32 newLeft = mRoundToNearest((F32(newPosition.x) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x));
1397 S32 newWidth = mRoundToNearest((F32(newExtent.x) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y));
1398
1399 newPosition.x = newLeft;
1400 newExtent.x = newWidth;
1401 }
1402 else if (mHorizSizing == horizResizeAspectRight && oldParentRect.extent.x != 0)
1403 {
1404 S32 newLeft = mRoundToNearest((F32(newPosition.x) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x));
1405 S32 newWidth = mRoundToNearest((F32(newExtent.x) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y)); //origional aspect ratio corrected width
1406 S32 rWidth = mRoundToNearest((F32(newExtent.x) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x)); //parent aspect ratio relative width
1407
1408 S32 offset = rWidth - newWidth; // account for change in relative width
1409 newLeft += offset;
1410 newPosition.x = newLeft;
1411 newExtent.x = newWidth;
1412 }
1413 else if (mHorizSizing == horizResizeAspectCenter && oldParentRect.extent.x != 0)
1414 {
1415 S32 newLeft = mRoundToNearest((F32(newPosition.x) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x));
1416 S32 newWidth = mRoundToNearest((F32(newExtent.x) / F32(oldParentRect.extent.y)) * F32(newParentRect.extent.y)); //origional aspect ratio corrected width
1417 S32 rWidth = mRoundToNearest((F32(newExtent.x) / F32(oldParentRect.extent.x)) * F32(newParentRect.extent.x)); //parent aspect ratio relative width
1418
1419 S32 offset = rWidth - newWidth; // account for change in relative width
1420 newLeft += offset/2;
1421 newPosition.x = newLeft;
1422 newExtent.x = newWidth;
1423 }
1424
1425 if (mVertSizing == vertResizeCenter)
1426 newPosition.y = (newParentRect.extent.y - getHeight()) >> 1;
1427 else if (mVertSizing == vertResizeHeight)
1428 newExtent.y += deltaY;
1429 else if (mVertSizing == vertResizeTop)

Callers 1

resizeMethod · 0.45

Calls 6

getPositionFunction · 0.85
getWidthFunction · 0.85
mRoundToNearestFunction · 0.85
getMinExtentFunction · 0.85
getHeightFunction · 0.70
resizeFunction · 0.50

Tested by

no test coverage detected