2000-02-10 17:53:36 +00:00
|
|
|
// -*- C++ -*-
|
|
|
|
/* This file is part of
|
|
|
|
* ======================================================
|
|
|
|
*
|
|
|
|
* LyX, The Document Processor
|
|
|
|
*
|
2000-03-16 04:29:22 +00:00
|
|
|
* Copyright 1995-2000 The LyX Team
|
2000-02-10 17:53:36 +00:00
|
|
|
*
|
|
|
|
* ======================================================*/
|
|
|
|
|
|
|
|
#ifndef PAINTER_H
|
|
|
|
#define PAINTER_H
|
|
|
|
|
|
|
|
#ifdef __GNUG__
|
|
|
|
#pragma interface
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include "config.h"
|
|
|
|
#include "LString.h"
|
|
|
|
|
|
|
|
// This is only included to provide stuff for the non-public sections
|
|
|
|
#include <X11/Xlib.h>
|
|
|
|
|
|
|
|
#include "PainterBase.h"
|
|
|
|
#include "LColor.h"
|
|
|
|
|
|
|
|
class LyXFont;
|
|
|
|
class WorkArea;
|
|
|
|
|
|
|
|
/** An inplementation for the X Window System. Xlib.
|
2000-02-14 22:14:48 +00:00
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
Classes similar to this one can be made for gtk+, Qt, etc.
|
2000-02-14 22:14:48 +00:00
|
|
|
*/
|
2000-02-10 17:53:36 +00:00
|
|
|
class Painter : public PainterBase {
|
|
|
|
public:
|
|
|
|
/// Constructor
|
2000-04-08 17:02:02 +00:00
|
|
|
explicit Painter(WorkArea &);
|
2000-02-14 22:14:48 +00:00
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
/**@Basic drawing routines */
|
|
|
|
/// Draw a line from point to point
|
2000-02-11 13:52:44 +00:00
|
|
|
PainterBase & line(int x1, int y1, int x2, int y2,
|
2000-02-14 22:14:48 +00:00
|
|
|
LColor::color = LColor::foreground,
|
|
|
|
enum line_style = line_solid,
|
|
|
|
enum line_width = line_thin);
|
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
/// Here xp and yp are arrays of points
|
2000-02-11 13:52:44 +00:00
|
|
|
PainterBase & lines(int const * xp, int const * yp, int np,
|
2000-02-14 22:14:48 +00:00
|
|
|
LColor::color = LColor::foreground,
|
|
|
|
enum line_style = line_solid,
|
|
|
|
enum line_width = line_thin);
|
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
/// Here xp and yp are arrays of points
|
2000-02-11 13:52:44 +00:00
|
|
|
PainterBase & fillPolygon(int const * xp, int const * yp, int np,
|
2000-02-14 22:14:48 +00:00
|
|
|
LColor::color = LColor::foreground);
|
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
/// Draw lines from x1,y1 to x2,y2. They are arrays
|
2000-02-11 13:52:44 +00:00
|
|
|
PainterBase & segments(int const * x1, int const * y1,
|
2000-02-14 22:14:48 +00:00
|
|
|
int const * x2, int const * y2, int ns,
|
|
|
|
LColor::color = LColor::foreground,
|
|
|
|
enum line_style = line_solid,
|
|
|
|
enum line_width = line_thin);
|
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
/// Draw a rectangle
|
2000-02-11 13:52:44 +00:00
|
|
|
PainterBase & rectangle(int x, int y, int w, int h,
|
2000-02-14 22:14:48 +00:00
|
|
|
LColor::color = LColor::foreground,
|
|
|
|
enum line_style = line_solid,
|
|
|
|
enum line_width = line_thin);
|
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
/// Draw an arc
|
2000-02-11 13:52:44 +00:00
|
|
|
PainterBase & arc(int x, int y, unsigned int w, unsigned int h,
|
2000-02-14 22:14:48 +00:00
|
|
|
int a1, int a2,
|
|
|
|
LColor::color = LColor::foreground);
|
2000-02-10 17:53:36 +00:00
|
|
|
|
|
|
|
/// Draw a pixel
|
2000-02-11 13:52:44 +00:00
|
|
|
PainterBase & point(int x, int y, LColor::color = LColor::foreground);
|
2000-02-10 17:53:36 +00:00
|
|
|
|
|
|
|
/// Fill a rectangle
|
2000-02-11 13:52:44 +00:00
|
|
|
PainterBase & fillRectangle(int x, int y, int w, int h,
|
2000-02-14 22:14:48 +00:00
|
|
|
LColor::color = LColor::background);
|
2000-02-10 17:53:36 +00:00
|
|
|
|
|
|
|
/**@Image stuff */
|
|
|
|
|
|
|
|
/// For the figure inset
|
2000-02-11 16:56:34 +00:00
|
|
|
PainterBase & pixmap(int x, int y, int w, int h, Pixmap bitmap);
|
2000-02-14 22:14:48 +00:00
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
/**@String functions */
|
|
|
|
|
|
|
|
/// Draw a string at position x, y (y is the baseline)
|
2000-02-14 22:14:48 +00:00
|
|
|
PainterBase & text(int x, int y,
|
|
|
|
string const & str, LyXFont const & f);
|
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
/** Draw a string at position x, y (y is the baseline)
|
|
|
|
This is just for fast drawing */
|
2000-02-11 13:52:44 +00:00
|
|
|
PainterBase & text(int x, int y, char const * str, int l,
|
2000-02-14 22:14:48 +00:00
|
|
|
LyXFont const & f);
|
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
/// Draw a char at position x, y (y is the baseline)
|
2000-02-11 13:52:44 +00:00
|
|
|
PainterBase & text(int x, int y, char c, LyXFont const & f);
|
2000-07-04 20:32:37 +00:00
|
|
|
|
|
|
|
/// Draw a wide string at position x, y
|
|
|
|
PainterBase & text(int x, int y, XChar2b const * str, int l,
|
|
|
|
LyXFont const & f);
|
2000-04-16 22:27:30 +00:00
|
|
|
private:
|
2000-02-10 17:53:36 +00:00
|
|
|
/// Check the font, and if set, draw an underline
|
|
|
|
void underline(LyXFont const & f, int x, int y, int width);
|
2000-02-14 22:14:48 +00:00
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
/**@Low level X parameters */
|
|
|
|
///
|
|
|
|
Display * display;
|
|
|
|
};
|
2000-04-16 22:27:30 +00:00
|
|
|
|
2000-02-10 17:53:36 +00:00
|
|
|
#endif
|