| // Copyright (c) 2012 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_PAGE_INDICATOR_H_ |
| #define PDF_PAGE_INDICATOR_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include "pdf/control.h" |
| #include "pdf/fading_control.h" |
| #include "ppapi/cpp/image_data.h" |
| #include "ppapi/cpp/point.h" |
| #include "ppapi/cpp/rect.h" |
| |
| namespace chrome_pdf { |
| |
| class NumberImageGenerator; |
| |
| const uint32 kPageIndicatorScrollFadeTimeoutMs = 240; |
| const uint32 kPageIndicatorInitialFadeTimeoutMs = 960; |
| const uint32 kPageIndicatorSplashTimeoutMs = 2000; |
| |
| class PageIndicator : public FadingControl { |
| public: |
| PageIndicator(); |
| virtual ~PageIndicator(); |
| virtual bool CreatePageIndicator( |
| uint32 id, |
| bool visible, |
| Control::Owner* delegate, |
| NumberImageGenerator* number_image_generator, |
| bool always_visible); |
| |
| void Configure(const pp::Point& origin, const pp::ImageData& background); |
| |
| int current_page() const { return current_page_; } |
| void set_current_page(int current_page); |
| |
| virtual void Splash(); |
| void Splash(uint32 splash_timeout, uint32 page_timeout); |
| |
| // Returns the y position where the page indicator should be drawn given the |
| // position of the scrollbar and the total document height and the plugin |
| // height. |
| int GetYPosition( |
| int vertical_scrollbar_y, int document_height, int plugin_height); |
| |
| // Control interface. |
| virtual void Paint(pp::ImageData* image_data, const pp::Rect& rc); |
| virtual void OnTimerFired(uint32 timer_id); |
| |
| // FadingControl interface. |
| virtual void OnFadeInComplete(); |
| |
| private: |
| void ResetFadeOutTimer(); |
| |
| int current_page_; |
| pp::ImageData background_; |
| NumberImageGenerator* number_image_generator_; |
| uint32 fade_out_timer_id_; |
| uint32 splash_timeout_; |
| uint32 fade_timeout_; |
| |
| bool always_visible_; |
| }; |
| |
| } // namespace chrome_pdf |
| |
| #endif // PDF_PAGE_INDICATOR_H_ |