mirror of
https://github.com/PCSX2/pcsx2.git
synced 2026-11-15 18:50:32 +01:00
At higher resolutions it takes too much time to save a screenshot at the maximum compression level. So let's allow the user to set the compression level. This re-uses the png_compression_level setting. The default compression level is 1 for speed, but if the user wishes to increase the compression level (without using an external tool) and doesn't mind if the screenshot takes more time to save then they can increase the compression level up to a maximum of 9 (which can take quite a while). Fixes #1527.
75 lines
2.1 KiB
C++
75 lines
2.1 KiB
C++
/*
|
|
* Copyright (C) 2007-2009 Gabest
|
|
* http://www.gabest.org
|
|
*
|
|
* This Program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2, or (at your option)
|
|
* any later version.
|
|
*
|
|
* This Program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with GNU Make; see the file COPYING. If not, write to
|
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA USA.
|
|
* http://www.gnu.org/copyleft/gpl.html
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "GSVector.h"
|
|
|
|
class GSTexture
|
|
{
|
|
protected:
|
|
GSVector2 m_scale;
|
|
GSVector2i m_size;
|
|
int m_type;
|
|
int m_format;
|
|
bool m_msaa;
|
|
|
|
public:
|
|
struct GSMap {uint8* bits; int pitch;};
|
|
|
|
enum {RenderTarget = 1, DepthStencil, Texture, Offscreen, Backbuffer};
|
|
|
|
public:
|
|
GSTexture();
|
|
virtual ~GSTexture() {}
|
|
|
|
virtual operator bool() {ASSERT(0); return false;}
|
|
|
|
virtual bool Update(const GSVector4i& r, const void* data, int pitch) = 0;
|
|
virtual bool Map(GSMap& m, const GSVector4i* r = NULL) = 0;
|
|
virtual void Unmap() = 0;
|
|
virtual bool Save(const string& fn, bool dds = false) = 0;
|
|
virtual uint32 GetID() { return 0; }
|
|
|
|
GSVector2 GetScale() const {return m_scale;}
|
|
void SetScale(const GSVector2& scale) {m_scale = scale;}
|
|
|
|
int GetWidth() const {return m_size.x;}
|
|
int GetHeight() const {return m_size.y;}
|
|
GSVector2i GetSize() const {return m_size;}
|
|
|
|
int GetType() const {return m_type;}
|
|
int GetFormat() const {return m_format;}
|
|
|
|
bool IsMSAA() const {return m_msaa;}
|
|
|
|
// frame number (arbitrary base) the texture was recycled on
|
|
// different purpose than texture cache ages, do not attempt to merge
|
|
unsigned last_frame_used;
|
|
|
|
bool LikelyOffset;
|
|
float OffsetHack_modx;
|
|
float OffsetHack_mody;
|
|
|
|
// Typical size of a RGBA texture
|
|
virtual uint32 GetMemUsage() { return m_size.x * m_size.y * 4; }
|
|
};
|