9个不稳定版本 (3个破坏性更新)
0.4.0 | 2019年8月2日 |
---|---|
0.3.0 | 2019年4月11日 |
0.2.1 | 2019年2月6日 |
0.2.0 | 2019年1月12日 |
0.1.4 | 2018年11月19日 |
#127 in 渲染
140KB
1K SLoC
描述
这个crate提供了一个文本对齐的数据结构。可以定义矩形Pane
,它们可以包含更小的子Pane
,并且可以计算其中文本字符的位置。
默认开启的graphics
特性允许使用piston2d-graphics
crate直接渲染Pane
。
示例
以下示例创建了一个简单的Pane
树,其中一些节点包含格式化的文本。然后使用我的graphics_buffer
crate绘制面板,并将图像保存到文件中。
use graphics_buffer::*;
use pane::prelude::*;
static ROBOTO: &'static [u8] = include_bytes!("roboto.ttf");
const MESSAGE1: &str =
"Somebody once told me the world is gonna role me. I ain't the sharpest tool in the shed.";
const MESSAGE2: &str = "She was lookin' kinda dumb with her finger and her thumb";
const MESSAGE3: &str = "in the shape of an 'L' on her forehead.";
fn main() {
// Initialize the glyphs
let mut glyphs = BufferGlyphs::from_bytes(ROBOTO).unwrap();
// Initialize a text format
let format = TextFormat::new(50).color(color::WHITE);
// Create a pane
let pane = Pane::new()
.with_rect([0.0, 0.0, 400.0, 300.0])
.with_color(color::BLACK)
.with_margin(10.0)
.with_orientation(Orientation::Horizontal)
// Add some sub-panes
.with_panes(vec![
// This pane will be on the left
Pane::new()
.with_color(color::RED)
.with_contents(Contents::text(MESSAGE1, format))
.with_margin(5.0),
// This pane will be on the right, but it is split into more sub-panes
Pane::new()
.with_color(color::WHITE)
.with_margin(5.0)
.with_panes(vec![
// This pane will be in the top-right
Pane::new()
.with_color(color::GREEN)
.with_contents(Contents::text(MESSAGE2, format.right()))
.with_margin(5.0),
// This pane will be in the bottom-right
Pane::new()
.with_color(color::BLUE)
.with_contents(Contents::text(MESSAGE3, format.centered()))
.with_margin(5.0),
]),
])
// Call this at the end
.fit_text(&mut glyphs);
// Create a RenderBuffer with the same size as the pane
let mut buffer = RenderBuffer::new(pane.rect().width() as u32, pane.rect().height() as u32);
buffer.clear([1.0, 1.0, 1.0, 1.0]);
// Draw the pane to the buffer
pane.draw(&mut glyphs, IDENTITY, &mut buffer).unwrap();
// Save the buffer
buffer.save("simple.png").unwrap();
}
此示例创建了下面的图像。注意不同的文本对齐方式。
依赖项
~0.4–1.6MB
~26K SLoC