1 /* 2 * This file is part of RawTherapee. 3 * 4 * Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com> 5 * 6 * RawTherapee is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * RawTherapee is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with RawTherapee. If not, see <https://www.gnu.org/licenses/>. 18 */ 19 #pragma once 20 21 #include <gtkmm.h> 22 23 enum CursorShape { 24 CSAddColPicker, 25 CSArrow, 26 CSCropSelect, 27 CSCrosshair, 28 CSEmpty, 29 CSHandClosed, 30 CSHandOpen, 31 CSMove, 32 CSMove1DH, 33 CSMove1DV, 34 CSMove2D, 35 CSMoveLeft, 36 CSMoveRight, 37 CSMoveRotate, 38 CSPlus, 39 CSResizeBottomLeft, 40 CSResizeBottomRight, 41 CSResizeDiagonal, 42 CSResizeHeight, 43 CSResizeTopLeft, 44 CSResizeTopRight, 45 CSResizeWidth, 46 CSSpotWB, 47 CSStraighten, 48 CSUndefined, 49 CSWait 50 }; 51 52 class CursorManager 53 { 54 55 private: 56 Glib::RefPtr<Gdk::Cursor> cAdd; 57 Glib::RefPtr<Gdk::Cursor> cAddPicker; 58 Glib::RefPtr<Gdk::Cursor> cCropDraw; 59 Glib::RefPtr<Gdk::Cursor> cCrosshair; 60 Glib::RefPtr<Gdk::Cursor> cHandClosed; 61 Glib::RefPtr<Gdk::Cursor> cHandOpen; 62 Glib::RefPtr<Gdk::Cursor> cEmpty; 63 Glib::RefPtr<Gdk::Cursor> cMoveBL; 64 Glib::RefPtr<Gdk::Cursor> cMoveBR; 65 Glib::RefPtr<Gdk::Cursor> cMoveL; 66 Glib::RefPtr<Gdk::Cursor> cMoveR; 67 Glib::RefPtr<Gdk::Cursor> cMoveTL; 68 Glib::RefPtr<Gdk::Cursor> cMoveTR; 69 Glib::RefPtr<Gdk::Cursor> cMoveX; 70 Glib::RefPtr<Gdk::Cursor> cMoveY; 71 Glib::RefPtr<Gdk::Cursor> cMoveXY; 72 Glib::RefPtr<Gdk::Cursor> cRotate; 73 Glib::RefPtr<Gdk::Cursor> cWB; 74 Glib::RefPtr<Gdk::Cursor> cWait; 75 76 Glib::RefPtr<Gdk::Display> display; 77 Glib::RefPtr<Gdk::Window> window; 78 79 void setCursor (CursorShape shape); 80 void setCursor (Glib::RefPtr<Gdk::Window> window, CursorShape shape); 81 82 public: 83 void init (Glib::RefPtr<Gdk::Window> mainWindow); 84 void cleanup (); 85 static void setWidgetCursor (Glib::RefPtr<Gdk::Window> window, CursorShape shape); 86 static void setCursorOfMainWindow (Glib::RefPtr<Gdk::Window> window, CursorShape shape); 87 }; 88 89 extern CursorManager mainWindowCursorManager; 90 extern CursorManager editWindowCursorManager; 91