2
0
Эх сурвалжийг харах

Create get_render helpers method, move things around

Jake 10 жил өмнө
parent
commit
9ba3f5190a
3 өөрчлөгдсөн 59 нэмэгдсэн , 38 устгасан
  1. 18 0
      modules/helpers.js
  2. 31 33
      modules/renders.js
  3. 10 5
      routes/renders.js

+ 18 - 0
modules/helpers.js

@@ -3,6 +3,7 @@ var logging = require("./logging");
 var config = require("./config");
 var cache = require("./cache");
 var skins = require("./skins");
+var renders = require("./renders")
 var fs = require("fs");
 
 // 0098cb60-fa8e-427c-b299-793cbd302c9a
@@ -175,4 +176,21 @@ exp.get_skin = function(uuid, callback) {
   });
 };
 
+// handles creations of skin renders
+// callback contanis error, hash, image buffer
+exp.get_render = function(uuid, scale, helm, body, callback) {
+  logging.log(uuid + " render request");
+  exp.get_skin(uuid, function(err, hash, img) {
+    renders.draw_model(uuid, img, scale, helm, body, function(err, img) {
+      if (err) {
+        callback(err, -1, hash, null);
+      } else if (!img) {
+        callback(null, 0, hash, null);
+      } else {
+        callback(null, 2, hash, img);
+      }
+    });
+  });
+};
+
 module.exports = exp;

+ 31 - 33
modules/renders.js

@@ -78,43 +78,41 @@ exp.draw_body = function(skin_canvas, model_ctx, scale) {
   model_ctx.drawImage(skin_canvas, 44*scale, 16*scale, 4*scale, 4*scale, -16*scale, 16*scale, 4*scale, 4*scale);
 }
 
-exp.draw_model = function(uuid, scale, helm, body, callback) {
-  helpers.get_skin(uuid, function(err, hash, img) {
-    var image = new Image;
-    var width = 64 * scale;
-    var height = 64 * scale;
-    var model_canvas = new Canvas(20 * scale, (body ? 44.8 : 17.6) * scale);
-    var skin_canvas = new Canvas(width, height);
-    var model_ctx = model_canvas.getContext('2d');
-    var skin_ctx = skin_canvas.getContext('2d');
+exp.draw_model = function(uuid, img, scale, helm, body, callback) {
+  var image = new Image;
+  var width = 64 * scale;
+  var height = 64 * scale;
+  var model_canvas = new Canvas(20 * scale, (body ? 44.8 : 17.6) * scale);
+  var skin_canvas = new Canvas(width, height);
+  var model_ctx = model_canvas.getContext('2d');
+  var skin_ctx = skin_canvas.getContext('2d');
 
-    image.onerror = function(err) {
-      logging.error("render error: " + err);
-      callback(err, 2, null, hash);
-    };
+  image.onerror = function(err) {
+    logging.error("render error: " + err);
+    callback(err, null);
+  };
 
-    image.onload = function() {
-      skin_ctx.drawImage(image,0,0,64,64,0,0,64,64);
-      //Scale it
-      scale_image(skin_ctx.getImageData(0,0,64,64), skin_ctx, 0, 0, scale);
-      if (body) {
-        logging.log("drawing body");
-        exp.draw_body(skin_canvas, model_ctx, scale);
-      }
-      logging.log("drawing head");
-      exp.draw_head(skin_canvas, model_ctx, scale);
-      if (helm) {
-        logging.log("drawing helmet");
-        exp.draw_helmet(skin_canvas, model_ctx, scale);
-      }
+  image.onload = function() {
+    skin_ctx.drawImage(image,0,0,64,64,0,0,64,64);
+    //Scale it
+    scale_image(skin_ctx.getImageData(0,0,64,64), skin_ctx, 0, 0, scale);
+    if (body) {
+      logging.log("drawing body");
+      exp.draw_body(skin_canvas, model_ctx, scale);
+    }
+    logging.log("drawing head");
+    exp.draw_head(skin_canvas, model_ctx, scale);
+    if (helm) {
+      logging.log("drawing helmet");
+      exp.draw_helmet(skin_canvas, model_ctx, scale);
+    }
 
-      model_canvas.toBuffer(function(err, buf){
-        callback(err, 2, buf, hash);
-      });
-    };
+    model_canvas.toBuffer(function(err, buf){
+      callback(err, buf);
+    });
+  };
 
-    image.src = img;
-  });
+  image.src = img;
 }
 
 function scale_image(imageData, context, d_x, d_y, scale) {

+ 10 - 5
routes/renders.js

@@ -5,6 +5,7 @@ var helpers = require('../modules/helpers');
 var config = require('../modules/config');
 var skins = require('../modules/skins');
 var renders = require('../modules/renders');
+var fs = require('fs');
 
 var human_status = {
   0: "none",
@@ -47,7 +48,7 @@ router.get('/:type/:uuid.:ext?', function(req, res) {
   uuid = uuid.replace(/-/g, "");
 
   try {
-    renders.draw_model(uuid, scale, helm, body, function(err, status, image, hash) {
+    helpers.get_render(uuid, scale, helm, body, function(err, status, hash, image) {
       logging.log(uuid + " - " + human_status[status]);
       if (err) {
         logging.error(err);
@@ -66,13 +67,13 @@ router.get('/:type/:uuid.:ext?', function(req, res) {
         logging.log("status: " + http_status);
         sendimage(http_status, status, image);
       } else {
-        //handle_default(404, status);
+        handle_default(404, status);
       }
     });
   } catch(e) {
     logging.error("Error!");
     logging.error(e);
-    //handle_default(500, status);
+    handle_default(500, status);
   }
 
   function handle_default(http_status, img_status) {
@@ -87,8 +88,12 @@ router.get('/:type/:uuid.:ext?', function(req, res) {
       res.end();
     } else {
       def = def || skins.default_skin(uuid);
-      skins.resize_img("public/images/" + def + ".png", size, function(err, image) {
-        sendimage(http_status, img_status, image);
+      fs.readFile("public/images/" + def + ".png", function (err, buf) {
+        if (err) throw err;
+        console.log(buf);
+        renders.draw_model(uuid, buf, scale, helm, body, function(err, status, image) {
+          sendimage(http_status, img_status, image);
+        });
       });
     }
   }