| // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef PDF_BUTTON_H_ |
| #define PDF_BUTTON_H_ |
| |
| #include "pdf/control.h" |
| #include "ppapi/cpp/image_data.h" |
| #include "ppapi/cpp/rect.h" |
| |
| namespace chrome_pdf { |
| |
| class Button : public Control { |
| public: |
| enum ButtonEventIds { |
| EVENT_ID_BUTTON_CLICKED, |
| EVENT_ID_BUTTON_STATE_CHANGED, |
| }; |
| |
| enum ButtonStyle { |
| BUTTON_CLICKABLE, |
| BUTTON_STATE |
| }; |
| |
| enum ButtonState { |
| BUTTON_NORMAL, |
| BUTTON_HIGHLIGHTED, |
| BUTTON_PRESSED, |
| BUTTON_PRESSED_STICKY, |
| }; |
| |
| Button(); |
| virtual ~Button(); |
| virtual bool CreateButton(uint32 id, |
| const pp::Point& origin, |
| bool visible, |
| Control::Owner* delegate, |
| ButtonStyle style, |
| const pp::ImageData& face_normal, |
| const pp::ImageData& face_highlighted, |
| const pp::ImageData& face_pressed); |
| |
| virtual void Paint(pp::ImageData* image_data, const pp::Rect& rc); |
| virtual bool HandleEvent(const pp::InputEvent& event); |
| virtual void OnEventCaptureReleased(); |
| virtual void Show(bool visible, bool invalidate); |
| virtual void AdjustTransparency(uint8 transparency, bool invalidate); |
| |
| ButtonState state() const { return state_; } |
| bool IsPressed() const { return state() == BUTTON_PRESSED_STICKY; } |
| void SetPressedState(bool pressed); |
| |
| private: |
| void OnButtonClicked(); |
| |
| const pp::ImageData& GetCurrentImage(); |
| void ChangeState(ButtonState new_state, bool force); |
| |
| ButtonStyle style_; |
| ButtonState state_; |
| bool is_pressed_; |
| |
| pp::ImageData normal_; |
| pp::ImageData highlighted_; |
| pp::ImageData pressed_; |
| }; |
| |
| } // namespace chrome_pdf |
| |
| #endif // PDF_BUTTON_H_ |