Browse Source

love.graphics.newScreenshot now uses the size of the current canvas (if applicable), instead of adding transparency or clipping to match the screen size

Alex Szpakowski 12 years ago
parent
commit
1172d5b836
2 changed files with 11 additions and 2 deletions
  1. 9 2
      src/modules/graphics/opengl/Graphics.cpp
  2. 2 0
      src/modules/graphics/opengl/Graphics.h

+ 9 - 2
src/modules/graphics/opengl/Graphics.cpp

@@ -243,6 +243,13 @@ int Graphics::getHeight() const
 	return currentWindow->getHeight();
 }
 
+int Graphics::getRenderWidth() const
+{
+	if (Canvas::current)
+		return Canvas::current->getWidth();
+	return getWidth();
+}
+
 int Graphics::getRenderHeight() const
 {
 	if (Canvas::current)
@@ -1072,8 +1079,8 @@ void Graphics::polygon(DrawMode mode, const float *coords, size_t count)
 
 love::image::ImageData *Graphics::newScreenshot(love::image::Image *image, bool copyAlpha)
 {
-	int w = getWidth();
-	int h = getHeight();
+	int w = getRenderWidth();
+	int h = getRenderHeight();
 
 	int row = 4*w;
 

+ 2 - 0
src/modules/graphics/opengl/Graphics.h

@@ -483,7 +483,9 @@ private:
 	GLint matrixLimit;
 	GLint userMatrices;
 
+	int getRenderWidth() const;
 	int getRenderHeight() const;
+
 }; // Graphics
 
 } // opengl