Struct gemini_engine::elements::view::Pixel
source · pub struct Pixel {
pub pos: Vec2D,
pub fill_char: ColChar,
}Expand description
Fields§
§pos: Vec2DThe position of the Pixel
fill_char: ColCharThe appearance/colour of the Pixel
Implementations§
source§impl Pixel
impl Pixel
sourcepub const fn new(pos: Vec2D, fill_char: ColChar) -> Self
pub const fn new(pos: Vec2D, fill_char: ColChar) -> Self
Examples found in repository?
More examples
examples/quick-start.rs (line 11)
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
fn main() {
let mut view = View::new(40, 8, ColChar::BACKGROUND);
let mut point = Pixel::new(Vec2D { x: 10, y: 5 }, ColChar::SOLID);
loop {
view.clear();
point.pos.x += 1;
view.blit(&point, Wrapping::Wrap);
view.display_render().unwrap();
gameloop::sleep_fps(FPS, None);
}
}examples/complex-scene.rs (line 16)
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
fn main() {
let mut view = View::new(60, 10, BACKGROUND_CHAR);
view.coord_numbers_in_render = true;
let mut point = Pixel::new(Vec2D::from((5u8, 9u8)), FILL_CHAR);
let mut line = Line::new(Vec2D::new(2, 8), Vec2D::new(28, 7), FILL_CHAR);
let mut line1_direction = -1;
let rect = Rect::new(
Vec2D { x: 11, y: 1 },
Vec2D { x: 9, y: 3 },
ColChar::SOLID.with_rgb(200, 30, 0),
);
let test_image = r"
______
/|_||_\`.__
( _ _ _\
=`-(_)--(_)-' ";
let mut sprite = Sprite::new(
Vec2D::new(30, 1),
test_image,
Modifier::from_rgb(20, 200, 0),
);
let mut blit_elapsed = Duration::default();
let mut render_elapsed = Duration::default();
fps_gameloop!(
{
point.pos.x += 2;
// loop the position back to the other side. This can be done with `Wrapping::Wrap` but it won't change the element's actual position, so the point position being printed would continue to increase without looping
point.pos %= view.size();
line.pos1.y += line1_direction;
line.pos0.y = 10 - line.pos1.y;
if line.pos1.y > 7 {
line1_direction = -1;
} else if line.pos1.y < 3 {
line1_direction = 1;
}
sprite.pos.x += 1;
},
{
view.clear();
let now = Instant::now();
view.blit(&point, Wrapping::Panic);
view.blit(&line, Wrapping::Panic);
view.blit(&rect, Wrapping::Panic);
view.blit(&sprite, Wrapping::Wrap);
blit_elapsed = now.elapsed();
let now = Instant::now();
view.display_render().unwrap();
render_elapsed = now.elapsed();
},
FPS,
|total_elapsed: Duration, _frame_skip| {
println!(
"Blitting: {:.2?} microseconds | Rendering: {:.2?} microseconds| Total: {:.2?}",
blit_elapsed.as_micros(),
render_elapsed.as_micros(),
total_elapsed.as_micros()
);
println!("Pixel position: {}", point.pos);
}
);
}Trait Implementations§
source§impl PartialEq for Pixel
impl PartialEq for Pixel
source§impl ViewElement for Pixel
impl ViewElement for Pixel
source§fn active_pixels(&self) -> Vec<Pixel>
fn active_pixels(&self) -> Vec<Pixel>
Return a vector of every coordinate where a pixel should be placed and its respective
ColChar. If your whole object is a solid colour, consider using utils::points_to_pixels() which will add the same ColChar to every point and can then be used as this function’s outputimpl Copy for Pixel
impl Eq for Pixel
impl StructuralEq for Pixel
impl StructuralPartialEq for Pixel
Auto Trait Implementations§
impl RefUnwindSafe for Pixel
impl Send for Pixel
impl Sync for Pixel
impl Unpin for Pixel
impl UnwindSafe for Pixel
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more