Lines Matching full:components

112 std::string Swizzle::MaskString(const ComponentArray& components) {  in MaskString()  argument
114 for (int8_t component : components) { in MaskString()
123 ComponentArray components) { in optimize_constructor_swizzle() argument
128 int swizzleSize = components.size(); in optimize_constructor_swizzle()
173 for (int8_t c : components) { in optimize_constructor_swizzle()
196 for (int8_t c : components) { in optimize_constructor_swizzle()
215 // Since we know this argument uses components, it should already have at least one in optimize_constructor_swizzle()
254 "too many components in swizzle mask"); in Convert()
259 ComponentArray components; in Convert() local
263 case '0': components.push_back(SwizzleComponent::ZERO); break; in Convert()
264 case '1': components.push_back(SwizzleComponent::ONE); break; in Convert()
265 case 'x': components.push_back(SwizzleComponent::X); break; in Convert()
266 case 'r': components.push_back(SwizzleComponent::R); break; in Convert()
267 case 's': components.push_back(SwizzleComponent::S); break; in Convert()
268 case 'L': components.push_back(SwizzleComponent::UL); break; in Convert()
269 case 'y': components.push_back(SwizzleComponent::Y); break; in Convert()
270 case 'g': components.push_back(SwizzleComponent::G); break; in Convert()
271 case 't': components.push_back(SwizzleComponent::T); break; in Convert()
272 case 'T': components.push_back(SwizzleComponent::UT); break; in Convert()
273 case 'z': components.push_back(SwizzleComponent::Z); break; in Convert()
274 case 'b': components.push_back(SwizzleComponent::B); break; in Convert()
275 case 'p': components.push_back(SwizzleComponent::P); break; in Convert()
276 case 'R': components.push_back(SwizzleComponent::UR); break; in Convert()
277 case 'w': components.push_back(SwizzleComponent::W); break; in Convert()
278 case 'a': components.push_back(SwizzleComponent::A); break; in Convert()
279 case 'q': components.push_back(SwizzleComponent::Q); break; in Convert()
280 case 'B': components.push_back(SwizzleComponent::UB); break; in Convert()
289 if (!validate_swizzle_domain(components)) { in Convert()
290 context.fErrors->error(maskPos, "invalid swizzle mask '" + MaskString(components) + "'"); in Convert()
304 for (int i = 0; i < components.size(); ++i) { in Convert()
305 switch (components[i]) { in Convert()
352 mask_char(components[i]))); in Convert()
368 // Swizzles are complicated due to constant components. The most difficult case is a mask like in Convert()
382 if (maskComponents.size() == components.size()) { in Convert()
408 for (int i = 0; i < components.size(); i++) { in Convert()
409 switch (components[i]) { in Convert()
441 bool Swizzle::IsIdentity(const ComponentArray& components) { in IsIdentity() argument
442 for (int index = 0; index < components.size(); ++index) { in IsIdentity()
443 if (components[index] != index) { in IsIdentity()
453 ComponentArray components) { in Make() argument
457 SkASSERT(components.size() >= 1 && components.size() <= 4); in Make()
462 SkASSERT(std::all_of(components.begin(), components.end(), [](int8_t component) { in Make()
471 exprType.toCompound(context, components.size(), /*rows=*/1), in Make()
476 if (components.size() == exprType.columns() && IsIdentity(components)) { in Make()
485 for (int8_t c : components) { in Make()
486 combined.push_back(base.components()[c]); in Make()
499 // optimized to just `scalar`. The swizzle components don't actually matter, as every field in Make()
505 splat.type().componentType().toCompound(context, components.size(), /*rows=*/1), in Make()
512 const Type& castType = cast.type().componentType().toCompound(context, components.size(), in Make()
515 std::move(components)); in Make()
524 if (auto replacement = optimize_constructor_swizzle(context, pos, ctor, components)) { in Make()
530 return std::make_unique<Swizzle>(context, pos, std::move(expr), components); in Make()
536 ComponentArray components) { in MakeExact() argument
539 SkASSERT(components.size() >= 1 && components.size() <= 4); in MakeExact()
542 SkASSERT(std::all_of(components.begin(), components.end(), [](int8_t component) { in MakeExact()
547 return std::make_unique<Swizzle>(context, pos, std::move(expr), components); in MakeExact()
552 MaskString(this->components()); in description()