]> Dogcows Code - chaz/yoink/blobdiff - src/Moof/Video.cc
the massive refactoring effort
[chaz/yoink] / src / Moof / Video.cc
diff --git a/src/Moof/Video.cc b/src/Moof/Video.cc
deleted file mode 100644 (file)
index 9ca53c1..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-
-/*]  Copyright (c) 2009-2010, Charles McGarvey  [**************************
-**]  All rights reserved.
-*
-* vi:ts=4 sw=4 tw=75
-*
-* Distributable under the terms and conditions of the 2-clause BSD license;
-* see the file COPYING for a complete text of the license.
-*
-**************************************************************************/
-
-#include "Dispatch.hh"
-#include "Error.hh"
-#include "Image.hh"
-#include "Log.hh"
-#include "Settings.hh"
-#include "Video.hh"
-
-
-namespace Mf {
-
-
-Video::Video()
-{
-       init();
-}
-
-Video::Video(const Attributes& attribs) :
-       mAttribs(attribs)
-{
-       init();
-}
-
-void Video::init()
-{
-       Error error = Backend::getError();
-       if (error) error.raise();
-
-       mContext = 0;
-       mFlags = 0;
-
-       setFull(mAttribs.fullscreen);
-       setResizable(mAttribs.resizable);
-       setOpenGLAttributes();
-       setCaption(mAttribs.caption);
-       setIcon();
-       setCursorVisible(mAttribs.cursorVisible);
-       setCursorGrab(mAttribs.cursorGrab);
-       setVideoMode(mAttribs.mode);
-
-       if (!gCurrentVideo) makeCurrent();
-}
-
-void Video::recreateContext()
-{
-       SDL_FreeSurface(mContext);
-       mContext = 0;
-       setVideoMode(mAttribs.mode);
-}
-
-void Video::setOpenGLAttributes()
-{
-       SDL_GL_SetAttribute(SDL_GL_RED_SIZE,
-                                               mAttribs.colorBuffer[0]);
-       SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,
-                                               mAttribs.colorBuffer[1]);
-       SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,
-                                               mAttribs.colorBuffer[2]);
-       SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE,
-                                               mAttribs.colorBuffer[3]);
-       SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE,
-                                               mAttribs.frameBuffer);
-       SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,
-                                               mAttribs.doubleBuffer);
-       SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE,
-                                               mAttribs.depthBuffer);
-       SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE,
-                                               mAttribs.stencilBuffer);
-       SDL_GL_SetAttribute(SDL_GL_ACCUM_RED_SIZE,
-                                               mAttribs.accumBuffer[0]);
-       SDL_GL_SetAttribute(SDL_GL_ACCUM_GREEN_SIZE,
-                                               mAttribs.accumBuffer[1]);
-       SDL_GL_SetAttribute(SDL_GL_ACCUM_BLUE_SIZE,
-                                               mAttribs.accumBuffer[2]);
-       SDL_GL_SetAttribute(SDL_GL_ACCUM_ALPHA_SIZE,
-                                               mAttribs.accumBuffer[3]);
-       SDL_GL_SetAttribute(SDL_GL_STEREO,
-                                               mAttribs.stereo);
-       SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS,
-                                               mAttribs.multisampleBuffers);
-       SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES,
-                                               mAttribs.multisampleSamples);
-       SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL,
-                                               mAttribs.swapControl);
-       SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL,
-                                               mAttribs.hardwareOnly);
-}
-
-
-Video::~Video()
-{
-       SDL_FreeSurface(mContext);
-
-       if (gCurrentVideo == this) gCurrentVideo = 0;
-}
-
-
-void Video::setVideoMode(const int mode[3])
-{
-       if (mode != mAttribs.mode || !mContext)
-       {
-               if (mContext) SDL_FreeSurface(mContext);
-
-               mContext = SDL_SetVideoMode(mode[0], mode[1], mode[2],
-                               SDL_OPENGL | mFlags);
-
-               if (mContext)
-               {
-                       mAttribs.mode[0] = mode[0];
-                       mAttribs.mode[1] = mode[1];
-                       mAttribs.mode[2] = mode[2];
-
-#if !defined(linux) && !defined(__linux) && !defined(__linux__)
-                       logInfo("video context recreated");
-                       Dispatch::global().dispatch("video.newcontext");
-#endif
-               }
-               else Error(Error::SDL_VIDEOMODE).raise();
-       }
-}
-
-Video::Attributes Video::attributes() const
-{
-       return mAttribs;
-}
-
-
-void Video::resize(int width, int height)
-{
-       int mode[] = {width, height, mAttribs.mode[2]};
-       setVideoMode(mode);
-}
-
-bool Video::iconify()
-{
-       return SDL_WM_IconifyWindow();
-}
-
-
-void Video::setCaption(const std::string& caption)
-{
-       mAttribs.caption = caption;
-       SDL_WM_SetCaption(caption.c_str(), 0);
-}
-
-void Video::setIcon()
-{
-       if (mAttribs.icon != "")
-       {
-               Image icon(mAttribs.icon);
-               icon.setAsIcon();
-       }
-}
-
-std::string Video::getCaption() const
-{
-       return mAttribs.caption;
-}
-
-const std::string& Video::getIcon() const
-{
-       return mAttribs.icon;
-}
-
-
-void Video::setFull(bool full)
-{
-       if (full != isFull() || !mContext)
-       {
-               if (mContext)
-               {
-                       mFlags ^= SDL_FULLSCREEN;
-
-#if defined(linux) || defined(__linux) || defined(__linux__)
-                       if (SDL_WM_ToggleFullScreen(mContext) == 0)
-#endif
-                       recreateContext();
-               }
-               else
-               {
-                       if (full) mFlags |= SDL_FULLSCREEN;
-                       else mFlags &= ~SDL_FULLSCREEN;
-               }
-       }
-}
-
-void Video::toggleFull()
-{
-       setFull(!isFull());
-}
-
-bool Video::isFull() const
-{
-       return mFlags & SDL_FULLSCREEN;
-}
-
-
-void Video::setCursorVisible(bool hasCursor)
-{
-       SDL_ShowCursor(hasCursor? SDL_ENABLE : SDL_DISABLE);
-}
-
-void Video::toggleCursorVisible()
-{
-       setCursorVisible(!isCursorVisible());
-}
-
-bool Video::isCursorVisible() const
-{
-       return (SDL_ShowCursor(SDL_QUERY) == SDL_ENABLE);
-}
-
-
-void Video::setResizable(bool resizable)
-{
-       if (resizable != isResizable() || !mContext)
-       {
-               if (mContext)
-               {
-                       mFlags ^= SDL_RESIZABLE;
-                       recreateContext();
-               }
-               else
-               {
-                       if (resizable) mFlags |= SDL_RESIZABLE;
-                       else mFlags &= ~SDL_RESIZABLE;
-               }
-       }
-}
-
-void Video::toggleResizable()
-{
-       setResizable(!isResizable());
-}
-
-bool Video::isResizable() const
-{
-       return mFlags & SDL_RESIZABLE;
-}
-
-
-bool Video::isCursorGrab() const
-{
-       return (SDL_WM_GrabInput(SDL_GRAB_QUERY) == SDL_GRAB_ON);
-}
-
-void Video::toggleCursorGrab()
-{
-       setCursorGrab(!isCursorGrab());
-}
-
-void Video::setCursorGrab(bool cursorGrab)
-{
-       SDL_WM_GrabInput(cursorGrab? SDL_GRAB_ON : SDL_GRAB_OFF);
-}
-
-
-void Video::swap()
-{
-       SDL_GL_SwapBuffers();
-}
-
-
-int Video::getWidth() const
-{
-       return mContext->w;
-}
-
-int Video::getHeight() const
-{
-       return mContext->h;
-}
-
-
-void Video::makeCurrent() const
-{
-       gCurrentVideo = const_cast<Video*>(this);
-}
-
-
-Video::Attributes::Attributes()
-{
-       init();
-}
-
-Video::Attributes::Attributes(const Settings& settings)
-{
-       init();
-
-       std::vector<int> colors;
-       settings.get("colorbuffers", colors);
-       if (colors.size() > 0) colorBuffer[0] = colors[0];
-       if (colors.size() > 1) colorBuffer[1] = colors[1];
-       if (colors.size() > 2) colorBuffer[2] = colors[2];
-       if (colors.size() > 3) colorBuffer[3] = colors[3];
-
-       settings.get("framebuffer", frameBuffer);
-       settings.get("doublebuffer", doubleBuffer);
-       settings.get("depthbuffer", depthBuffer);
-       settings.get("stencilbuffer", stencilBuffer);
-
-       std::vector<int> accum;
-       settings.get("accumbuffers", accum);
-       if (accum.size() > 0) accumBuffer[0] = accum[0];
-       if (accum.size() > 1) accumBuffer[1] = accum[1];
-       if (accum.size() > 2) accumBuffer[2] = accum[2];
-       if (accum.size() > 3) accumBuffer[3] = accum[3];
-
-       settings.get("stereo", stereo);
-       settings.get("multiesamplebuffers", multisampleBuffers);
-       settings.get("multiesamplesamples", multisampleSamples);
-       settings.get("swapcontrol", swapControl);
-       settings.get("hardwareonly", hardwareOnly);
-
-       if (!settings.get("caption", caption))
-       {
-               caption = "Untitled";
-       }
-       settings.get("icon", icon);
-
-       settings.get("fullscreen", fullscreen);
-       settings.get("resizable", resizable);
-       settings.get("showcursor", cursorVisible);
-       settings.get("grab", cursorGrab);
-
-       std::vector<int> dimensions;
-       settings.get("videomode", dimensions);
-       if (dimensions.size() > 1)
-       {
-               mode[0] = dimensions[0];
-               mode[1] = dimensions[1];
-       }
-       else if (fullscreen && Backend::isInitialized())
-       {
-               SDL_Rect** modes = SDL_ListModes(NULL,
-                                                                                SDL_FULLSCREEN | SDL_HWSURFACE);
-
-               if (modes == (SDL_Rect**)0)
-               {
-                       Mf::logError("no native video mode");
-               }
-               else if (modes == (SDL_Rect**)-1)
-               {
-                       Mf::logWarning("any resolution allowed; "
-                                                  "choosing default 800x600");
-                       mode[0] = 800;
-                       mode[1] = 600;
-               }
-               else
-               {
-                       mode[0] = (*modes)->w;
-                       mode[1] = (*modes)->h;
-                       Mf::logInfo << "choosing native resolution "
-                                               << mode[0] << "x" << mode[1] << std::endl;
-               }
-       }
-       if (dimensions.size() > 2) mode[2] = dimensions[2];
-}
-
-void Video::Attributes::init()
-{
-       // set some sane GL and window defaults (see SDL_video.c:217)
-       colorBuffer[0] = 3;
-       colorBuffer[1] = 3;
-       colorBuffer[2] = 2;
-       colorBuffer[3] = 0;
-       frameBuffer = 0;
-       doubleBuffer = true;
-       depthBuffer = 16;
-       stencilBuffer = 0;
-       accumBuffer[0] = 0;
-       accumBuffer[1] = 0;
-       accumBuffer[2] = 0;
-       accumBuffer[3] = 0;
-       stereo = false;
-       multisampleBuffers = 0;
-       multisampleSamples = 0;
-       swapControl = false;
-       hardwareOnly = false;
-       mode[0] = 640;
-       mode[1] = 480;
-       mode[2] = 0;
-       fullscreen = false;
-       resizable = false;
-       cursorVisible = true;
-       cursorGrab = false;
-}
-
-
-Video* Video::gCurrentVideo = 0;       // most recently instantiated instance
-
-
-} // namespace Mf
-
This page took 0.033173 seconds and 4 git commands to generate.