summaryrefslogtreecommitdiff
path: root/xfa_test/pdf/button.cc
diff options
context:
space:
mode:
Diffstat (limited to 'xfa_test/pdf/button.cc')
-rw-r--r--xfa_test/pdf/button.cc179
1 files changed, 0 insertions, 179 deletions
diff --git a/xfa_test/pdf/button.cc b/xfa_test/pdf/button.cc
deleted file mode 100644
index 3a30164c14..0000000000
--- a/xfa_test/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
-