firstShapeAndText

fun firstShapeAndText(layerName: String, geometryType: MvtGeometryType, zoom: Int, properties: Map<String, Any?>, out: MvtRuleBasedStyle.ShapeTextRules)

Single-pass shape+text resolution for one feature. Walks rules ONCE by index (no iterator allocation), evaluating each rule's MvtStyleRule.matches at most once, and captures into out the FIRST matching rule whose paint hasShape and (independently) the FIRST whose paint hasText. Early-exits once both are found. Byte-identical to two separate firstMatching(...) { it.paint.hasShape } / { it.paint.hasText } calls, but without re-walking the list or re-running matches twice per rule.

Reuses the caller-supplied out holder so no allocation occurs in the hot per-feature path.