1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file. 4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef PDF_FADING_CONTROLS_H_ 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define PDF_FADING_CONTROLS_H_ 7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include <list> 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "pdf/control.h" 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace chrome_pdf { 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class FadingControls : public Control, 15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public ControlOwner { 16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) enum FadingState { 18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) NONE, 19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) FADING_IN, 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) FADING_OUT 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) }; 22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) FadingControls(); 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual ~FadingControls(); 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool CreateFadingControls( 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) uint32 id, const pp::Rect& rc, bool visible, 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) Control::Owner* delegate, uint8 transparency); 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Control interface. 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void Paint(pp::ImageData* image_data, const pp::Rect& rc); 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool HandleEvent(const pp::InputEvent& event); 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void OnTimerFired(uint32 timer_id); 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void EventCaptureReleased(); 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void MoveBy(const pp::Point& offset, bool invalidate); 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // ControlOwner interface. 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void OnEvent(uint32 control_id, uint32 event_id, void* data); 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void Invalidate(uint32 control_id, const pp::Rect& rc); 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual uint32 ScheduleTimer(uint32 control_id, uint32 timeout_ms); 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void SetEventCapture(uint32 control_id, bool set_capture); 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void SetCursor(uint32 control_id, PP_CursorType_Dev cursor_type); 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual pp::Instance* GetInstance(); 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // FadingControls interface 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // This function takes ownership of the control, and will destoy it 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // when control is destroyed. 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Input control MUST be located inside FadingControls boundaries, and has 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // this instance of FadingControls as a delegate. 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool AddControl(Control* control); 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void RemoveControl(uint32 control_id); 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual Control* GetControl(uint32 id); 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual pp::Rect GetControlsRect(); 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Expand/Shrink area which triggers inner control appearance to the left. 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool ExpandLeft(int offset); 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Fade-in, then show controls for time_ms, and then fade-out. Any mouse 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // event in this control area will interrupt splash mode. 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void Splash(uint32 time_ms); 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) uint8 current_transparency() const { return current_transparency_; } 62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private: 64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool NotifyControls(const pp::InputEvent& event); 65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void FadeIn(); 66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void FadeOut(); 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void OnFadingComplete(); 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) void CancelSplashMode(); 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) std::list<Control*> controls_; 71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) FadingState state_; 72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) uint8 current_transparency_; 73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) uint32 fading_timer_id_; 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) uint32 current_capture_control_; 75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) uint32 fading_timeout_; 76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) uint32 alpha_shift_; 77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) bool splash_; 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) uint32 splash_timeout_; 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} // namespace chrome_pdf 82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif // PDF_FADING_CONTROLS_H_ 84cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 85