1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef PDF_BUTTON_H_ 6 #define PDF_BUTTON_H_ 7 8 #include "pdf/control.h" 9 #include "ppapi/cpp/image_data.h" 10 #include "ppapi/cpp/rect.h" 11 12 namespace chrome_pdf { 13 14 class Button : public Control { 15 public: 16 enum ButtonEventIds { 17 EVENT_ID_BUTTON_CLICKED, 18 EVENT_ID_BUTTON_STATE_CHANGED, 19 }; 20 21 enum ButtonStyle { 22 BUTTON_CLICKABLE, 23 BUTTON_STATE 24 }; 25 26 enum ButtonState { 27 BUTTON_NORMAL, 28 BUTTON_HIGHLIGHTED, 29 BUTTON_PRESSED, 30 BUTTON_PRESSED_STICKY, 31 }; 32 33 Button(); 34 virtual ~Button(); 35 virtual bool CreateButton(uint32 id, 36 const pp::Point& origin, 37 bool visible, 38 Control::Owner* delegate, 39 ButtonStyle style, 40 const pp::ImageData& face_normal, 41 const pp::ImageData& face_highlighted, 42 const pp::ImageData& face_pressed); 43 44 virtual void Paint(pp::ImageData* image_data, const pp::Rect& rc); 45 virtual bool HandleEvent(const pp::InputEvent& event); 46 virtual void OnEventCaptureReleased(); 47 virtual void Show(bool visible, bool invalidate); 48 virtual void AdjustTransparency(uint8 transparency, bool invalidate); 49 state()50 ButtonState state() const { return state_; } IsPressed()51 bool IsPressed() const { return state() == BUTTON_PRESSED_STICKY; } 52 void SetPressedState(bool pressed); 53 54 private: 55 void OnButtonClicked(); 56 57 const pp::ImageData& GetCurrentImage(); 58 void ChangeState(ButtonState new_state, bool force); 59 60 ButtonStyle style_; 61 ButtonState state_; 62 bool is_pressed_; 63 64 pp::ImageData normal_; 65 pp::ImageData highlighted_; 66 pp::ImageData pressed_; 67 }; 68 69 } // namespace chrome_pdf 70 71 #endif // PDF_BUTTON_H_ 72