Add more unit tests for rounding values to pixel grid #1776
@@ -66,7 +66,8 @@ void roundLayoutResultsToPixelGrid(
|
||||
yoga::Node* const node,
|
||||
const double absoluteLeft,
|
||||
const double absoluteTop) {
|
||||
const auto pointScaleFactor = node->getConfig()->getPointScaleFactor();
|
||||
const auto pointScaleFactor =
|
||||
static_cast<double>(node->getConfig()->getPointScaleFactor());
|
||||
|
||||
const double nodeLeft = node->getLayout().position(PhysicalEdge::Left);
|
||||
const double nodeTop = node->getLayout().position(PhysicalEdge::Top);
|
||||
@@ -80,7 +81,7 @@ void roundLayoutResultsToPixelGrid(
|
||||
const double absoluteNodeRight = absoluteNodeLeft + nodeWidth;
|
||||
const double absoluteNodeBottom = absoluteNodeTop + nodeHeight;
|
||||
|
||||
if (pointScaleFactor != 0.0f) {
|
||||
if (pointScaleFactor != 0.0) {
|
||||
// If a node has a custom measure function we never want to round down its
|
||||
// size as this could lead to unwanted text truncation.
|
||||
const bool textRounding = node->getNodeType() == NodeType::Text;
|
||||
@@ -96,12 +97,14 @@ void roundLayoutResultsToPixelGrid(
|
||||
// We multiply dimension by scale factor and if the result is close to the
|
||||
// whole number, we don't have any fraction To verify if the result is close
|
||||
// to whole number we want to check both floor and ceil numbers
|
||||
|
||||
const double scaledNodeWith = nodeWidth * pointScaleFactor;
|
||||
const bool hasFractionalWidth =
|
||||
!yoga::inexactEquals(fmod(nodeWidth * pointScaleFactor, 1.0), 0) &&
|
||||
!yoga::inexactEquals(fmod(nodeWidth * pointScaleFactor, 1.0), 1.0);
|
||||
!yoga::inexactEquals(round(scaledNodeWith), scaledNodeWith);
|
||||
|
||||
const double scaledNodeHeight = nodeHeight * pointScaleFactor;
|
||||
const bool hasFractionalHeight =
|
||||
!yoga::inexactEquals(fmod(nodeHeight * pointScaleFactor, 1.0), 0) &&
|
||||
!yoga::inexactEquals(fmod(nodeHeight * pointScaleFactor, 1.0), 1.0);
|
||||
!yoga::inexactEquals(round(scaledNodeHeight), scaledNodeHeight);
|
||||
|
||||
node->setLayoutDimension(
|
||||
roundValueToPixelGrid(
|
||||
|
Reference in New Issue
Block a user