3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
9 * Full author contact details are available in file CREDITS.
14 #include "qsetborder.h"
19 #include <QMouseEvent>
20 #include <QPaintEvent>
23 QSetBorder::QSetBorder(QWidget * parent, char const * name, Qt::WFlags fl)
24 : QWidget(parent, name, fl), buffer(75, 75)
26 /* length of corner line */
27 l = buffer.width() / 10;
29 m = buffer.height() / 10;
41 void QSetBorder::paintEvent(QPaintEvent * e)
43 QWidget::paintEvent(e);
44 bitBlt(this, 0, 0, &buffer, 0, 0, width(), height());
48 void QSetBorder::init()
51 QPainter paint(&buffer);
53 paint.setPen(Qt::black);
55 // FIXME: wow, readable !! :)
57 paint.drawLine(m + l , m, m + l, m + l);
58 paint.drawLine(w - (m + l), m, w - (m + l), m + l);
60 paint.drawLine(m, m + l , m + l, m + l);
61 paint.drawLine(m, h - (m + l), m + l, h - (m + l));
63 paint.drawLine(m + l ,h - m, m + l ,h - (m + l));
64 paint.drawLine(w - (m + l), h - m, w - (m + l), h - (m + l));
66 paint.drawLine(h - m, m+l, h - (m + l), m + l);
67 paint.drawLine(h - m, h - (m + l), h - (m + l),h - (m + l));
71 void QSetBorder::mousePressEvent(QMouseEvent * e)
73 if (e->y() > e->x()) {
74 if (e->y() < height() - e->x()) {
77 emit leftSet(left_.set);
80 if (bottom_.enabled) {
81 setBottom(!bottom_.set);
82 emit bottomSet(bottom_.set);
86 if (e->y() < height() - e->x()) {
89 emit topSet(top_.set);
93 setRight(!right_.set);
94 emit rightSet(right_.set);
103 void QSetBorder::drawLine(QColor const & col, int x, int y, int x2, int y2)
105 QPainter paint(&buffer);
106 QPen p = paint.pen();
110 paint.drawLine(x, y, x2, y2);
114 void QSetBorder::drawLeft(bool draw)
116 QColor col(draw ? Qt::black : Qt::white);
118 col = QColor("grey");
119 drawLine(col, m + l, m + l + 2, m + l, h - m - l - 1);
123 void QSetBorder::drawRight(bool draw)
125 QColor col(draw ? Qt::black : Qt::white);
127 col = QColor("grey");
128 drawLine(col, h - m - l + 1, m + l + 2, h - m - l + 1, h - m - l - 1);
132 void QSetBorder::drawTop(bool draw)
134 QColor col(draw ? Qt::black : Qt::white);
136 col = QColor("grey");
137 drawLine(col, m + l + 2, m + l, w - m - l - 1, m + l);
141 void QSetBorder::drawBottom(bool draw)
143 QColor col(draw ? Qt::black : Qt::white);
144 if (!bottom_.enabled)
145 col = QColor("grey");
146 drawLine(col, m + l + 2, w - m - l + 1, w - m - l - 1, w - m - l + 1);
150 void QSetBorder::setLeftEnabled(bool border)
152 left_.enabled = border;
157 void QSetBorder::setRightEnabled(bool border)
159 right_.enabled = border;
164 void QSetBorder::setTopEnabled(bool border)
166 top_.enabled = border;
171 void QSetBorder::setBottomEnabled(bool border)
173 bottom_.enabled = border;
178 void QSetBorder::setLeft(bool border)
185 void QSetBorder::setRight(bool border)
192 void QSetBorder::setTop(bool border)
199 void QSetBorder::setBottom(bool border)
201 bottom_.set = border;
206 void QSetBorder::setAll(bool border)
215 bool QSetBorder::getLeft()
221 bool QSetBorder::getRight()
227 bool QSetBorder::getTop()
233 bool QSetBorder::getBottom()