Render the board in the background
This commit is contained in:
parent
0a62c96b0f
commit
32391a46e7
|
@ -37,14 +37,16 @@ You should have received a copy of the GNU General Public License along with On
|
|||
|
||||
use crate::perftrace;
|
||||
|
||||
use gio::resources_lookup_data;
|
||||
use glib::Object;
|
||||
use gtk::{
|
||||
gdk_pixbuf::{InterpType, Pixbuf},
|
||||
prelude::*,
|
||||
subclass::prelude::*,
|
||||
};
|
||||
|
||||
use image::{io::Reader as ImageReader, ImageError};
|
||||
use otg_core::{Color, Coordinate};
|
||||
use std::{cell::RefCell, rc::Rc};
|
||||
use std::{cell::RefCell, io::Cursor, rc::Rc};
|
||||
|
||||
const WIDTH: i32 = 800;
|
||||
const HEIGHT: i32 = 800;
|
||||
|
@ -105,29 +107,7 @@ impl Goban {
|
|||
|
||||
fn redraw(&self, ctx: &cairo::Context, width: i32, height: i32) {
|
||||
println!("{} x {}", width, height);
|
||||
/*
|
||||
let wood_texture = resources_lookup_data(
|
||||
"/com/luminescent-dreams/otg-gtk/wood_texture.jpg",
|
||||
gio::ResourceLookupFlags::NONE,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let background = ImageReader::new(Cursor::new(wood_texture))
|
||||
.with_guessed_format()
|
||||
.unwrap()
|
||||
.decode();
|
||||
let background = background.map(|background| {
|
||||
Pixbuf::from_bytes(
|
||||
&glib::Bytes::from(background.as_bytes()),
|
||||
gtk::gdk_pixbuf::Colorspace::Rgb,
|
||||
false,
|
||||
8,
|
||||
background.width() as i32,
|
||||
background.height() as i32,
|
||||
background.to_rgb8().sample_layout().height_stride as i32,
|
||||
)
|
||||
.scale_simple(WIDTH, HEIGHT, InterpType::Nearest)
|
||||
});
|
||||
let background = load_pixbuf("/com/luminescent-dreams/otg-gtk/wood_texture.jpg", WIDTH+40, HEIGHT+40);
|
||||
|
||||
match background {
|
||||
Ok(Some(ref background)) => {
|
||||
|
@ -136,10 +116,6 @@ impl Goban {
|
|||
}
|
||||
Ok(None) | Err(_) => ctx.set_source_rgb(0.7, 0.7, 0.7),
|
||||
}
|
||||
*/
|
||||
|
||||
ctx.set_source_rgb(0.7, 0.7, 0.7);
|
||||
let _ = ctx.paint();
|
||||
|
||||
let board = self.imp().board_state.borrow();
|
||||
|
||||
|
@ -189,7 +165,7 @@ impl Goban {
|
|||
(0..board.size.height).for_each(|row| {
|
||||
(0..board.size.width).for_each(|column| {
|
||||
match board.stone(&Coordinate { row, column }) {
|
||||
None => {},
|
||||
None => {}
|
||||
Some(Color::White) => pen.stone(ctx, row, column, Color::White, None),
|
||||
Some(Color::Black) => pen.stone(ctx, row, column, Color::Black, None),
|
||||
}
|
||||
|
@ -206,6 +182,25 @@ struct Pen {
|
|||
}
|
||||
|
||||
impl Pen {
|
||||
/*
|
||||
fn new(x_offset: f64, y_offset: f64, hspace_between: f64, vspace_between: f64) -> Self {
|
||||
/*
|
||||
let black_stone = resources_lookup_data(
|
||||
"/com/luminescent-dreams/otg-gtk/black_stone.png",
|
||||
gio::ResourceLookupFlags::NONE,
|
||||
)
|
||||
.unwrap();
|
||||
*/
|
||||
|
||||
Pen {
|
||||
x_offset,
|
||||
y_offset,
|
||||
hspace_between,
|
||||
vspace_between,
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
fn star_point(&self, context: &cairo::Context, row: u8, col: u8) {
|
||||
context.arc(
|
||||
self.x_offset + (col as f64) * self.hspace_between,
|
||||
|
@ -263,3 +258,24 @@ impl Pen {
|
|||
)
|
||||
}
|
||||
}
|
||||
|
||||
fn load_pixbuf(path: &str, width: i32, height: i32) -> Result<Option<Pixbuf>, ImageError> {
|
||||
let wood_texture = resources_lookup_data(path, gio::ResourceLookupFlags::NONE).unwrap();
|
||||
|
||||
let background = ImageReader::new(Cursor::new(wood_texture))
|
||||
.with_guessed_format()
|
||||
.unwrap()
|
||||
.decode();
|
||||
background.map(|background| {
|
||||
Pixbuf::from_bytes(
|
||||
&glib::Bytes::from(background.as_bytes()),
|
||||
gtk::gdk_pixbuf::Colorspace::Rgb,
|
||||
false,
|
||||
8,
|
||||
background.width() as i32,
|
||||
background.height() as i32,
|
||||
background.to_rgb8().sample_layout().height_stride as i32,
|
||||
)
|
||||
.scale_simple(width, height, InterpType::Nearest)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue