Browse Source

fit webimage content to size

dmuratshin 9 years ago
parent
commit
1874cbcfd7
2 changed files with 26 additions and 6 deletions
  1. 21 6
      oxygine/src/WebImage.cpp
  2. 5 0
      oxygine/src/WebImage.h

+ 21 - 6
oxygine/src/WebImage.cpp

@@ -60,12 +60,10 @@ namespace oxygine
         Image mt;
         if (mt.init(bf, true))
         {
-            ResAnim rs;
-            rs.init(&mt);
-            float w = (float)rs.getFrame(0, 0).getWidth();
-            if (w != 0.0f)
-                _image->setScale(getWidth() / w);
-            _image->setAnimFrame(&rs);
+            _rs.init(&mt);
+            _image->setResAnim(&_rs);
+
+            fit();
         }
 
         _http = 0;
@@ -76,4 +74,21 @@ namespace oxygine
     {
         _image->setResAnim(0);
     }
+
+    void WebImage::fit()
+    {
+        if (!_rs.getTotalFrames())
+            return;
+        if (!_rs.getWidth())
+            return;
+        float sx = getWidth() / _rs.getWidth();
+        float sy = getHeight() / _rs.getHeight();
+        float s = std::min(sx, sy);
+        _image->setScale(s);
+    }
+
+    void WebImage::sizeChanged(const Vector2& size)
+    {
+        fit();
+    }
 }

+ 5 - 0
oxygine/src/WebImage.h

@@ -1,6 +1,7 @@
 #pragma once
 #include "oxygine-include.h"
 #include "Actor.h"
+#include "res/ResAnim.h"
 #include <string>
 
 namespace oxygine
@@ -21,6 +22,10 @@ namespace oxygine
     private:
         void loaded(Event*);
         void error(Event*);
+        void sizeChanged(const Vector2& size) OVERRIDE;
+        void fit();
+
+        ResAnim _rs;
 
         spSprite _image;