boxLayoutItems lays out items. bounds parameter is in native pixels.
(container ContainerLayoutItem, items []LayoutItem, orientation Orientation, alignment Alignment2D, bounds Rectangle, margins96dpi Margins, spacing96dpi int, hwnd2StretchFactor map[win.HWND]int)
| 267 | |
| 268 | // boxLayoutItems lays out items. bounds parameter is in native pixels. |
| 269 | func boxLayoutItems(container ContainerLayoutItem, items []LayoutItem, orientation Orientation, alignment Alignment2D, bounds Rectangle, margins96dpi Margins, spacing96dpi int, hwnd2StretchFactor map[win.HWND]int) []LayoutResultItem { |
| 270 | if len(items) == 0 { |
| 271 | return nil |
| 272 | } |
| 273 | |
| 274 | dpi := container.Context().dpi |
| 275 | margins := MarginsFrom96DPI(margins96dpi, dpi) |
| 276 | spacing := IntFrom96DPI(spacing96dpi, dpi) |
| 277 | |
| 278 | var greedyNonSpacerCount int |
| 279 | var greedySpacerCount int |
| 280 | var stretchFactorsTotal [3]int |
| 281 | stretchFactors := make([]int, len(items)) |
| 282 | var minSizesRemaining int |
| 283 | minSizes := make([]int, len(items)) |
| 284 | maxSizes := make([]int, len(items)) |
| 285 | sizes := make([]int, len(items)) |
| 286 | prefSizes2 := make([]int, len(items)) |
| 287 | var shrinkableAmount1Total int |
| 288 | shrinkableAmount1 := make([]int, len(items)) |
| 289 | shrinkable2 := make([]bool, len(items)) |
| 290 | growable2 := make([]bool, len(items)) |
| 291 | sortedItemInfo := boxLayoutItemInfoList(make([]boxLayoutItemInfo, len(items))) |
| 292 | |
| 293 | for i, item := range items { |
| 294 | sf := hwnd2StretchFactor[item.Handle()] |
| 295 | if sf == 0 { |
| 296 | sf = 1 |
| 297 | } |
| 298 | stretchFactors[i] = sf |
| 299 | |
| 300 | geometry := item.Geometry() |
| 301 | |
| 302 | flags := item.LayoutFlags() |
| 303 | |
| 304 | max := geometry.MaxSize |
| 305 | var pref Size |
| 306 | if hfw, ok := item.(HeightForWidther); !ok || !hfw.HasHeightForWidth() { |
| 307 | if is, ok := item.(IdealSizer); ok { |
| 308 | pref = is.IdealSize() |
| 309 | } |
| 310 | } |
| 311 | |
| 312 | if orientation == Horizontal { |
| 313 | growable2[i] = flags&GrowableVert > 0 |
| 314 | |
| 315 | minSizes[i] = container.MinSizeEffectiveForChild(item).Width |
| 316 | |
| 317 | if max.Width > 0 { |
| 318 | maxSizes[i] = max.Width |
| 319 | } else if pref.Width > 0 && flags&GrowableHorz == 0 { |
| 320 | maxSizes[i] = pref.Width |
| 321 | } else { |
| 322 | maxSizes[i] = 32768 |
| 323 | } |
| 324 | |
| 325 | prefSizes2[i] = pref.Height |
| 326 |
no test coverage detected
searching dependent graphs…