commit 758503d33f0edf8b864503a36c2c818fb4ab2d53 Author: Unknown Date: Mon Feb 12 15:25:58 2018 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f599ac --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +# Don’t commit the following directories created by pub. +.buildlog +.pub/ +build/ +packages +.packages + +# Or the files created by dart2js. +*.dart.js +*.js_ +*.js.deps +*.js.map + +# Include when developing application packages. +pubspec.lock + +# Ignore idea files +.idea/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..791a857 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +# Changelog + +## 0.0.1 + +- Initial version, created by Stagehand diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..86a595d --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,2 @@ + +Copyright (C) 2018 diff --git a/README.md b/README.md new file mode 100644 index 0000000..60ecfd9 --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# dart_floyd_steinberg_dithering + +An absolute bare-bones web app. + +Created from templates made available by Stagehand under a BSD-style +[license](https://github.com/dart-lang/stagehand/blob/master/LICENSE). diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..97f0908 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,15 @@ +analyzer: + strong-mode: true +# exclude: +# - path/to/excluded/files/** + +# Lint rules and documentation, see http://dart-lang.github.io/linter/lints +linter: + rules: + - cancel_subscriptions + - hash_and_equals + - iterable_contains_unrelated_type + - list_remove_unrelated_type + - test_types_in_equals + - unrelated_type_equality_checks + - valid_regexps diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..522ef38 --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,25 @@ +name: dart_floyd_steinberg_dithering +description: An absolute bare-bones web app. +version: 0.0.1 +#homepage: https://www.example.com +#author: marty + +environment: + sdk: '>=1.20.1 <2.0.0' + +dependencies: + image: "^1.1.29" +# path: ^1.4.1 + +dev_dependencies: + browser: ^0.10.0 + dart_to_js_script_rewriter: ^1.0.1 + +transformers: +- dart_to_js_script_rewriter + +# Uncomment the following in sdk 1.24+ to make pub serve +# use dartdevc (webdev.dartlang.org/tools/dartdevc). +#web: +# compiler: +# debug: dartdevc diff --git a/web/cat.png b/web/cat.png new file mode 100644 index 0000000..92cb8cc Binary files /dev/null and b/web/cat.png differ diff --git a/web/favicon.ico b/web/favicon.ico new file mode 100644 index 0000000..7ba349b Binary files /dev/null and b/web/favicon.ico differ diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..1a09a60 --- /dev/null +++ b/web/index.html @@ -0,0 +1,21 @@ + + + + + + + + + dart_floyd_steinberg_dithering + + + + + + + + + + + + diff --git a/web/kitten.jpg b/web/kitten.jpg new file mode 100644 index 0000000..9aab1a6 Binary files /dev/null and b/web/kitten.jpg differ diff --git a/web/main.dart b/web/main.dart new file mode 100644 index 0000000..23f277c --- /dev/null +++ b/web/main.dart @@ -0,0 +1,56 @@ +import 'dart:html'; +import 'package:image/image.dart'; + +CanvasElement input; +CanvasElement output; + +ImageElement inputImg; + +void main() { + inputImg = new ImageElement(src: 'kitten.jpg', width: 712, height: 470); + + input = document.querySelector('#input'); + print(input); + inputImg.onLoad.listen(imgLoaded); + + output = document.querySelector('#output'); + + output.context2D.fillRect(0, 0, output.width, output.height); +} + +void imgLoaded(Event e) { + print("image loaded"); + input.context2D.drawImage(inputImg, 0, 0); + + Image outputImg = editImage( getImageFromCanvas(input) ); + + drawImageToCanvas(output, outputImg ) ; +} + +Image getImageFromCanvas(CanvasElement input) { + ImageData data = input.context2D.getImageData(0, 0, input.width, input.height); + return new Image.fromBytes(input.width, input.height, data.data); +} + +void drawImageToCanvas(CanvasElement canvas, Image image) { + var imageData = canvas.context2D.createImageData(image.width, image.height); + imageData.data.setRange(0, imageData.data.length, image.getBytes()); + + canvas.context2D.putImageData(imageData, 0, 0); +} + +Image editImage(Image image) { + + + image = contrast( image, 200); + + for (var y = 0; y < image.height; y++) { + for (var x = 0; x < image.width; x++) { +// print(image.getPixel(x, y)); + } + } + + + + return image; +} \ No newline at end of file diff --git a/web/styles.css b/web/styles.css new file mode 100644 index 0000000..6a88d3b --- /dev/null +++ b/web/styles.css @@ -0,0 +1,16 @@ +@import url(https://fonts.googleapis.com/css?family=Roboto); + +html, body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + font-family: 'Roboto', sans-serif; + background: gainsboro; +} + +canvas { + padding: 00px; + text-align: center; +} +