GFX Types v0.2.0
Core Graphics Types for RedstoneOS
Biblioteca de tipos gráficos fundamentais compartilhados entre kernel, compositor e aplicações do RedstoneOS.
📋 Índice
✨ Características
- 🚀
#![no_std]- Compatível com ambientes bare-metal e kernel - 🔒 ABI Estável - Todos os tipos core usam
#[repr(C)]para interoperabilidade - 📦 Modular - Organização clara em submódulos temáticos
- 🎨 Completo - Cores, geometria, buffers, displays, janelas e mais
- 🔧 Zero dependências externas - Apenas
rdsmath(interna) - ⚡ Otimizado - Tipos inline e operações eficientes
📦 Instalação
Como dependência local (RedstoneOS)
[]
= { = "../lib/gfx_types" }
Do crates.io (futuro)
[]
= "0.2"
📁 Módulos
| Módulo | Descrição | Tipos Principais |
|---|---|---|
geometry |
Primitivas geométricas | Point, Size, Rect, Transform2D, Circle, Line |
color |
Sistema de cores | Color, ColorF, PixelFormat, BlendMode, Palette |
buffer |
Buffers de pixels | BufferDescriptor, BufferHandle, BufferView |
display |
Informações de display | DisplayInfo, DisplayMode, VsyncMode, ConnectorType |
window |
Janelas e superfícies | WindowFlags, WindowState, LayerType, WindowEffects |
damage |
Damage tracking | DamageRegion, DamageHint |
input |
Input gráfico | CursorType, TouchPoint, GestureType |
render |
Comandos de render | RenderOp, ClipRect, BlitParams, PipelineState |
text |
Tipografia básica | FontWeight, FontStyle, GlyphMetrics, TextAlign |
🚀 Uso
Prelude (tipos mais comuns)
use *;
// Tudo que você precisa para começar
let rect = new;
let color = rgb;
let point = new;
Geometria
use *;
// Pontos
let p = new;
let pf = new;
let distance = pf.distance;
// Retângulos
let r = new;
assert!;
let intersection = r.intersection;
// Transformações 2D
let transform = translate
.then_rotate
.then_scale;
let point = transform.transform_point;
// Círculos e Elipses
let circle = from_coords;
let on_edge = circle.point_at_angle;
Cores
use *;
// Criar cores
let red = rgb;
let transparent_blue = argb;
let from_hex = from_hex;
// Manipular
let darker = red.with_alpha;
let inverted = red.invert;
let gray = red.to_grayscale;
// Interpolação
let gradient = red.lerp;
// Blend modes
let blend = SourceOver;
let multiply = Multiply;
// Paletas predefinidas
let mocha_base = CATPPUCCIN_MOCHA.get;
Buffers
use *;
use PixelFormat;
// Descritor de buffer
let desc = new;
println!;
println!;
// Buffer views
let mut data = vec!;
let mut view = new.unwrap;
view.clear;
Janelas
use *;
// Flags combinadas
let flags = BORDERLESS | TRANSPARENT;
assert!;
// Estados
let state = Maximized;
assert!;
// Efeitos
let effects = DEFAULT
.with_corner_radius
.with_opacity;
📐 Tipos Principais
Point / PointF
Size / SizeF
Rect / RectF
Color
; // ARGB format
PixelFormat
WindowFlags
;
// BORDERLESS, ALWAYS_ON_TOP, TRANSPARENT, FULLSCREEN,
// NO_RESIZE, HAS_SHADOW, MODAL, etc.
🔧 Features
| Feature | Descrição |
|---|---|
default |
Sem features extras |
alloc |
Tipos que precisam de alocação |
std |
Suporte a standard library |
🔗 Compatibilidade
| Componente | Status |
|---|---|
| Kernel (Forge) | ✅ Totalmente compatível |
| Compositor (Firefly) | ✅ Totalmente compatível |
| SDK (Redpowder) | ✅ Totalmente compatível |
| Aplicações | ✅ Via Redpowder |
📁 Estrutura do Projeto
gfx_types/
├── src/
│ ├── lib.rs # Re-exports e prelude
│ ├── geometry/ # Primitivas geométricas
│ │ ├── point.rs
│ │ ├── size.rs
│ │ ├── rect.rs
│ │ ├── line.rs
│ │ ├── circle.rs
│ │ ├── insets.rs
│ │ ├── polygon.rs
│ │ └── transform.rs
│ ├── color/ # Sistema de cores
│ │ ├── color.rs
│ │ ├── format.rs
│ │ ├── blend.rs
│ │ ├── palette.rs
│ │ └── space.rs
│ ├── buffer/ # Buffers de pixels
│ ├── display/ # Display/output
│ ├── window/ # Janelas
│ ├── damage/ # Damage tracking
│ ├── input/ # Cursor/touch
│ ├── render/ # Comandos de render
│ └── text/ # Tipografia
├── tests/ # Testes de integração
├── examples/ # Exemplos de uso
├── benches/ # Benchmarks
├── Cargo.toml
└── README.md
🤝 Contribuição
Contribuições são bem-vindas! Por favor:
- Fork o repositório
- Crie uma branch (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -am 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
📄 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
RedstoneOS Team - github.com/redstone-os