File indexing completed on 2024-04-21 04:02:02
0001 /* 0002 KBlackBox - A simple game inspired by an emacs module 0003 0004 SPDX-FileCopyrightText: 1999-2000 Robert Cimrman <cimrman3@students.zcu.cz> 0005 SPDX-FileCopyrightText: 2007 Nicolas Roffet <nicolas-kde@roffet.com> 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 0011 0012 #ifndef KBBGRAPHICSITEMLASER_H 0013 #define KBBGRAPHICSITEMLASER_H 0014 0015 0016 #include "kbbgraphicsitem.h" 0017 #include "kbbgraphicsitemborder.h" 0018 #include "kbbitemwithposition.h" 0019 class KBBScalableGraphicWidget; 0020 class KBBThemeManager; 0021 0022 0023 0024 /** 0025 * @brief Laser element of the scalable graphic widget 0026 * 0027 * The laser is used to shoot a laser ray into the black box. 0028 * 0029 * Note: The laser size should be so defined: width = width of a single box of the black box (RATIO), height = twice the size of single box of the black box (2*RATIO). The laser size is independent of the board border size. 0030 */ 0031 class KBBGraphicsItemLaser : public KBBGraphicsItemBorder, public KBBGraphicsItem, public KBBItemWithPosition 0032 { 0033 public: 0034 /** 0035 * @brief Constructor 0036 * 0037 * @param parent Scalable graphic widget 0038 * @param themeManager Theme manager 0039 * @param borderPosition Position of the laser around the border. Each laser has a different border position. 0040 * @param columns Width of the Black Box 0041 * @param rows Height of the Black Box 0042 */ 0043 KBBGraphicsItemLaser(KBBScalableGraphicWidget* parent, KBBThemeManager* themeManager, const int borderPosition, const int columns, const int rows); 0044 0045 /** 0046 * @brief Get the border position 0047 */ 0048 int position() override; 0049 0050 0051 private: 0052 void hoverEnterEvent (QGraphicsSceneHoverEvent*) override; 0053 void hoverLeaveEvent (QGraphicsSceneHoverEvent*) override; 0054 void mousePressEvent (QGraphicsSceneMouseEvent* event) override; 0055 0056 KBBScalableGraphicWidget* m_widget; 0057 }; 0058 0059 #endif // KBBGRAPHICSITEMLASER_H