automatic commit
[folded-ctf.git] / rgb_image_subpixel.cc
index 7b65504..b798bc1 100644 (file)
 
 #include "rgb_image_subpixel.h"
 
-RGBImageSubpixel::RGBImageSubpixel(int width, int height) : RGBImage(width * _scale, height* _scale) { }
+RGBImageSubpixel::RGBImageSubpixel(int width, int height) : RGBImage(width * scale, height* scale) { }
 
-RGBImageSubpixel::RGBImageSubpixel(RGBImage *image) : RGBImage(image->width() * _scale, image->height() * _scale) {
+RGBImageSubpixel::RGBImageSubpixel(RGBImage *image) : RGBImage(image->width() * scale, image->height() * scale) {
   for(int y = 0; y < _height; y++) {
     for(int x = 0; x < _width; x++) {
       set_pixel(x, y,
-                image->pixel(x / _scale, y / _scale, RGBImage::RED),
-                image->pixel(x / _scale, y / _scale, RGBImage::GREEN),
-                image->pixel(x / _scale, y / _scale, RGBImage::BLUE));
+                image->pixel(x / scale, y / scale, RGBImage::RED),
+                image->pixel(x / scale, y / scale, RGBImage::GREEN),
+                image->pixel(x / scale, y / scale, RGBImage::BLUE));
     }
   }
 }
@@ -40,12 +40,12 @@ void RGBImageSubpixel::read_png(const char *filename) {
 }
 
 void RGBImageSubpixel::write_png(const char *filename) {
-  RGBImage tmp(_width / _scale, _height / _scale);
-  for(int y = 0; y < _height / _scale; y++) {
-    for(int x = 0; x < _width / _scale; x++) {
+  RGBImage tmp(_width / scale, _height / scale);
+  for(int y = 0; y < _height / scale; y++) {
+    for(int x = 0; x < _width / scale; x++) {
       int sr = 0, sg = 0, sb = 0;
-      for(int yy = y * _scale; yy < (y + 1) * _scale; yy++) {
-        for(int xx = x * _scale; xx < (x + 1) * _scale; xx++) {
+      for(int yy = y * scale; yy < (y + 1) * scale; yy++) {
+        for(int xx = x * scale; xx < (x + 1) * scale; xx++) {
           sr += int(_bit_plans[RED][yy][xx]);
           sg += int(_bit_plans[GREEN][yy][xx]);
           sb += int(_bit_plans[BLUE][yy][xx]);
@@ -53,7 +53,7 @@ void RGBImageSubpixel::write_png(const char *filename) {
       }
 
       tmp.set_pixel(x, y,
-                    sr / (_scale * _scale), sg / (_scale * _scale), sb / (_scale * _scale));
+                    sr / (scale * scale), sg / (scale * scale), sb / (scale * scale));
     }
   }
   tmp.write_png(filename);
@@ -65,15 +65,33 @@ void RGBImageSubpixel::read_jpg(const char *filename) {
 }
 
 void RGBImageSubpixel::write_jpg(const char *filename, int quality) {
-  abort();
+  RGBImage tmp(_width / scale, _height / scale);
+
+  for(int y = 0; y < _height / scale; y++) {
+    for(int x = 0; x < _width / scale; x++) {
+      int sr = 0, sg = 0, sb = 0;
+      for(int yy = y * scale; yy < (y + 1) * scale; yy++) {
+        for(int xx = x * scale; xx < (x + 1) * scale; xx++) {
+          sr += int(_bit_plans[RED][yy][xx]);
+          sg += int(_bit_plans[GREEN][yy][xx]);
+          sb += int(_bit_plans[BLUE][yy][xx]);
+        }
+      }
+
+      tmp.set_pixel(x, y,
+                    sr / (scale * scale), sg / (scale * scale), sb / (scale * scale));
+    }
+  }
+
+  tmp.write_jpg(filename, quality);
 }
 
 
 void RGBImageSubpixel::draw_line(int thickness,
                                  unsigned char r, unsigned char g, unsigned char b,
                                  scalar_t x0, scalar_t y0, scalar_t x1, scalar_t y1) {
-  RGBImage::draw_line(int(thickness * _scale),
+  RGBImage::draw_line(int(thickness * scale),
                       r, g, b,
-                      x0 * _scale + _scale/2, y0 * _scale + _scale/2,
-                      x1 * _scale + _scale/2, y1 * _scale + _scale/2);
+                      x0 * scale + scale/2, y0 * scale + scale/2,
+                      x1 * scale + scale/2, y1 * scale + scale/2);
 }