/** * @return The bounds of this component relative to its hosting {@link LithoView}. */ public Rect getBoundsInLithoView() { if (isRoot()) { return new Rect(0, 0, mNode.getWidth(), mNode.getHeight()); } final int x = getXFromRoot(mNode); final int y = getYFromRoot(mNode); return new Rect(x, y, x + mNode.getWidth(), y + mNode.getHeight()); }
/** * @return The bounds of this component relative to its parent. */ public Rect getBounds() { final int x = mNode.getX(); final int y = mNode.getY(); return new Rect(x, y, x + mNode.getWidth(), y + mNode.getHeight()); }
if (lastMeasuredLayout == null || !MeasureComparisonUtils.isMeasureSpecCompatible( lastMeasuredLayout.getLastWidthSpec(), widthSpec, lastMeasuredLayout.getWidth()) || !MeasureComparisonUtils.isMeasureSpecCompatible( lastMeasuredLayout.getLastHeightSpec(), heightSpec, lastMeasuredLayout.getHeight())) { lastMeasuredLayout.setLastWidthSpec(widthSpec); lastMeasuredLayout.setLastHeightSpec(heightSpec); lastMeasuredLayout.setLastMeasuredWidth(lastMeasuredLayout.getWidth()); lastMeasuredLayout.setLastMeasuredHeight(lastMeasuredLayout.getHeight()); outputSize.width = lastMeasuredLayout.getWidth(); outputSize.height = lastMeasuredLayout.getHeight();
@Test public void testLayoutSpecMeasureResolveNestedTree() { Component component = setUpSpyComponentForCreateLayout( false /* isMountSpec */, true /* canMeasure */); YogaMeasureFunction measureFunction = getMeasureFunction(component); final int nestedTreeWidth = 20; final int nestedTreeHeight = 25; InternalNode nestedTree = mock(InternalNode.class); when(nestedTree.getWidth()).thenReturn(nestedTreeWidth); when(nestedTree.getHeight()).thenReturn(nestedTreeHeight); when(LayoutState.resolveNestedTree(eq(mContext), eq(mNode), anyInt(), anyInt())) .thenReturn(nestedTree); when(mNode.getContext()).thenReturn(mContext); long output = measureFunction.measure(mNode.mYogaNode, 0, EXACTLY, 0, EXACTLY); PowerMockito.verifyStatic(); LayoutState.resolveNestedTree(eq(mContext), eq(mNode), anyInt(), anyInt()); assertThat(YogaMeasureOutput.getWidth(output)).isEqualTo(nestedTreeWidth); assertThat(YogaMeasureOutput.getHeight(output)).isEqualTo(nestedTreeHeight); }
@Test public void testLayoutSpecMeasureResolveNestedTree_withExperiment() { Component component = setUpSpyComponentForCreateLayout(false /* isMountSpec */, true /* canMeasure */); YogaMeasureFunction measureFunction = getMeasureFunction(component); final int nestedTreeWidth = 20; final int nestedTreeHeight = 25; InternalNode nestedTree = mock(InternalNode.class); when(nestedTree.getWidth()).thenReturn(nestedTreeWidth); when(nestedTree.getHeight()).thenReturn(nestedTreeHeight); when(LayoutState.resolveNestedTree(eq(mContext), eq(mNode), anyInt(), anyInt())) .thenReturn(nestedTree); when(mNode.getContext()).thenReturn(mContext); when(mContext.isNestedTreeResolutionExperimentEnabled()).thenReturn(true); when(mNode.getParent()).thenReturn(mNode); when(mNode.getContext()).thenReturn(mContext); long output = measureFunction.measure(mNode.mYogaNode, 0, EXACTLY, 0, EXACTLY); PowerMockito.verifyStatic(); LayoutState.resolveNestedTree(eq(mContext), eq(mNode), anyInt(), anyInt()); assertThat(YogaMeasureOutput.getWidth(output)).isEqualTo(nestedTreeWidth); assertThat(YogaMeasureOutput.getHeight(output)).isEqualTo(nestedTreeHeight); }
@Test public void testDefaultDimenPaddingRes() { Column column = Column.create(mContext).paddingRes(LEFT, test_dimen).build(); InternalNode node = Layout.create(mContext, column); node.calculateLayout(); int dimen = mContext.getResources().getDimensionPixelSize(test_dimen); assertThat(node.getWidth()).isEqualTo(dimen); }
@Test public void testDefaultDimenAttribute() { Column column = Column.create(mContext).widthAttr(undefinedAttrDimen, test_dimen).build(); InternalNode node = Layout.create(mContext, column); node.calculateLayout(); int dimen = mContext.getResources().getDimensionPixelSize(R.dimen.test_dimen); assertThat((int) node.getWidth()).isEqualTo(dimen); }
@Test public void testResolveDimenAttribute() { Column column = Column.create(mContext).widthAttr(testAttrDimen, default_dimen).build(); InternalNode node = Layout.create(mContext, column); node.calculateLayout(); int dimen = mContext.getResources().getDimensionPixelSize(R.dimen.test_dimen); assertThat((int) node.getWidth()).isEqualTo(dimen); }
@Test public void testDefaultDimenWidthRes() { Column column = Column.create(mContext).widthRes(test_dimen).build(); InternalNode node = Layout.create(mContext, column); node.calculateLayout(); int dimen = mContext.getResources().getDimensionPixelSize(test_dimen); assertThat(node.getWidth()).isEqualTo(dimen); }
@Test public void testFloatDimenWidthAttribute() { Column column = Column.create(mContext).widthAttr(undefinedAttrDimen, test_dimen_float).build(); InternalNode node = Layout.create(mContext, column); node.calculateLayout(); int dimen = mContext.getResources().getDimensionPixelSize(test_dimen_float); assertThat(node.getWidth()).isEqualTo(dimen); }
@Test public void testFloatDimenWidthRes() { Column column = Column.create(mContext).widthRes(test_dimen_float).build(); InternalNode node = Layout.create(mContext, column); node.calculateLayout(); int dimen = mContext.getResources().getDimensionPixelSize(test_dimen_float); assertThat(node.getWidth()).isEqualTo(dimen); }
private static TestOutput createTestOutput( InternalNode node, LayoutState layoutState, LayoutOutput layoutOutput) { final int l = layoutState.mCurrentX + node.getX(); final int t = layoutState.mCurrentY + node.getY(); final int r = l + node.getWidth(); final int b = t + node.getHeight(); final TestOutput output = ComponentsPools.acquireTestOutput(); output.setTestKey(node.getTestKey()); output.setBounds(l, t, r, b); output.setHostMarker(layoutState.mCurrentHostMarker); if (layoutOutput != null) { output.setLayoutOutputId(layoutOutput.getId()); } return output; }
@Test public void testMeasure() { final int width = 50; final int height = 30; final ComponentContext c = new ComponentContext(application); final Component component = new InlineLayoutSpec() { @Override protected Component onCreateLayout(final ComponentContext c) { return create(c) .child(TestDrawableComponent.create(c).measuredWidth(width).measuredHeight(height)) .build(); } }; final InternalNode node = createAndMeasureTreeForComponent( c, component, makeSizeSpec(width, AT_MOST), makeSizeSpec(height, AT_MOST)); assertThat(node.getWidth()).isEqualTo(width); assertThat(node.getHeight()).isEqualTo(height); assertThat(node.getChildCount()).isEqualTo(1); assertThat(((InternalNode) node.getChildAt(0)).getWidth()).isEqualTo(width); assertThat(((InternalNode) node.getChildAt(0)).getHeight()).isEqualTo(height); }
.arg("widthSpec", "EXACTLY " + node.getWidth()) .arg("heightSpec", "EXACTLY " + node.getHeight()) .arg("rootComponentId", node.getRootComponent().getId()) : node.getContext(), node, SizeSpec.makeSizeSpec(node.getWidth(), EXACTLY), SizeSpec.makeSizeSpec(node.getHeight(), EXACTLY)); if (isTracing) { rect.left = layoutState.mCurrentX + node.getX(); rect.top = layoutState.mCurrentY + node.getY(); rect.right = rect.left + node.getWidth(); rect.bottom = rect.top + node.getHeight();
final int r = l + node.getWidth(); final int b = t + node.getHeight();
internalNode.setLastWidthSpec(widthSpec); internalNode.setLastHeightSpec(heightSpec); internalNode.setLastMeasuredWidth(internalNode.getWidth()); internalNode.setLastMeasuredHeight(internalNode.getHeight());
int r = l + node.getWidth(); int b = t + node.getHeight();
resolvedLayout.setLastHeightSpec(heightSpec); resolvedLayout.setLastMeasuredHeight(resolvedLayout.getHeight()); resolvedLayout.setLastMeasuredWidth(resolvedLayout.getWidth());
LayoutState.resolveNestedTree(context, node, widthSpec, heightSpec); outputWidth = nestedTree.getWidth(); outputHeight = nestedTree.getHeight(); } else if (diffNode != null