*
* \author Angus Leeming
*
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
*/
#include <config.h>
-
#include "xformsImage.h"
-#include "graphics/GraphicsParams.h"
#include "Color.h"
-#include "converter.h" // formats
+
#include "debug.h"
-#include "support/LAssert.h"
+#include "format.h"
+#include "LColor.h"
+
+#include "graphics/GraphicsParams.h"
+
+#include "support/lstrings.h"
#include "support/lyxfunctional.h" // compare_memfun
+#include "support/lyxlib.h"
-#include FORMS_H_LOCATION
+#include "lyx_forms.h"
#ifdef HAVE_FLIMAGE_H
# include <flimage.h>
#include <boost/tuple/tuple.hpp>
+
+using lyx::support::float_equal;
+using lyx::support::prefixIs;
+using lyx::support::rtrim;
+
using std::find_if;
+using std::string;
+
namespace {
} // namespace anon
-namespace grfx {
+namespace lyx {
+namespace graphics {
/// Access to this class is through this static method.
Image::ImagePtr xformsImage::newImage()
}
-Image * xformsImage::clone() const
+Pixmap xformsImage::getPixmap() const
+{
+ if (!pixmap_status_ == PIXMAP_SUCCESS)
+ return 0;
+ return pixmap_;
+}
+
+
+Image * xformsImage::clone_impl() const
{
return new xformsImage(*this);
}
-unsigned int xformsImage::getWidth() const
+unsigned int xformsImage::getWidth_impl() const
{
if (!image_)
return 0;
}
-unsigned int xformsImage::getHeight() const
+unsigned int xformsImage::getHeight_impl() const
{
if (!image_)
return 0;
}
-bool xformsImage::isDrawable() const
-{
- return pixmap_;
-}
-
-
-Pixmap xformsImage::getPixmap() const
+bool xformsImage::isDrawable_impl() const
{
- if (!pixmap_status_ == PIXMAP_SUCCESS)
- return 0;
return pixmap_;
}
-void xformsImage::load(string const & filename)
+void xformsImage::load_impl(string const & filename)
{
if (image_) {
lyxerr[Debug::GRAPHICS]
}
-bool xformsImage::setPixmap(Params const & params)
+bool xformsImage::setPixmap_impl(Params const & params)
{
if (!image_ || params.display == NoDisplay)
return false;
}
-void xformsImage::clip(Params const & params)
+void xformsImage::clip_impl(Params const & params)
{
if (!image_)
return;
// We must, therefore, be careful...
int const xoffset_l = params.bb.xl;
int const yoffset_b = params.bb.yb;
- int const xoffset_r = image_->w > params.bb.xr ?
+ int const xoffset_r = image_->w > int(params.bb.xr) ?
image_->w - params.bb.xr : 0;
- int const yoffset_t = image_->h > params.bb.yt ?
+ int const yoffset_t = image_->h > int(params.bb.yt) ?
image_->h - params.bb.yt : 0;
flimage_crop(image_, xoffset_l, yoffset_t, xoffset_r, yoffset_b);
}
-void xformsImage::rotate(Params const & params)
+void xformsImage::rotate_impl(Params const & params)
{
if (!image_)
return ;
- if (!params.angle)
+ if (float_equal(params.angle, 0.0, 0.1))
// No rotation is necessary.
return;
// Work around xforms bug when params.angle == 270
// the 'InternalError: bad special angle' error.
// This bug fix is not needed in xforms 1.0 and greater.
- if (params.angle == 270) {
+ if (float_equal(params.angle, 270.0, 0.1)) {
flimage_rotate(image_, 900, FLIMAGE_SUBPIXEL);
flimage_rotate(image_, 1800, FLIMAGE_SUBPIXEL);
} else {
}
-void xformsImage::scale(Params const & params)
+void xformsImage::scale_impl(Params const & params)
{
if (!image_)
return;
finishedLoading(false);
}
-} // namespace grfx
+} // namespace graphics
+} // namespace lyx
namespace {
int status_report(FL_IMAGE * ob, const char *s)
{
- lyx::Assert(ob && ob->u_vdata);
+ BOOST_ASSERT(ob && ob->u_vdata);
string const str = s ? rtrim(s) : string();
if (str.empty())
lyxerr[Debug::GRAPHICS]
<< "xforms image loader. Status: " << str << std::endl;
- grfx::xformsImage * ptr =
- static_cast<grfx::xformsImage *>(ob->u_vdata);
+ lyx::graphics::xformsImage * ptr =
+ static_cast<lyx::graphics::xformsImage *>(ob->u_vdata);
ptr->statusCB(str);
return 0;
static void error_report(FL_IMAGE * ob, const char *s)
{
- lyx::Assert(ob && ob->u_vdata);
+ BOOST_ASSERT(ob && ob->u_vdata);
string const str = s ? rtrim(s) : string();
if (str.empty())
lyxerr[Debug::GRAPHICS]
<< "xforms image loader. Error: " << str << std::endl;
- grfx::xformsImage * ptr =
- static_cast<grfx::xformsImage *>(ob->u_vdata);
+ lyx::graphics::xformsImage * ptr =
+ static_cast<lyx::graphics::xformsImage *>(ob->u_vdata);
ptr->errorCB(str);
}
bool const success = getRGBColor(col, r, g, b);
if (!success)
// Set to black on failure
- return FL_PACK(255,255,255);
+ return FL_PACK(255, 255, 255);
return FL_PACK(r, g, b);
}