2002-02-27 09:59:52 +00:00
|
|
|
/*
|
|
|
|
* \file GraphicsImage.C
|
|
|
|
* Copyright 2002 the LyX Team
|
|
|
|
* Read the file COPYING
|
|
|
|
*
|
|
|
|
* \author Baruch Even <baruch.even@writeme.com>
|
|
|
|
* \author Angus Leeming <a.leeming@ic.ac.uk>
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <config.h>
|
|
|
|
|
|
|
|
#ifdef __GNUG__
|
|
|
|
#pragma implementation
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "GraphicsImage.h"
|
|
|
|
#include "GraphicsParams.h"
|
2002-05-29 12:23:43 +00:00
|
|
|
|
2002-02-27 09:59:52 +00:00
|
|
|
namespace grfx {
|
|
|
|
|
|
|
|
// This will be connected to a function that will return whichever
|
|
|
|
// whichever derived class we desire.
|
2002-05-29 16:21:03 +00:00
|
|
|
boost::signal0<ImagePtr> GImage::newImage;
|
2002-02-27 09:59:52 +00:00
|
|
|
|
|
|
|
/// Return the list of loadable formats.
|
2002-05-29 16:21:03 +00:00
|
|
|
boost::signal0<GImage::FormatList> GImage::loadableFormats;
|
2002-02-27 09:59:52 +00:00
|
|
|
|
|
|
|
std::pair<unsigned int, unsigned int>
|
|
|
|
GImage::getScaledDimensions(GParams const & params) const
|
|
|
|
{
|
|
|
|
if (params.scale == 0 && params.width == 0 && params.height == 0)
|
|
|
|
// No scaling
|
|
|
|
return std::make_pair(getWidth(), getHeight());
|
|
|
|
|
2002-02-28 11:50:42 +00:00
|
|
|
typedef unsigned int dimension;
|
|
|
|
dimension width = 0;
|
|
|
|
dimension height = 0;
|
2002-02-27 09:59:52 +00:00
|
|
|
if (params.scale != 0) {
|
2002-02-28 11:50:42 +00:00
|
|
|
width = dimension(getWidth() * params.scale / 100.0);
|
|
|
|
height = dimension(getHeight() * params.scale / 100.0);
|
2002-02-27 09:59:52 +00:00
|
|
|
} else {
|
|
|
|
width = params.width;
|
|
|
|
height = params.height;
|
|
|
|
|
|
|
|
if (width == 0) {
|
|
|
|
width = height * getWidth() / getHeight();
|
|
|
|
} else if (height == 0) {
|
|
|
|
height = width * getHeight() / getWidth();
|
|
|
|
}
|
|
|
|
}
|
2002-03-21 17:27:08 +00:00
|
|
|
|
2002-02-27 09:59:52 +00:00
|
|
|
if (width == 0 || height == 0)
|
|
|
|
// Something is wrong!
|
|
|
|
return std::make_pair(getWidth(), getHeight());
|
|
|
|
|
|
|
|
return std::make_pair(width, height);
|
|
|
|
}
|
2002-05-29 12:23:43 +00:00
|
|
|
|
2002-02-27 09:59:52 +00:00
|
|
|
} // namespace grfx
|