]> Dogcows Code - chaz/yoink/blobdiff - src/Moof/Video.cc
fixed up video and texture handling
[chaz/yoink] / src / Moof / Video.cc
index c41517e51c87601ff96bd25f1c63ba3e83dcfcb1..0130d695f0900ce912069c1446fb824c545f0f8e 100644 (file)
@@ -28,6 +28,8 @@
 
 #include <stdexcept>
 
+#include <SDL/SDL_image.h>
+
 #include "Dispatcher.hh"
 #include "Serializable.hh"
 #include "Settings.hh"
@@ -39,41 +41,29 @@ namespace Mf {
 
 Video::Video()
 {
-       std::string caption;
-       if (Settings::instance().get("video.caption", caption))
-       {
-               init(attribs_, caption);
-       }
-       else
-       {
-               init(attribs_, "Untitled");
-       }
+       init(attribs_);
 }
 
-Video::Video(const Attributes& attribs, const std::string& caption)
+Video::Video(const Attributes& attribs)
 {
-       init(attribs, caption);
+       init(attribs);
 }
 
-Video::Video(const Attributes& attribs)
+Video::Video(const std::string& caption, const std::string& icon)
 {
-       std::string caption;
-       if (Settings::instance().get("video.caption", caption))
+       if (attribs_.caption == "Untitled")
        {
-               init(attribs, caption);
+               attribs_.caption = caption;
        }
-       else
+       if (attribs_.icon == "")
        {
-               init(attribs, "Untitled");
+               attribs_.icon = icon;
        }
-}
 
-Video::Video(const std::string& caption)
-{
-       init(attribs_, caption);
+       init(attribs_);
 }
 
-void Video::init(const Attributes& attribs, const std::string& caption)
+void Video::init(const Attributes& attribs)
 {
        context_ = 0;
        flags_ = 0;
@@ -82,7 +72,8 @@ void Video::init(const Attributes& attribs, const std::string& caption)
        setFull(attribs.fullscreen);
        setResizable(attribs.resizable);
        setOpenGLAttributes();
-       setCaption(caption);
+       setCaption(attribs.caption);
+       setIcon();
        setCursorVisible(attribs.cursorVisible);
        setCursorGrab(attribs.cursorGrab);
        setVideoMode(attribs.mode);
@@ -163,14 +154,26 @@ bool Video::iconify()
 
 void Video::setCaption(const std::string& caption)
 {
+       attribs_.caption = caption;
        SDL_WM_SetCaption(caption.c_str(), 0);
 }
 
+void Video::setIcon()
+{
+       if (attribs_.icon != "")
+       {
+               SDL_Surface* icon = IMG_Load(attribs_.icon.c_str());
+               if (icon)
+               {
+                       SDL_WM_SetIcon(icon, 0);
+                       SDL_FreeSurface(icon);
+               }
+       }
+}
+
 std::string Video::getCaption() const
 {
-       char* str;
-       SDL_WM_GetCaption(&str, 0);
-       return std::string(str);
+       return attribs_.caption;
 }
 
 
@@ -331,6 +334,12 @@ Video::Attributes::Attributes()
        Settings::instance().get("video.swapcontrol", swapControl);
        Settings::instance().get("video.hardwareonly", hardwareonly);
 
+       if (!Settings::instance().get("video.caption", caption))
+       {
+               caption = "Untitled";
+       }
+       Settings::instance().get("video.icon", icon);
+
        std::vector<SerializablePtr> dimensions;
        Settings::instance().get("video.mode", dimensions);
        if (dimensions.size() > 0) dimensions[0]->get(mode[0]);
This page took 0.0194 seconds and 4 git commands to generate.