render scaled pixmap

This commit is contained in:
fluxgen 2003-04-28 22:27:29 +00:00
parent e37f631c4f
commit 39e05f49d0
2 changed files with 25 additions and 11 deletions

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: TextureRender.cc,v 1.2 2003/01/10 01:02:02 fluxgen Exp $
// $Id: TextureRender.cc,v 1.3 2003/04/28 22:27:29 fluxgen Exp $
#include "TextureRender.hh"
@ -97,8 +97,9 @@ TextureRender::~TextureRender() {
Pixmap TextureRender::render(const FbTk::Texture &texture) {
if (texture.type() & FbTk::Texture::PARENTRELATIVE)
if (texture.pixmap().drawable() != 0)
return renderPixmap(texture);
else if (texture.type() & FbTk::Texture::PARENTRELATIVE)
return ParentRelative;
else if (texture.type() & FbTk::Texture::SOLID)
return renderSolid(texture);
@ -257,6 +258,18 @@ Pixmap TextureRender::renderGradient(const FbTk::Texture &texture) {
}
Pixmap TextureRender::renderPixmap(const FbTk::Texture &src_texture) {
if (width != src_texture.pixmap().width() ||
height != src_texture.pixmap().height()) {
// copy src_texture's pixmap and
// scale to fit our size
FbPixmap new_pm(src_texture.pixmap());
new_pm.scale(width, height);
return new_pm.release();
}
// return copy of pixmap
return FbPixmap(src_texture.pixmap()).release();
}
XImage *TextureRender::renderXImage() {
Display *disp = FbTk::App::instance()->display();

View file

@ -22,7 +22,7 @@
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
// $Id: TextureRender.hh,v 1.1 2003/01/09 21:09:49 fluxgen Exp $
// $Id: TextureRender.hh,v 1.2 2003/04/28 22:27:29 fluxgen Exp $
#ifndef FBTK_TEXTURRENDER_HH
#define FBTK_TEXTURRENDER_HH
@ -51,7 +51,8 @@ public:
Pixmap renderSolid(const FbTk::Texture &src_texture);
/// render gradient texture to pixmap
Pixmap renderGradient(const FbTk::Texture &src_texture);
/// scales and renders a pixmap
Pixmap renderPixmap(const FbTk::Texture &src_texture);
private:
/**
Render to pixmap