// 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_