| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 #include "SkStackViewLayout.h" | 8 #include "SkStackViewLayout.h" |
| 9 | 9 |
| 10 SkStackViewLayout::SkStackViewLayout() | 10 SkStackViewLayout::SkStackViewLayout() |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 ignore its current value but increment the counter for flexChildren | 72 ignore its current value but increment the counter for flexChildren |
| 73 */ | 73 */ |
| 74 static SkScalar compute_children_limit(SkView* parent, GetSizeProc sizeProc, int
* count, | 74 static SkScalar compute_children_limit(SkView* parent, GetSizeProc sizeProc, int
* count, |
| 75 uint32_t flexMask, int* flexCount) | 75 uint32_t flexMask, int* flexCount) |
| 76 { | 76 { |
| 77 SkView::B2FIter iter(parent); | 77 SkView::B2FIter iter(parent); |
| 78 SkView* child; | 78 SkView* child; |
| 79 SkScalar limit = 0; | 79 SkScalar limit = 0; |
| 80 int n = 0, flex = 0; | 80 int n = 0, flex = 0; |
| 81 | 81 |
| 82 while ((child = iter.next()) != NULL) | 82 while ((child = iter.next()) != nullptr) |
| 83 { | 83 { |
| 84 n += 1; | 84 n += 1; |
| 85 if (child->getFlags() & flexMask) | 85 if (child->getFlags() & flexMask) |
| 86 flex += 1; | 86 flex += 1; |
| 87 else | 87 else |
| 88 limit += (child->*sizeProc)(); | 88 limit += (child->*sizeProc)(); |
| 89 } | 89 } |
| 90 if (count) | 90 if (count) |
| 91 *count = n; | 91 *count = n; |
| 92 if (flexCount) | 92 if (flexCount) |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 mainLocP = &SkView::setLocY; | 138 mainLocP = &SkView::setLocY; |
| 139 crossLocP = &SkView::setLocX; | 139 crossLocP = &SkView::setLocX; |
| 140 | 140 |
| 141 mainSetSizeP = &SkView::setHeight; | 141 mainSetSizeP = &SkView::setHeight; |
| 142 crossSetSizeP = &SkView::setWidth; | 142 crossSetSizeP = &SkView::setWidth; |
| 143 | 143 |
| 144 flexMask = SkView::kFlexV_Mask; | 144 flexMask = SkView::kFlexV_Mask; |
| 145 } | 145 } |
| 146 crossLimit += (parent->*crossGetSizeP)(); | 146 crossLimit += (parent->*crossGetSizeP)(); |
| 147 if (fAlign != kStretch_Align) | 147 if (fAlign != kStretch_Align) |
| 148 crossSetSizeP = NULL; | 148 crossSetSizeP = nullptr; |
| 149 | 149 |
| 150 int childCount, flexCount; | 150 int childCount, flexCount; |
| 151 SkScalar childLimit = compute_children_limit(parent, mainGetSizeP, &child
Count, flexMask, &flexCount); | 151 SkScalar childLimit = compute_children_limit(parent, mainGetSizeP, &child
Count, flexMask, &flexCount); |
| 152 | 152 |
| 153 if (childCount == 0) | 153 if (childCount == 0) |
| 154 return; | 154 return; |
| 155 | 155 |
| 156 childLimit += (childCount - 1) * fSpacer; | 156 childLimit += (childCount - 1) * fSpacer; |
| 157 | 157 |
| 158 SkScalar parentLimit = (parent->*mainGetSizeP)() - startM - endM; | 158 SkScalar parentLimit = (parent->*mainGetSizeP)() - startM - endM; |
| 159 SkScalar pos = startM + gAlignProcs[fPack](childLimit, parentLimit); | 159 SkScalar pos = startM + gAlignProcs[fPack](childLimit, parentLimit); |
| 160 SkScalar flexAmount = 0; | 160 SkScalar flexAmount = 0; |
| 161 SkView::B2FIter iter(parent); | 161 SkView::B2FIter iter(parent); |
| 162 SkView* child; | 162 SkView* child; |
| 163 | 163 |
| 164 if (flexCount > 0 && parentLimit > childLimit) | 164 if (flexCount > 0 && parentLimit > childLimit) |
| 165 flexAmount = (parentLimit - childLimit) / flexCount; | 165 flexAmount = (parentLimit - childLimit) / flexCount; |
| 166 | 166 |
| 167 while ((child = iter.next()) != NULL) | 167 while ((child = iter.next()) != nullptr) |
| 168 { | 168 { |
| 169 if (fRound) | 169 if (fRound) |
| 170 pos = SkScalarRoundToScalar(pos); | 170 pos = SkScalarRoundToScalar(pos); |
| 171 (child->*mainLocP)(pos); | 171 (child->*mainLocP)(pos); |
| 172 SkScalar crossLoc = crossStartM + gAlignProcs[fAlign]((child->*crossGetS
izeP)(), crossLimit); | 172 SkScalar crossLoc = crossStartM + gAlignProcs[fAlign]((child->*crossGetS
izeP)(), crossLimit); |
| 173 if (fRound) | 173 if (fRound) |
| 174 crossLoc = SkScalarRoundToScalar(crossLoc); | 174 crossLoc = SkScalarRoundToScalar(crossLoc); |
| 175 (child->*crossLocP)(crossLoc); | 175 (child->*crossLocP)(crossLoc); |
| 176 | 176 |
| 177 if (crossSetSizeP) | 177 if (crossSetSizeP) |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 void SkFillViewLayout::setMargin(const SkRect& margin) | 251 void SkFillViewLayout::setMargin(const SkRect& margin) |
| 252 { | 252 { |
| 253 fMargin = margin; | 253 fMargin = margin; |
| 254 } | 254 } |
| 255 | 255 |
| 256 void SkFillViewLayout::onLayoutChildren(SkView* parent) | 256 void SkFillViewLayout::onLayoutChildren(SkView* parent) |
| 257 { | 257 { |
| 258 SkView::B2FIter iter(parent); | 258 SkView::B2FIter iter(parent); |
| 259 SkView* child; | 259 SkView* child; |
| 260 | 260 |
| 261 while ((child = iter.next()) != NULL) | 261 while ((child = iter.next()) != nullptr) |
| 262 { | 262 { |
| 263 child->setLoc(fMargin.fLeft, fMargin.fTop); | 263 child->setLoc(fMargin.fLeft, fMargin.fTop); |
| 264 child->setSize( parent->width() - fMargin.fRight - fMargin.fLeft, | 264 child->setSize( parent->width() - fMargin.fRight - fMargin.fLeft, |
| 265 parent->height() - fMargin.fBottom - fMargin.fTop); | 265 parent->height() - fMargin.fBottom - fMargin.fTop); |
| 266 } | 266 } |
| 267 } | 267 } |
| 268 | 268 |
| 269 void SkFillViewLayout::onInflate(const SkDOM& dom, const SkDOM::Node* node) | 269 void SkFillViewLayout::onInflate(const SkDOM& dom, const SkDOM::Node* node) |
| 270 { | 270 { |
| 271 this->INHERITED::onInflate(dom, node); | 271 this->INHERITED::onInflate(dom, node); |
| 272 (void)dom.findScalars(node, "margin", (SkScalar*)&fMargin, 4); | 272 (void)dom.findScalars(node, "margin", (SkScalar*)&fMargin, 4); |
| 273 } | 273 } |
| OLD | NEW |