rozinante

png-branch
an 2019-03-03 00:45:04 -05:00
parent 1d057d66af
commit 892efbdb13
7 changed files with 54 additions and 18 deletions

View File

@ -52,5 +52,6 @@
#[macro_use] #[macro_use]
pub mod durandal; pub mod durandal;
pub mod marathon; pub mod marathon;
pub mod rozinante;
// EOF // EOF

View File

@ -0,0 +1,8 @@
//! Color presets.
use crate::durandal::image::Color16;
pub const CR_RED: Color16 = Color16::new(0xFFFF, 0, 0);
pub const CR_DARK_RED: Color16 = Color16::new(0x4700, 0, 0);
// EOF

View File

@ -1,4 +1,6 @@
use maraiah::durandal::image::*; //! GUI drawing capabilities.
use crate::durandal::image::Color;
pub trait CacheImage pub trait CacheImage
{ {
@ -15,7 +17,7 @@ pub trait DrawArea
fn clear(&self, cr: impl Color); fn clear(&self, cr: impl Color);
fn rect(&self, rect: Rect, cr: impl Color); fn rect(&self, rect: Rect, cr: impl Color);
fn text(&self, pos: Point, cr: impl Color, text: &str); fn text(&self, pos: Point, text: &str, cr: impl Color);
fn image(&self, pos: Point, im: &Self::NativeImage); fn image(&self, pos: Point, im: &Self::NativeImage);
} }
@ -25,7 +27,4 @@ pub type Point = (Coord, Coord);
#[derive(Copy, Clone, Debug)] #[derive(Copy, Clone, Debug)]
pub struct Rect {pub x: Coord, pub y: Coord, pub w: Coord, pub h: Coord} pub struct Rect {pub x: Coord, pub y: Coord, pub w: Coord, pub h: Coord}
pub const CR_RED: Color16 = Color16::new(0xFFFF, 0, 0);
pub const CR_DARK_RED: Color16 = Color16::new(0x4700, 0, 0);
// EOF // EOF

6
source/rozinante/mod.rs Normal file
View File

@ -0,0 +1,6 @@
//! Library for GUI programs.
pub mod color;
pub mod draw;
// EOF

View File

@ -1,5 +1,6 @@
use crate::stoneage::*;
use maraiah::durandal::image::*; use maraiah::durandal::image::*;
use maraiah::marathon::*;
use maraiah::rozinante::{color::*, draw::*};
pub fn draw_map_none<D, I>(d: &D, im: &I) pub fn draw_map_none<D, I>(d: &D, im: &I)
where D: DrawArea<NativeImage = I>, where D: DrawArea<NativeImage = I>,
@ -10,10 +11,30 @@ pub fn draw_map_none<D, I>(d: &D, im: &I)
d.image((d.w() / 2 - im.w() / 2, d.h() / 2 - im.h() / 2), im); d.image((d.w() / 2 - im.w() / 2, d.h() / 2 - im.h() / 2), im);
d.rect(Rect{x: 0, y: 0, w: d.w(), h: 18}, CR_DARK_RED); d.rect(Rect{x: 0, y: 0, w: d.w(), h: 18}, CR_DARK_RED);
d.text((4, 14), CR_RED, "Map Required To Proceed"); d.text((4, 14), "Map Required To Proceed", CR_RED);
d.rect(Rect{x: 0, y: d.h() - 18, w: d.w(), h: 18}, CR_DARK_RED); d.rect(Rect{x: 0, y: d.h() - 18, w: d.w(), h: 18}, CR_DARK_RED);
d.text((4, d.h() - 4), CR_RED, "CAS.qterm//CyberAcme Systems Inc."); d.text((4, d.h() - 4), "CAS.qterm//CyberAcme Systems Inc.", CR_RED);
}
pub fn new_map() -> MapState
{
let info = Default::default();
let ed = EditorState{};
let ma = MapState{ed, info};
ma
}
pub struct EditorState
{
}
pub struct MapState
{
ed: EditorState,
info: map::Minf,
} }
// EOF // EOF

View File

@ -1,6 +1,5 @@
mod hiddenprotocol; mod hiddenprotocol;
mod noroom; mod noroom;
mod stoneage;
use crate::hiddenprotocol::*; use crate::hiddenprotocol::*;
use crate::noroom::*; use crate::noroom::*;
@ -21,7 +20,7 @@ fn mk_draw_area(b: &gtk::Builder)
let ax: gtk::Adjustment = get_obj(b, "adj-map-horz"); let ax: gtk::Adjustment = get_obj(b, "adj-map-horz");
let ay: gtk::Adjustment = get_obj(b, "adj-map-vert"); let ay: gtk::Adjustment = get_obj(b, "adj-map-vert");
let im = load_img("/net/greyserv/maraiah/tycho/tycho1"); let im = CairoPixbuf(load_img("/net/greyserv/maraiah/tycho/tycho1"));
area.connect_draw(move |area, cr| { area.connect_draw(move |area, cr| {
let w = f64::from(area.get_allocated_width()); let w = f64::from(area.get_allocated_width());
@ -90,7 +89,7 @@ fn get_obj<T>(b: &gtk::Builder, name: &str) -> T
fn main() -> ResultS<()> fn main() -> ResultS<()>
{ {
// get jacked, punk. opaque data structures are for nerds. // get jacked, punk. opaque data structures are for nerds.
const RESOURCE_DATA: &'static [u8] = include_bytes!("data/tycho.res"); const RESOURCE_DATA: &[u8] = include_bytes!("data/tycho.res");
let mut static_resource = let mut static_resource =
gio_sys::GStaticResource{data: RESOURCE_DATA.as_ptr(), gio_sys::GStaticResource{data: RESOURCE_DATA.as_ptr(),

View File

@ -1,4 +1,4 @@
use crate::stoneage::*; use maraiah::rozinante::draw::*;
use maraiah::durandal::image::*; use maraiah::durandal::image::*;
fn flt_color(cr: impl Color) -> (f64, f64, f64) fn flt_color(cr: impl Color) -> (f64, f64, f64)
@ -8,10 +8,10 @@ fn flt_color(cr: impl Color) -> (f64, f64, f64)
(flt_color(cr.r()), flt_color(cr.g()), flt_color(cr.b())) (flt_color(cr.r()), flt_color(cr.g()), flt_color(cr.b()))
} }
impl CacheImage for gdk_pixbuf::Pixbuf impl CacheImage for CairoPixbuf
{ {
fn w(&self) -> Coord {self.get_width() as Coord} fn w(&self) -> Coord {self.0.get_width() as Coord}
fn h(&self) -> Coord {self.get_height() as Coord} fn h(&self) -> Coord {self.0.get_height() as Coord}
} }
impl CairoDrawArea impl CairoDrawArea
@ -24,7 +24,7 @@ impl CairoDrawArea
impl DrawArea for CairoDrawArea impl DrawArea for CairoDrawArea
{ {
type NativeImage = gdk_pixbuf::Pixbuf; type NativeImage = CairoPixbuf;
fn w(&self) -> Coord {self.w} fn w(&self) -> Coord {self.w}
fn h(&self) -> Coord {self.h} fn h(&self) -> Coord {self.h}
@ -53,7 +53,7 @@ impl DrawArea for CairoDrawArea
self.ctx.fill(); self.ctx.fill();
} }
fn text(&self, pos: Point, cr: impl Color, text: &str) fn text(&self, pos: Point, text: &str, cr: impl Color)
{ {
let (r, g, b) = flt_color(cr); let (r, g, b) = flt_color(cr);
@ -65,11 +65,13 @@ impl DrawArea for CairoDrawArea
fn image(&self, pos: Point, im: &Self::NativeImage) fn image(&self, pos: Point, im: &Self::NativeImage)
{ {
use gdk::prelude::*; use gdk::prelude::*;
self.ctx.set_source_pixbuf(im, f64::from(pos.0), f64::from(pos.1)); self.ctx.set_source_pixbuf(&im.0, f64::from(pos.0), f64::from(pos.1));
self.ctx.paint(); self.ctx.paint();
} }
} }
pub struct CairoPixbuf(pub gdk_pixbuf::Pixbuf);
pub struct CairoDrawArea pub struct CairoDrawArea
{ {
ctx: cairo::Context, ctx: cairo::Context,