OSDN Git Service

cache master
authorHOSOKAWA Kenchi <hosokawa.kenchi@gmail.com>
Sun, 10 Jul 2016 07:41:36 +0000 (16:41 +0900)
committerHOSOKAWA Kenchi <hosokawa.kenchi@gmail.com>
Sun, 10 Jul 2016 07:41:36 +0000 (16:41 +0900)
psychlops/core/graphic/psychlops_g_canvas.cpp
psychlops/core/graphic/psychlops_g_image.cpp
psychlops/core/graphic/psychlops_g_image.h
psychlops/platform/gl/psychlops_g_cache.cpp

index a2f45c8..c70a353 100644 (file)
@@ -117,7 +117,7 @@ namespace Psychlops {
                loadFontMinimum();
 
                initAPIprop();
-               
+
                if(!api->vsync_available_) {
                        Rectangle *rect = new Rectangle(600, 20);
                        rect->centering(getCenter().x, getHeight()-20);
@@ -334,8 +334,12 @@ namespace Psychlops {
 
        ////    Drawing Images
 
-       Canvas& Canvas::image(const Image &img) {
-               drawImage(img, img.targetarea_.getLeft(), img.targetarea_.getTop());
+       Canvas& Canvas::image(const Image &img) {\r
+           if(img._zoom_percentage_ == 100) {
+            drawImage(img, img.targetarea_.getLeft(), img.targetarea_.getTop());\r
+           } else {
+            drawImage((Image &)img, img.targetarea_);\r
+           }
                return *this;
        }
        void Canvas::drawImage(const Image &img) {
index f9f4490..4d58af9 100644 (file)
@@ -252,6 +252,11 @@ void Image::pix_ub_bits_mono_(int ix, int iy, double lum) {
        *(++p) = (unsigned char)0;
 }
 */
+       Image& Image::_zoom_(const double percentage) {\r
+           _zoom_percentage_ = percentage;\r
+           targetarea_.resize(width_*(percentage/100.0), height_*(percentage/100.0));\r
+           return *this;\r
+       }
        Image& Image::alpha(const double a)
        {
                for(int y=0; y<getHeight(); y++)
index a4341c7..6401517 100644 (file)
@@ -177,7 +177,8 @@ namespace IMAGE_FORMATS {
                }\r
 \r
                public:\r
-               double _zoom_percentage_;
+               double _zoom_percentage_;\r
+               Image& _zoom_(const double percentage);
 
                protected:
                int width_, height_;
index 0e3fdf9..128c4b2 100644 (file)
@@ -31,13 +31,16 @@ namespace Utilities {
                double mx = xx, my = yy;\r
                //double mx = drawee.getDatum().x, my = drawee.getDatum().y;\r
 \r
+               double w_ratio = 1.0;\r
+               if(drawee._zoom_cache) { w_ratio = drawee.font.size/font_size; img._zoom_(100.0*w_ratio); }\r
+\r
                double x, y;\r
                switch(anchor) {\r
                        case Letters::TEXT_ALIGN_CENTER:\r
-                               x = mx - img.getWidth() / 2;\r
+                               x = mx - img.getWidth() * w_ratio / 2;\r
                                break;\r
                        case Letters::TEXT_ALIGN_RIGHT:\r
-                               x = mx - img.getWidth();\r
+                               x = mx - img.getWidth() * w_ratio;\r
                                break;\r
                        case Letters::NOT_SPECIFIED:\r
                        case Letters::TEXT_ALIGN_LEFT:\r