/pocjs/Art.js

http://github.com/sbober/pocjs · JavaScript · 53 lines · 39 code · 12 blank · 2 comment · 4 complexity · 803e6f804862b34a951231183787400e MD5 · raw file

  1. dojo.provide("pocjs.Art");
  2. dojo.declare("pocjs.Art", null, {
  3. });
  4. pocjs.Art.loadBitmap = function(name, filename) {
  5. var self = this;
  6. var dfd = new dojo.Deferred();
  7. PNG.load(filename, function(png) {
  8. var w = png.width;
  9. var h = png.height;
  10. var pixels = new Array(w * h << 0);
  11. var ppix = png.decodePixels();
  12. var result = new pocjs.gui.Bitmap(w, h);
  13. for (var y = 0; y < h; y++) {
  14. for (var x = 0; x < w; x++) {
  15. var data = ppix[y][x];
  16. var input = data[3] << 24
  17. | data[0] << 16
  18. | data[1] << 8
  19. | data[2];
  20. var col = (input & 0xf) >> 2;
  21. // if (input == (0xffff00ff << 0)) { col = -1; }
  22. // silence closure compiler
  23. if (input == -65281) { col = -1; }
  24. result.pixels[x + y*w] = col;
  25. pixels[x + y*w] = input;
  26. }
  27. }
  28. self[name] = result;
  29. dfd.resolve(name);
  30. });
  31. return dfd;
  32. }
  33. pocjs.Art.getCol = function(c) {
  34. var r = (c >> 16) & 0xff;
  35. var g = (c >> 8) & 0xff;
  36. var b = (c) & 0xff;
  37. r = r * 0x55 / 0xff;
  38. g = g * 0x55 / 0xff;
  39. b = b * 0x55 / 0xff;
  40. return r << 16 | g << 8 | b;
  41. };