/**
* \file XPainter.C
- * Copyright 1998-2002 the LyX Team
- * Read the file COPYING
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * \author unknown
- * \author John Levon <moz@compsoc.man.ac.uk>
+ * \author Lars Gullik Bjønnes
+ * \author John Levon
+ *
+ * Full author contact details are available in file CREDITS.
*/
#include <config.h>
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
#include "XPainter.h"
-#include "LString.h"
-#include "debug.h"
-#include "XWorkArea.h"
-#include "xfont_metrics.h"
+
#include "ColorHandler.h"
-#include "lyxrc.h"
+#include "xfont_metrics.h"
+#include "xformsImage.h"
+#include "XWorkArea.h"
+
+#include "font_metrics.h"
+
#include "encoding.h"
#include "language.h"
+#include "LColor.h"
+#include "lyxfont.h"
+#include "lyxrc.h"
-#include "graphics/GraphicsImage.h"
-
-#include "support/LAssert.h"
#include "support/lstrings.h"
-#include <boost/scoped_array.hpp>
+using lyx::support::uppercase;
-#include <cmath>
+using std::string;
-using std::endl;
-using std::max;
-
-XPainter::XPainter(WorkArea & xwa)
+XPainter::XPainter(XWorkArea & xwa)
: Painter(), owner_(xwa)
{
}
return owner_.workHeight();
}
-
-Painter & XPainter::point(int x, int y, LColor::color c)
+
+Painter & XPainter::point(int x, int y, LColor_color c)
{
XDrawPoint(fl_get_display(), owner_.getPixmap(),
lyxColorHandler->getGCForeground(c), x, y);
}
-Painter & XPainter::line(int x1, int y1,
+Painter & XPainter::line(int x1, int y1,
int x2, int y2,
- LColor::color col,
+ LColor_color col,
line_style ls,
line_width lw)
{
- XDrawLine(fl_get_display(), owner_.getPixmap(),
+ XDrawLine(fl_get_display(), owner_.getPixmap(),
lyxColorHandler->getGCLinepars(ls, lw, col),
x1, y1, x2, y2);
return *this;
}
-Painter & XPainter::lines(int const * xp, int const * yp,
+Painter & XPainter::lines(int const * xp, int const * yp,
int np,
- LColor::color col,
+ LColor_color col,
line_style ls,
line_width lw)
{
points[i].y = yp[i];
}
- XDrawLines(fl_get_display(), owner_.getPixmap(),
- lyxColorHandler->getGCLinepars(ls, lw, col),
+ XDrawLines(fl_get_display(), owner_.getPixmap(),
+ lyxColorHandler->getGCLinepars(ls, lw, col),
points.get(), np, CoordModeOrigin);
return *this;
-}
+}
-Painter & XPainter::rectangle(int x, int y,
+Painter & XPainter::rectangle(int x, int y,
int w, int h,
- LColor::color col,
+ LColor_color col,
line_style ls,
line_width lw)
{
XDrawRectangle(fl_get_display(), owner_.getPixmap(),
- lyxColorHandler->getGCLinepars(ls, lw, col),
+ lyxColorHandler->getGCLinepars(ls, lw, col),
x, y, w, h);
return *this;
}
-Painter & XPainter::fillRectangle(int x, int y,
+Painter & XPainter::fillRectangle(int x, int y,
int w, int h,
- LColor::color col)
+ LColor_color col)
{
XFillRectangle(fl_get_display(), owner_.getPixmap(),
lyxColorHandler->getGCForeground(col), x, y, w, h);
}
-Painter & XPainter::fillPolygon(int const * xp, int const * yp,
- int np, LColor::color col)
+Painter & XPainter::fillPolygon(int const * xp, int const * yp,
+ int np, LColor_color col)
{
boost::scoped_array<XPoint> points(new XPoint[np]);
points[i].x = xp[i];
points[i].y = yp[i];
}
-
+
XFillPolygon(fl_get_display(), owner_.getPixmap(),
- lyxColorHandler->getGCForeground(col), points.get(),
+ lyxColorHandler->getGCForeground(col), points.get(),
np, Nonconvex, CoordModeOrigin);
-
+
return *this;
}
-
+
Painter & XPainter::arc(int x, int y,
unsigned int w, unsigned int h,
- int a1, int a2, LColor::color col)
+ int a1, int a2, LColor_color col)
{
- XDrawArc(fl_get_display(), owner_.getPixmap(),
+ XDrawArc(fl_get_display(), owner_.getPixmap(),
lyxColorHandler->getGCForeground(col),
x, y, w, h, a1, a2);
- return *this;
+ return *this;
}
-
-Painter & XPainter::image(int x, int y,
- int w, int h,
- grfx::GImage const & image)
+
+Painter & XPainter::image(int x, int y,
+ int w, int h,
+ lyx::graphics::Image const & i)
{
+ lyx::graphics::xformsImage const & image =
+ static_cast<lyx::graphics::xformsImage const &>(i);
+
XGCValues val;
val.function = GXcopy;
GC gc = XCreateGC(fl_get_display(), owner_.getPixmap(),
GCFunction, &val);
- XCopyArea(fl_get_display(), image.getPixmap(), owner_.getPixmap(),
+ XCopyArea(fl_get_display(), image.getPixmap(), owner_.getPixmap(),
gc, 0, 0, w, h, x, y);
XFreeGC(fl_get_display(), gc);
return *this;
}
-Painter & XPainter::text(int x, int y,
+Painter & XPainter::text(int x, int y,
string const & s, LyXFont const & f)
{
return text(x, y, s.data(), s.length(), f);
}
-Painter & XPainter::text(int x, int y,
+Painter & XPainter::text(int x, int y,
char c, LyXFont const & f)
{
char s[2] = { c, '\0' };
}
-Painter & XPainter::text(int x, int y,
+Painter & XPainter::text(int x, int y,
char const * s, size_t ls,
LyXFont const & f)
{
xs[i].byte1 = c >> 8;
xs[i].byte2 = c & 0xff;
}
- text(x , y, xs.get(), ls, font);
+ text(x, y, xs.get(), ls, font);
return *this;
}
if (f.underbar() == LyXFont::ON) {
underline(f, x, y, font_metrics::width(s, ls, f));
}
-
+
return *this;
}
-Painter & XPainter::text(int x, int y,
+Painter & XPainter::text(int x, int y,
XChar2b const * s, size_t ls,
LyXFont const & f)
{
}
}
}
-
+
if (f.underbar() == LyXFont::ON) {
underline(f, x, y, xfont_metrics::width(s, ls, f));
}
-
+
return *this;
}