summaryrefslogtreecommitdiff
path: root/WebInterface/wasm/asm-paint
diff options
context:
space:
mode:
Diffstat (limited to 'WebInterface/wasm/asm-paint')
-rw-r--r--WebInterface/wasm/asm-paint/.gitignore6
-rw-r--r--WebInterface/wasm/asm-paint/Cargo.toml29
-rw-r--r--WebInterface/wasm/asm-paint/README.md53
-rwxr-xr-xWebInterface/wasm/asm-paint/deploy2
-rw-r--r--WebInterface/wasm/asm-paint/index.html24
-rw-r--r--WebInterface/wasm/asm-paint/lighttpd.config29
-rw-r--r--WebInterface/wasm/asm-paint/loader.js2
-rwxr-xr-xWebInterface/wasm/asm-paint/run3
-rw-r--r--WebInterface/wasm/asm-paint/src/app.rs19
-rw-r--r--WebInterface/wasm/asm-paint/src/canvas.rs39
-rw-r--r--WebInterface/wasm/asm-paint/src/client_logger.rs46
-rw-r--r--WebInterface/wasm/asm-paint/src/lib.rs20
-rw-r--r--WebInterface/wasm/asm-paint/src/shader.rs97
-rw-r--r--WebInterface/wasm/asm-paint/src/site.rs28
14 files changed, 0 insertions, 397 deletions
diff --git a/WebInterface/wasm/asm-paint/.gitignore b/WebInterface/wasm/asm-paint/.gitignore
deleted file mode 100644
index 4e30131..0000000
--- a/WebInterface/wasm/asm-paint/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-/target
-**/*.rs.bk
-Cargo.lock
-bin/
-pkg/
-wasm-pack.log
diff --git a/WebInterface/wasm/asm-paint/Cargo.toml b/WebInterface/wasm/asm-paint/Cargo.toml
deleted file mode 100644
index ceb1866..0000000
--- a/WebInterface/wasm/asm-paint/Cargo.toml
+++ /dev/null
@@ -1,29 +0,0 @@
-[package]
-name = "asm-paint-rs"
-version = "0.1.0"
-authors = [
- "natrixaeria",
- "TrueDoctor"
-]
-edition = "2018"
-
-[lib]
-crate-type = ["cdylib"]
-
-[dependencies]
-wasm-bindgen = "0.2"
-log = "0.4"
-fern = "0.5"
-
-[dependencies.web-sys]
-version = "0.3.22"
-features = [
- 'Document',
- 'Element',
- 'HtmlCanvasElement',
- 'WebGl2RenderingContext',
- 'WebGlShader',
- 'WebGlProgram',
- 'WebGlBuffer',
- 'Window'
-]
diff --git a/WebInterface/wasm/asm-paint/README.md b/WebInterface/wasm/asm-paint/README.md
deleted file mode 100644
index 5fcb76f..0000000
--- a/WebInterface/wasm/asm-paint/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-# πŸ¦€πŸ•ΈοΈ `wasm-pack-template`
-
-A template for kick starting a Rust and WebAssembly project using
-[`wasm-pack`](https://github.com/rustwasm/wasm-pack).
-
-[**πŸ“š Read this template tutorial! πŸ“š**][template-docs]
-
-This template is designed for compiling Rust libraries into WebAssembly and
-publishing the resulting package to NPM.
-
-Be sure to check out [other `wasm-pack` tutorials online][tutorials] for other
-templates and usages of `wasm-pack`.
-
-[tutorials]: https://rustwasm.github.io/docs/wasm-pack/tutorials/index.html
-[template-docs]: https://rustwasm.github.io/docs/wasm-pack/tutorials/npm-browser-packages/index.html
-
-## 🚴 Usage
-
-### πŸ‘ Use `cargo generate` to Clone this Template
-
-[Learn more about `cargo generate` here.](https://github.com/ashleygwilliams/cargo-generate)
-
-```
-cargo generate --git https://github.com/rustwasm/wasm-pack-template.git --name my-project
-cd my-project
-```
-
-### πŸ› οΈ Build with `wasm-pack build`
-
-```
-wasm-pack build
-```
-
-### πŸ”¬ Test in Headless Browsers with `wasm-pack test`
-
-```
-wasm-pack test --headless --firefox
-```
-
-### 🎁 Publish to NPM with `wasm-pack publish`
-
-```
-wasm-pack publish
-```
-
-## πŸ”‹ Batteries Included
-
-* [`wasm-bindgen`](https://github.com/rustwasm/wasm-bindgen) for communicating
- between WebAssembly and JavaScript.
-* [`console_error_panic_hook`](https://github.com/rustwasm/console_error_panic_hook)
- for logging panic messages to the developer console.
-* [`wee_alloc`](https://github.com/rustwasm/wee_alloc), an allocator optimized
- for small code size.
diff --git a/WebInterface/wasm/asm-paint/deploy b/WebInterface/wasm/asm-paint/deploy
deleted file mode 100755
index 13d1d0a..0000000
--- a/WebInterface/wasm/asm-paint/deploy
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-lighttpd -f ./lighttpd.config
diff --git a/WebInterface/wasm/asm-paint/index.html b/WebInterface/wasm/asm-paint/index.html
deleted file mode 100644
index c4f3734..0000000
--- a/WebInterface/wasm/asm-paint/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!doctype html>
-<html>
- <head>
- <meta charset="UTF-8">
- <title> Scribblio </title>
- <script src='loader.js' type='module'></script>
- <style>
- body {
- margin: 0;
- background: black;
- }
- #canvas {
- width: 100%;
- height: 100%;
- }
- img {
- background: violet;
- }
- </style>
- </head>
- <body>
- <canvas id='canvas'></canvas>
- </body>
-</html>
diff --git a/WebInterface/wasm/asm-paint/lighttpd.config b/WebInterface/wasm/asm-paint/lighttpd.config
deleted file mode 100644
index 5fae32d..0000000
--- a/WebInterface/wasm/asm-paint/lighttpd.config
+++ /dev/null
@@ -1,29 +0,0 @@
-server.http-parseopts = (
- "header-strict" => "enable",
- "host-strict" => "enable",
- "host-normalize" => "enable",
- "url-normalize" => "enable",
- "url-normalize-unreserved" => "enable",
- "url-normalize-required" => "enable",
- "url-ctrls-reject" => "enable",
- "url-path-2f-decode" => "enable",
- "url-path-dotseg-remove" => "enable",
- "url-query-20-plus" => "enable"
-)
-
-server.document-root = "/home/jan/projects/DiscoBot/WebInterface/wasm/asm-paint"
-server.port = 8080
-dir-listing.activate = "enable"
-index-file.names = ( "index.html" )
-mimetype.assign = (
- ".html" => "text/html",
- ".txt" => "text/plain",
- ".css" => "text/css",
- ".js" => "application/x-javascript",
- ".jpg" => "image/jpeg",
- ".jpeg" => "image/jpeg",
- ".gif" => "image/gif",
- ".png" => "image/png",
- ".wasm" => "application/wasm",
- "" => "application/octet-stream"
-)
diff --git a/WebInterface/wasm/asm-paint/loader.js b/WebInterface/wasm/asm-paint/loader.js
deleted file mode 100644
index 4566ee1..0000000
--- a/WebInterface/wasm/asm-paint/loader.js
+++ /dev/null
@@ -1,2 +0,0 @@
-import {default as init} from './pkg/asm_paint_rs.js'
-init('./pkg/asm_paint_rs_bg.wasm');
diff --git a/WebInterface/wasm/asm-paint/run b/WebInterface/wasm/asm-paint/run
deleted file mode 100755
index 1da1e35..0000000
--- a/WebInterface/wasm/asm-paint/run
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-wasm-pack build --release --target web
diff --git a/WebInterface/wasm/asm-paint/src/app.rs b/WebInterface/wasm/asm-paint/src/app.rs
deleted file mode 100644
index 005764d..0000000
--- a/WebInterface/wasm/asm-paint/src/app.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-use crate::site::Site;
-
-pub struct App {
- site: Site,
-}
-
-impl App {
- pub fn new() -> Option<Self> {
- Some(Self {
- site: Site::from_current()?,
- })
- }
-
- pub fn run(&mut self) {
- let mut canvas = self.site.create_canvas().unwrap();
- canvas.init().unwrap();
- info!("canvas initialisation was succuessfull");
- }
-}
diff --git a/WebInterface/wasm/asm-paint/src/canvas.rs b/WebInterface/wasm/asm-paint/src/canvas.rs
deleted file mode 100644
index 400e258..0000000
--- a/WebInterface/wasm/asm-paint/src/canvas.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-use web_sys;
-use web_sys::{WebGl2RenderingContext};
-use wasm_bindgen::JsCast;
-use crate::shader::Shaders;
-
-pub struct Canvas {
- element: web_sys::HtmlCanvasElement,
- ctx: WebGl2RenderingContext,
- shaders: Shaders,
-}
-
-impl Canvas {
- pub fn new(element: web_sys::Element) -> Option<Self> {
- let element: web_sys::HtmlCanvasElement =
- element.dyn_into::<web_sys::HtmlCanvasElement>()
- .ok()?;
- debug!("create webgl2 context");
- let ctx = element.get_context("webgl2").ok()??
- .dyn_into::<WebGl2RenderingContext>().ok()?;
- info!("created webgl2 context successfully");
- Some(Self {
- element, ctx,
- shaders: Shaders::new(),
- })
- }
-
- pub fn init(&mut self) -> Result<(), ()> {
- self.shaders.init(&self.ctx).map_err(|_|())?;
- self.ctx.clear_color(1.0, 0.2, 1.0, 1.0);
- self.ctx.clear(WebGl2RenderingContext::COLOR_BUFFER_BIT);
- Ok(())
- }
-}
-
-impl Drop for Canvas {
- fn drop(&mut self) {
- self.shaders.remove(&self.ctx);
- }
-}
diff --git a/WebInterface/wasm/asm-paint/src/client_logger.rs b/WebInterface/wasm/asm-paint/src/client_logger.rs
deleted file mode 100644
index f71918f..0000000
--- a/WebInterface/wasm/asm-paint/src/client_logger.rs
+++ /dev/null
@@ -1,46 +0,0 @@
-use wasm_bindgen::prelude::*;
-
-#[wasm_bindgen]
-extern "C" {
- #[wasm_bindgen(js_namespace=console, js_name=debug)]
- fn __console_debug_colored2(f: &str, c1: &str, c2: &str);
- #[wasm_bindgen(js_namespace=console, js_name=info)]
- fn __console_info_colored2(f: &str, c1: &str, c2: &str);
- #[wasm_bindgen(js_namespace=console, js_name=warn)]
- fn __console_warn_colored2(f: &str, c1: &str, c2: &str);
- #[wasm_bindgen(js_namespace=console, js_name=error)]
- fn __console_error_colored2(f: &str, c1: &str, c2: &str);
-}
-
-fn log(rec: &log::Record) {
- let log_fn = match rec.level() {
- log::Level::Trace | log::Level::Debug => __console_debug_colored2,
- log::Level::Info => __console_info_colored2,
- log::Level::Warn => __console_warn_colored2,
- log::Level::Error => __console_error_colored2,
- };
- log_fn(&format!("{}", rec.args()),
- &format!("color: {}", match rec.level() {
- log::Level::Trace => "violet",
- log::Level::Debug => "blue",
- log::Level::Info => "green",
- log::Level::Warn => "orange",
- log::Level::Error => "red"
- }), "");
-}
-
-pub fn init_logger() {
- fern::Dispatch::new().format(|out, message, record|{
- out.finish(format_args!(
- "%c{}%c {} > {}",
- record.level(),
- record.target(),
- message
- )
- )
- })
- .level(log::LevelFilter::Debug)
- .chain(fern::Output::call(log))
- .apply().unwrap();
-}
-
diff --git a/WebInterface/wasm/asm-paint/src/lib.rs b/WebInterface/wasm/asm-paint/src/lib.rs
deleted file mode 100644
index 6c773c5..0000000
--- a/WebInterface/wasm/asm-paint/src/lib.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-mod client_logger;
-mod shader;
-mod canvas;
-mod site;
-mod app;
-
-use wasm_bindgen::prelude::*;
-
-#[macro_use]
-extern crate log;
-
-#[wasm_bindgen(start)]
-pub fn entry() {
- client_logger::init_logger();
-
- info!("begin running wasm application");
-
- let mut app = app::App::new().unwrap();
- app.run();
-}
diff --git a/WebInterface/wasm/asm-paint/src/shader.rs b/WebInterface/wasm/asm-paint/src/shader.rs
deleted file mode 100644
index 3352bcf..0000000
--- a/WebInterface/wasm/asm-paint/src/shader.rs
+++ /dev/null
@@ -1,97 +0,0 @@
-use web_sys::{WebGlProgram, WebGl2RenderingContext};
-
-const VERTEX_SHADER: &str =
-r#"#version 300 es
-in vec4 pos;
-void main() {
- gl_Position = pos;
-}
-"#;
-
-const FRAGMENT_SHADER: &str =
-r#"#version 300 es
-precision mediump float;
-out vec4 color;
-
-void main() {
- color = vec4(1, 0, 0, 1);
-}
-"#;
-
-pub struct Shaders {
- program: Option<WebGlProgram>,
- pos_loc: i32,
-}
-
-impl Shaders {
- pub fn new() -> Self {
- Self {
- program: None,
- pos_loc: -1
- }
- }
-
- fn create_program(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
- self.program = Some(ctx.create_program().ok_or("could not create program id")?);
- Ok(())
- }
-
- fn create_shader(&mut self, ctx: &WebGl2RenderingContext,
- shader_type: u32, source: &str) -> Result<(), String> {
- let program = self.program.as_ref().ok_or("could not find created program")?;
- let shader = ctx.create_shader(shader_type)
- .ok_or("could not create shader")?;
- ctx.shader_source(&shader, source);
- ctx.compile_shader(&shader);
- let status = ctx.get_shader_parameter(&shader, WebGl2RenderingContext::COMPILE_STATUS);
- if status == wasm_bindgen::JsValue::TRUE {
- ctx.attach_shader(program, &shader);
- Ok(())
- } else {
- Err(format!("\n{}", ctx.get_shader_info_log(&shader).unwrap_or_default()))
- }
- }
-
- fn create_vertex_shader(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
- self.create_shader(ctx, WebGl2RenderingContext::VERTEX_SHADER, VERTEX_SHADER)
- }
-
- fn create_fragment_shader(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
- self.create_shader(ctx, WebGl2RenderingContext::FRAGMENT_SHADER, FRAGMENT_SHADER)
- }
-
- fn compile(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
- let program = self.program.as_ref().ok_or("could not find created program")?;
- ctx.link_program(program);
- let status = ctx.get_program_parameter(program, WebGl2RenderingContext::LINK_STATUS);
- if status == wasm_bindgen::JsValue::TRUE {
- Ok(())
- } else {
- Err(format!("\n{}", ctx.get_program_info_log(program).unwrap_or_default()))
- }
- }
-
- pub fn init(&mut self, ctx: &WebGl2RenderingContext) -> Result<(), String> {
- debug!("create program");
- self.create_program(ctx)
- .map_err(|e| { error!("webgl2 create program: {}", e); e})?;
- debug!("create vertex shader");
- self.create_vertex_shader(ctx)
- .map_err(|e| { error!("webgl2 create vertex shader: {}", e); e})?;
- debug!("create fragment shader");
- self.create_fragment_shader(ctx)
- .map_err(|e| { error!("webgl2 create fragment shader: {}", e); e})?;
- debug!("compile shader program");
- self.compile(ctx)
- .map_err(|e| { error!("webgl2 shader: {}", e); e})?;
- let program = self.program.as_ref().ok_or("could not find created program")?;
- self.pos_loc = ctx.get_attrib_location(program, "pos");
- trace!("got attrib location 'pos'({})", self.pos_loc);
- info!("initialised shader program");
- Ok(())
- }
-
- pub fn remove(&mut self, ctx: &WebGl2RenderingContext) {
- ctx.delete_program(self.program.as_ref())
- }
-}
diff --git a/WebInterface/wasm/asm-paint/src/site.rs b/WebInterface/wasm/asm-paint/src/site.rs
deleted file mode 100644
index 4ae0237..0000000
--- a/WebInterface/wasm/asm-paint/src/site.rs
+++ /dev/null
@@ -1,28 +0,0 @@
-use web_sys;
-use crate::canvas::Canvas;
-
-pub struct Site {
- window: web_sys::Window,
- document: web_sys::Document,
-}
-
-impl Site {
- pub fn from_current() -> Option<Self> {
- let window = web_sys::window()
- .or_else(|| {error!("unable to query window"); None})?;
- let document = window.document()
- .or_else(|| {error!("unable to query document"); None})?;
- Some(Self {
- window, document
- })
- }
-
- pub fn create_canvas(&self) -> Option<Canvas> {
- debug!("gain canvas element");
- let element = self.document.get_element_by_id("canvas")
- .or_else(|| {error!("could not gain canvas element"); None})?;
- Canvas::new(element)
- .or_else(|| {error!("could not create a webgl2 canvas.
- Your browser doesn't seem to support webgl2"); None})
- }
-}