// 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_PROGRESS_CONTROL_H_ #define PDF_PROGRESS_CONTROL_H_ #include <string> #include <vector> #include "pdf/control.h" #include "pdf/fading_control.h" #include "ppapi/cpp/image_data.h" namespace chrome_pdf { class ProgressControl : public FadingControl { public: static const double kCompleted; enum ProgressEventIds { EVENT_ID_PROGRESS_COMPLETED, }; ProgressControl(); virtual ~ProgressControl(); virtual bool CreateProgressControl(uint32 id, bool visible, Control::Owner* delegate, double progress, float device_scale, const std::vector<pp::ImageData>& images, const pp::ImageData& background, const std::string& text); void Reconfigure(const pp::ImageData& background, const std::vector<pp::ImageData>& images, float device_scale); static void CalculateLayout(pp::Instance* instance, const std::vector<pp::ImageData>& images, const pp::ImageData& background, const std::string& text, float device_scale, pp::Size* ctrl_size, pp::Rect* image_rc, pp::Rect* text_rc); // Control interface. virtual void Paint(pp::ImageData* image_data, const pp::Rect& rc); // ProgressControl interface // Set progress indicator in percents from 0% to 100%. virtual void SetProgress(double progress); private: void PrepareBackground(); void AdjustBackground(); size_t GetImageIngex() const; double progress_; float device_scale_; std::vector<pp::ImageData> images_; pp::ImageData background_; pp::ImageData ctrl_background_; std::string text_; pp::Rect image_rc_; pp::Rect text_rc_; }; } // namespace chrome_pdf #endif // PDF_PROGRESS_CONTROL_H_