Add screen model
This commit is contained in:
parent
64d4746545
commit
bd9dde064e
2
build.rs
2
build.rs
@ -1,4 +1,6 @@
|
||||
|
||||
fn main() {
|
||||
if cfg!(target = "windows") {
|
||||
println!("cargo:rustc-link-search=native=C:\\msys64\\mingw64\\lib");
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
extern crate gtk;
|
||||
extern crate cairo;
|
||||
|
||||
mod ui_model;
|
||||
mod ui;
|
||||
|
||||
use ui::Ui;
|
||||
|
@ -3,6 +3,8 @@ use gtk;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{Window, WindowType, DrawingArea, Grid, Button, ButtonBox, Orientation};
|
||||
|
||||
use ui_model::UiModel;
|
||||
|
||||
pub struct Ui;
|
||||
|
||||
impl Ui {
|
||||
|
40
src/ui_model.rs
Normal file
40
src/ui_model.rs
Normal file
@ -0,0 +1,40 @@
|
||||
pub struct Cell {
|
||||
ch: char,
|
||||
}
|
||||
|
||||
impl Cell {
|
||||
pub fn new(ch: char) -> Cell {
|
||||
Cell { ch: ch }
|
||||
}
|
||||
}
|
||||
|
||||
pub struct UiModel {
|
||||
columns: u64,
|
||||
rows: u64,
|
||||
cur_row: u64,
|
||||
cur_col: u64,
|
||||
model: Vec<Cell>,
|
||||
}
|
||||
|
||||
impl UiModel {
|
||||
pub fn new(columns: u64, rows: u64) -> UiModel {
|
||||
let cells = (columns * rows) as usize;
|
||||
let mut model = Vec::with_capacity(cells);
|
||||
for i in 0..cells {
|
||||
model[i] = Cell::new(' ');
|
||||
}
|
||||
|
||||
UiModel {
|
||||
columns: columns,
|
||||
rows: rows,
|
||||
cur_row: 0,
|
||||
cur_col: 0,
|
||||
model: model,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_cursor(&mut self, col: u64, row: u64) {
|
||||
self.cur_col = col;
|
||||
self.cur_row = row;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user