use crate::Web;
use crate::{_js_doc, _js_extern, JsTextRenderMetrics, JsTextRenderMetricsFull, js_number};
#[rustfmt::skip]
impl Web {
pub fn set_canvas(selector: &str) { unsafe { set_canvas(selector.as_ptr(), selector.len()); } }
#[doc = _js_doc!(canvas "fillStyle")]
pub fn fill_style(r: u8, g: u8, b: u8) { fill_style(r, g, b); }
#[doc = _js_doc!(canvas "strokeStyle")]
pub fn stroke_style(r: u8, g: u8, b: u8) { stroke_style(r, g, b); }
#[doc = _js_doc!(canvas "fillRect")]
pub fn fill_rect(x: js_number, y: js_number, w: js_number, h: js_number)
{ fill_rect(x, y, w, h); }
#[doc = _js_doc!(canvas "strokeRect")]
pub fn stroke_rect(x: js_number, y: js_number, w: js_number, h: js_number)
{ stroke_rect(x, y, w, h); }
#[doc = _js_doc!(canvas "clearRect")]
pub fn clear_rect(x: js_number, y: js_number, w: js_number, h: js_number)
{ clear_rect(x, y, w, h); }
pub fn draw_line(x1: js_number, y1: js_number, x2: js_number, y2: js_number)
{ draw_line(x1, y1, x2, y2); }
pub fn draw_circle(x: js_number, y: js_number, radius: js_number)
{ draw_circle(x, y, radius); }
#[doc = _js_doc!(canvas "fillText")]
pub fn fill_text(text: &str, x: js_number, y: js_number) {
unsafe { fill_text(text.as_ptr(), text.len(), x, y); }
}
#[doc = _js_doc!(canvas "strokeText")]
pub fn stroke_text(text: &str, x: js_number, y: js_number) {
unsafe { stroke_text(text.as_ptr(), text.len(), x, y); }
}
#[doc = _js_doc!(canvas "measureText")]
pub fn measure_text(text: &str) -> JsTextRenderMetrics {
let (mut metrics, ptr, len) = (JsTextRenderMetrics::default(), text.as_ptr(), text.len());
unsafe { measure_text(ptr, len, &mut metrics as *mut JsTextRenderMetrics); }
metrics
}
#[doc = _js_doc!(canvas "measureTextFull")]
pub fn measure_text_full(text: &str) -> JsTextRenderMetricsFull {
let (mut metrics, ptr, len) =
(JsTextRenderMetricsFull::default(), text.as_ptr(), text.len());
unsafe { measure_text_full(ptr, len, &mut metrics as *mut JsTextRenderMetricsFull); }
metrics
}
}
_js_extern! {
[ module: "api_canvas" ]
unsafe fn set_canvas(str_ptr: *const u8, str_len: usize);
safe fn "fillStyle" fill_style(r: u8, g: u8, b: u8);
safe fn "strokeStyle" stroke_style(r: u8, g: u8, b: u8);
safe fn "fillRect" fill_rect(x: js_number, y: js_number, w: js_number, h: js_number);
safe fn "strokeRect" stroke_rect(x: js_number, y: js_number, w: js_number, h: js_number);
safe fn "clearRect" clear_rect(x: js_number, y: js_number, w: js_number, h: js_number);
safe fn draw_line(x1: js_number, y1: js_number, x2: js_number, y2: js_number);
safe fn draw_circle(x: js_number, y: js_number, radius: js_number);
unsafe fn "fillText" fill_text(str_ptr: *const u8, str_len: usize, x: js_number, y: js_number);
unsafe fn "strokeText" stroke_text(str_ptr: *const u8, str_len: usize,
x: js_number, y: js_number);
unsafe fn "measureText" measure_text(text_ptr: *const u8, text_len: usize,
out_metrics: *mut JsTextRenderMetrics);
unsafe fn "measureTextFull" measure_text_full(text_ptr: *const u8, text_len: usize,
fut_metrics: *mut JsTextRenderMetricsFull);
}