1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef PDF_PAGE_INDICATOR_H_
6#define PDF_PAGE_INDICATOR_H_
7
8#include <string>
9#include <vector>
10
11#include "pdf/control.h"
12#include "pdf/fading_control.h"
13#include "ppapi/cpp/image_data.h"
14#include "ppapi/cpp/point.h"
15#include "ppapi/cpp/rect.h"
16
17namespace chrome_pdf {
18
19class NumberImageGenerator;
20
21const uint32 kPageIndicatorScrollFadeTimeoutMs = 240;
22const uint32 kPageIndicatorInitialFadeTimeoutMs = 960;
23const uint32 kPageIndicatorSplashTimeoutMs = 2000;
24
25class PageIndicator : public FadingControl {
26 public:
27  PageIndicator();
28  virtual ~PageIndicator();
29  virtual bool CreatePageIndicator(
30      uint32 id,
31      bool visible,
32      Control::Owner* delegate,
33      NumberImageGenerator* number_image_generator,
34      bool always_visible);
35
36  void Configure(const pp::Point& origin, const pp::ImageData& background);
37
38  int current_page() const { return current_page_; }
39  void set_current_page(int current_page);
40
41  virtual void Splash();
42  void Splash(uint32 splash_timeout, uint32 page_timeout);
43
44  // Returns the y position where the page indicator should be drawn given the
45  // position of the scrollbar and the total document height and the plugin
46  // height.
47  int GetYPosition(
48      int vertical_scrollbar_y, int document_height, int plugin_height);
49
50  // Control interface.
51  virtual void Paint(pp::ImageData* image_data, const pp::Rect& rc);
52  virtual void OnTimerFired(uint32 timer_id);
53
54  // FadingControl interface.
55  virtual void OnFadeInComplete();
56
57 private:
58  void ResetFadeOutTimer();
59
60  int current_page_;
61  pp::ImageData background_;
62  NumberImageGenerator* number_image_generator_;
63  uint32 fade_out_timer_id_;
64  uint32 splash_timeout_;
65  uint32 fade_timeout_;
66
67  bool always_visible_;
68};
69
70}  // namespace chrome_pdf
71
72#endif  // PDF_PAGE_INDICATOR_H_
73