diff options
Diffstat (limited to 'xfa_test/pdf/progress_control.h')
-rw-r--r-- | xfa_test/pdf/progress_control.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/xfa_test/pdf/progress_control.h b/xfa_test/pdf/progress_control.h new file mode 100644 index 0000000000..96d5da1ce9 --- /dev/null +++ b/xfa_test/pdf/progress_control.h @@ -0,0 +1,72 @@ +// 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_ |