Index: pdf/button.cc |
diff --git a/pdf/button.cc b/pdf/button.cc |
deleted file mode 100644 |
index 3a30164c14792e4d9c285ee3da89ed8d06c1a19b..0000000000000000000000000000000000000000 |
--- a/pdf/button.cc |
+++ /dev/null |
@@ -1,179 +0,0 @@ |
-// 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. |
- |
-#include "pdf/button.h" |
- |
-#include "base/logging.h" |
-#include "pdf/draw_utils.h" |
-#include "ppapi/cpp/input_event.h" |
- |
-namespace chrome_pdf { |
- |
-Button::Button() |
- : style_(BUTTON_CLICKABLE), state_(BUTTON_NORMAL), is_pressed_(false) { |
-} |
- |
-Button::~Button() { |
-} |
- |
-bool Button::CreateButton(uint32 id, |
- const pp::Point& origin, |
- bool visible, |
- Control::Owner* owner, |
- ButtonStyle style, |
- const pp::ImageData& face_normal, |
- const pp::ImageData& face_highlighted, |
- const pp::ImageData& face_pressed) { |
- DCHECK(face_normal.size().GetArea()); |
- DCHECK(face_normal.size() == face_highlighted.size()); |
- DCHECK(face_normal.size() == face_pressed.size()); |
- |
- pp::Rect rc(origin, face_normal.size()); |
- if (!Control::Create(id, rc, visible, owner)) |
- return false; |
- |
- style_ = style; |
- |
- normal_ = face_normal; |
- highlighted_ = face_highlighted; |
- pressed_ = face_pressed; |
- |
- return true; |
-} |
- |
- |
-void Button::Paint(pp::ImageData* image_data, const pp::Rect& rc) { |
- if (!visible()) |
- return; |
- |
- pp::Rect draw_rc = rc.Intersect(rect()); |
- if (draw_rc.IsEmpty()) |
- return; |
- |
- pp::Point origin = draw_rc.point(); |
- draw_rc.Offset(-rect().x(), -rect().y()); |
- |
- AlphaBlend(GetCurrentImage(), draw_rc, image_data, origin, transparency()); |
-} |
- |
-bool Button::HandleEvent(const pp::InputEvent& event) { |
- if (!visible()) |
- return false; |
- |
- // Button handles mouse events only. |
- pp::MouseInputEvent mouse_event(event); |
- if (mouse_event.is_null()) |
- return false; |
- |
- pp::Point pt = mouse_event.GetPosition(); |
- if (!rect().Contains(pt) || |
- event.GetType() == PP_INPUTEVENT_TYPE_MOUSELEAVE) { |
- ChangeState(BUTTON_NORMAL, false); |
- owner()->SetEventCapture(id(), false); |
- return false; |
- } |
- |
- owner()->SetCursor(id(), PP_CURSORTYPE_POINTER); |
- owner()->SetEventCapture(id(), true); |
- |
- bool handled = true; |
- switch (event.GetType()) { |
- case PP_INPUTEVENT_TYPE_MOUSEMOVE: |
- if (state_ == BUTTON_NORMAL) |
- ChangeState(BUTTON_HIGHLIGHTED, false); |
- break; |
- case PP_INPUTEVENT_TYPE_MOUSEDOWN: |
- if (mouse_event.GetButton() == PP_INPUTEVENT_MOUSEBUTTON_LEFT) { |
- ChangeState(BUTTON_PRESSED, false); |
- is_pressed_ = true; |
- } |
- break; |
- case PP_INPUTEVENT_TYPE_MOUSEUP: |
- if (mouse_event.GetButton() == PP_INPUTEVENT_MOUSEBUTTON_LEFT && |
- is_pressed_) { |
- OnButtonClicked(); |
- is_pressed_ = false; |
- } else { |
- // Since button has not been pressed, return false to allow other |
- // controls (scrollbar) to process mouse button up. |
- return false; |
- } |
- break; |
- default: |
- handled = false; |
- break; |
- } |
- |
- return handled; |
-} |
- |
-void Button::OnEventCaptureReleased() { |
- ChangeState(BUTTON_NORMAL, false); |
-} |
- |
-void Button::Show(bool visible, bool invalidate) { |
- // If button become invisible, remove pressed flag. |
- if (!visible) |
- is_pressed_ = false; |
- Control::Show(visible, invalidate); |
-} |
- |
-void Button::AdjustTransparency(uint8 transparency, bool invalidate) { |
- // If button become invisible, remove pressed flag. |
- if (transparency == kTransparentAlpha) |
- is_pressed_ = false; |
- Control::AdjustTransparency(transparency, invalidate); |
-} |
- |
-void Button::SetPressedState(bool pressed) { |
- if (style_ == BUTTON_STATE) { |
- if (IsPressed() != pressed) |
- ChangeState(pressed ? BUTTON_PRESSED_STICKY : BUTTON_NORMAL, true); |
- } |
-} |
- |
-const pp::ImageData& Button::GetCurrentImage() { |
- switch (state_) { |
- case BUTTON_NORMAL: return normal_; |
- case BUTTON_HIGHLIGHTED: return highlighted_; |
- case BUTTON_PRESSED: |
- case BUTTON_PRESSED_STICKY: return pressed_; |
- } |
- NOTREACHED(); |
- return normal_; |
-} |
- |
-void Button::ChangeState(ButtonState new_state, bool force) { |
- if (style_ == BUTTON_STATE && !force) { |
- // If button is a state button and pressed state is sticky, |
- // user have to click on this button again to unpress it. |
- if ((state_ == BUTTON_PRESSED_STICKY && new_state != BUTTON_PRESSED_STICKY) |
- || |
- (state_ != BUTTON_PRESSED_STICKY && new_state == BUTTON_PRESSED_STICKY)) |
- return; |
- } |
- |
- if (state_ != new_state) { |
- state_ = new_state; |
- owner()->Invalidate(id(), rect()); |
- } |
-} |
- |
-void Button::OnButtonClicked() { |
- switch (style_) { |
- case BUTTON_CLICKABLE: |
- ChangeState(BUTTON_HIGHLIGHTED, true); |
- owner()->OnEvent(id(), EVENT_ID_BUTTON_CLICKED, NULL); |
- break; |
- case BUTTON_STATE: |
- SetPressedState(!IsPressed()); |
- owner()->OnEvent(id(), EVENT_ID_BUTTON_STATE_CHANGED, NULL); |
- break; |
- default: |
- NOTREACHED(); |
- } |
-} |
- |
-} // namespace chrome_pdf |
- |