File indexing completed on 2024-04-28 07:51:55
0001 /* 0002 SPDX-FileCopyrightText: 1997 Mathias Mueller <in5y158@public.uni-hamburg.de> 0003 SPDX-FileCopyrightText: 2006 Mauricio Piacentini <mauricio@tabuleiro.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 // own 0009 #include "frameimage.h" 0010 0011 // Qt 0012 #include <QPaintEvent> 0013 #include <QPainter> 0014 #include <QPixmap> 0015 0016 // KF 0017 0018 // KMahjongg 0019 #include "editor.h" 0020 #include "prefs.h" 0021 0022 FrameImage::FrameImage(QWidget * parent, const QSize & initialImageSize) 0023 : QWidget(parent) 0024 , m_rx(-1) 0025 , m_ry(0) 0026 , m_rw(0) 0027 , m_rh(0) 0028 , m_rs(0) 0029 , m_rt(0) 0030 , m_thePixmap(new QPixmap(initialImageSize)) 0031 { 0032 } 0033 0034 FrameImage::~FrameImage() 0035 { 0036 delete m_thePixmap; 0037 } 0038 0039 void FrameImage::resizeEvent(QResizeEvent * ev) 0040 { 0041 *m_thePixmap = QPixmap(ev->size()); 0042 } 0043 0044 void FrameImage::paintEvent(QPaintEvent * pa) 0045 { 0046 QPainter p(this); 0047 0048 QPen line; 0049 line.setWidth(1); 0050 line.setColor(Qt::red); 0051 p.setPen(line); 0052 p.setBackgroundMode(Qt::OpaqueMode); 0053 p.setBackground(Qt::black); 0054 0055 int x = pa->rect().left(); 0056 int y = pa->rect().top(); 0057 int h = pa->rect().height(); 0058 int w = pa->rect().width(); 0059 0060 p.drawPixmap(x, y, *m_thePixmap, x, y, w - 2, h - 2); 0061 if (m_rx >= 0) { 0062 p.drawRect(m_rx + m_rs, m_ry, m_rw - m_rs, m_rh - m_rs); 0063 p.drawLine(m_rx, m_ry + m_rs, m_rx, m_ry + m_rh); 0064 p.drawLine(m_rx, m_ry + m_rs, m_rx + m_rs, m_ry); 0065 p.drawLine(m_rx, m_ry + m_rh, m_rx + m_rs, m_ry + m_rh - m_rs); 0066 p.drawLine(m_rx, m_ry + m_rh, m_rx + m_rw - m_rs, m_ry + m_rh); 0067 p.drawLine(m_rx + m_rw - m_rs, m_ry + m_rh, m_rx + m_rw, m_ry + m_rh - m_rs); 0068 0069 int midX = m_rx + m_rs + ((m_rw - m_rs) / 2); 0070 int midY = m_ry + ((m_rh - m_rs) / 2); 0071 switch (m_rt) { 0072 case 0: // delete mode cursor 0073 p.drawLine(m_rx + m_rs, m_ry, m_rx + m_rw, m_ry + m_rh - m_rs); 0074 p.drawLine(m_rx + m_rw, m_ry, m_rx + m_rs, m_ry + m_rh - m_rs); 0075 0076 break; 0077 case 1: // insert cursor 0078 p.drawLine(midX, m_ry, midX, m_ry + m_rh - m_rs); 0079 p.drawLine(m_rx + m_rs, midY, m_rx + m_rw, midY); 0080 0081 break; 0082 case 2: // move mode cursor 0083 p.drawLine(midX, m_ry, m_rx + m_rw, midY); 0084 p.drawLine(m_rx + m_rw, midY, midX, m_ry + m_rh - m_rs); 0085 p.drawLine(midX, m_ry + m_rh - m_rs, m_rx + m_rs, midY); 0086 p.drawLine(m_rx + m_rs, midY, midX, m_ry); 0087 0088 break; 0089 } 0090 } 0091 } 0092 0093 void FrameImage::setRect(int x, int y, int w, int h, int s, int t) 0094 { 0095 m_rx = x; 0096 m_ry = y; 0097 m_rw = w; 0098 m_rh = h; 0099 m_rt = t; 0100 m_rs = s; 0101 } 0102 0103 void FrameImage::mousePressEvent(QMouseEvent * m) 0104 { 0105 Q_EMIT mousePressed(m); 0106 } 0107 0108 void FrameImage::mouseMoveEvent(QMouseEvent * e) 0109 { 0110 Q_EMIT mouseMoved(e); 0111 } 0112 0113 #include "moc_frameimage.cpp"