1 // 2 // Copyright (c) 2008-2017 the Urho3D project. 3 // 4 // Permission is hereby granted, free of charge, to any person obtaining a copy 5 // of this software and associated documentation files (the "Software"), to deal 6 // in the Software without restriction, including without limitation the rights 7 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 // copies of the Software, and to permit persons to whom the Software is 9 // furnished to do so, subject to the following conditions: 10 // 11 // The above copyright notice and this permission notice shall be included in 12 // all copies or substantial portions of the Software. 13 // 14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 // THE SOFTWARE. 21 // 22 23 #pragma once 24 25 #include "../UI/BorderImage.h" 26 27 namespace Urho3D 28 { 29 30 /// %UI element that can be toggled between unchecked and checked state. 31 class URHO3D_API CheckBox : public BorderImage 32 { 33 URHO3D_OBJECT(CheckBox, BorderImage); 34 35 public: 36 /// Construct. 37 CheckBox(Context* context); 38 /// Destruct. 39 virtual ~CheckBox(); 40 /// Register object factory. 41 static void RegisterObject(Context* context); 42 43 /// Return UI rendering batches. 44 virtual void GetBatches(PODVector<UIBatch>& batches, PODVector<float>& vertexData, const IntRect& currentScissor); 45 /// React to mouse click begin. 46 virtual void OnClickBegin 47 (const IntVector2& position, const IntVector2& screenPosition, int button, int buttons, int qualifiers, Cursor* cursor); 48 /// React to a key press. 49 virtual void OnKey(int key, int buttons, int qualifiers); 50 51 /// Set checked state. 52 void SetChecked(bool enable); 53 /// Set checked image offset. 54 void SetCheckedOffset(const IntVector2& rect); 55 /// Set checked image offset. 56 void SetCheckedOffset(int x, int y); 57 58 /// Return whether is checked. IsChecked()59 bool IsChecked() const { return checked_; } 60 61 /// Return checked image offset. GetCheckedOffset()62 const IntVector2& GetCheckedOffset() const { return checkedOffset_; } 63 64 protected: 65 /// Checked image offset. 66 IntVector2 checkedOffset_; 67 /// Current checked state. 68 bool checked_; 69 }; 70 71 } 72