Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Does `AlphaMode::Opaque` carry its weight?

Aberta
#342 1 comentário 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
5/5
Tempo estimado
Mais de uma semana
Facilidade para iniciantes
25/100
Tipo de issue
Funcionalidade
Clareza
Precisa de esclarecimento
Status de atividade
Estagnada
Stack de tecnologia
rust

Direção de pesquisa

Comece revisando a API AlphaMode e o comportamento descrito no pull request 321. Compare as restrições de IOSurface e Web canvas no macOS/iOS, incluindo as possíveis configurações de alpha de CALayer e canvas, e verifique a issue 211 para obter requisitos relacionados. O trabalho estará concluído quando houver uma decisão documentada sobre se Opaque deve continuar sendo um modo separado.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Needs Design Work

In https://github.com/rust-windowing/softbuffer/pull/321, I added AlphaMode::Opaque as a sort of workaround for not all platforms supporting a mode where the alpha channel is ignored.

Specifically:

  • On macOS/iOS with IOSurface, only premultiplied surfaces are supported.
  • On Web, both pre- and postmultiplied can be supported zero-copy, but ignored cannot.

Another way to model this would be:

#[derive(Default)]
pub enum AlphaMode {
    #[cfg_attr(not(any(target_vendor = "apple", target_family = "wasm")), default)]
    Ignored,
    #[cfg_attr(target_vendor = "apple", default)]
    Premultiplied,
    #[cfg_attr(target_family = "wasm", default)]
    Postmultiplied,
}

Is there a strong benefit to having a separate AlphaMode::Opaque? We use it currently for debug-asserting that the alpha channel is 1.0, to help with writing cross-platform code, but is that enough of an argument? Is it useful for setting properties like CALayer.setOpaque(true) or { alpha: false } in canvas.getContext?

I guess it may be useful for https://github.com/rust-windowing/softbuffer/issues/211?

Linguagem predominante
Rust
Estrelas
511
Forks
88
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

  • Sem Dockerfile nem arquivo Docker Compose
  • Tem um modelo de pull request
  • Sem guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de rust-windowing/softbuffer

Todas as issues de rust-windowing/softbuffer

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.