| Index: examples/png_viewer/png_viewer.cc
|
| diff --git a/examples/png_viewer/png_viewer.cc b/examples/png_viewer/png_viewer.cc
|
| deleted file mode 100644
|
| index 47b31a017b0fcd576fe4a505fca36ae91c858fdb..0000000000000000000000000000000000000000
|
| --- a/examples/png_viewer/png_viewer.cc
|
| +++ /dev/null
|
| @@ -1,198 +0,0 @@
|
| -// Copyright 2014 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.
|
| -
|
| -#include <algorithm>
|
| -#include <string>
|
| -
|
| -#include "base/macros.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "examples/bitmap_uploader/bitmap_uploader.h"
|
| -#include "mojo/application/application_runner_chromium.h"
|
| -#include "mojo/application/content_handler_factory.h"
|
| -#include "mojo/data_pipe_utils/data_pipe_utils.h"
|
| -#include "mojo/public/c/system/main.h"
|
| -#include "mojo/public/cpp/application/application_connection.h"
|
| -#include "mojo/public/cpp/application/application_delegate.h"
|
| -#include "mojo/public/cpp/application/application_impl.h"
|
| -#include "mojo/public/cpp/application/interface_factory_impl.h"
|
| -#include "mojo/public/cpp/application/service_provider_impl.h"
|
| -#include "mojo/services/content_handler/interfaces/content_handler.mojom.h"
|
| -#include "mojo/services/view_manager/cpp/types.h"
|
| -#include "mojo/services/view_manager/cpp/view.h"
|
| -#include "mojo/services/view_manager/cpp/view_manager.h"
|
| -#include "mojo/services/view_manager/cpp/view_manager_client_factory.h"
|
| -#include "mojo/services/view_manager/cpp/view_manager_delegate.h"
|
| -#include "mojo/services/view_manager/cpp/view_observer.h"
|
| -#include "third_party/skia/include/core/SkColor.h"
|
| -#include "ui/gfx/codec/png_codec.h"
|
| -
|
| -namespace mojo {
|
| -namespace examples {
|
| -
|
| -namespace {
|
| -
|
| -class EmbedderData {
|
| - public:
|
| - EmbedderData(Shell* shell, View* root) : bitmap_uploader_(root) {
|
| - bitmap_uploader_.Init(shell);
|
| - bitmap_uploader_.SetColor(SK_ColorGRAY);
|
| - }
|
| -
|
| - BitmapUploader& bitmap_uploader() { return bitmap_uploader_; }
|
| -
|
| - private:
|
| - BitmapUploader bitmap_uploader_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(EmbedderData);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -// TODO(aa): Hook up ZoomableMedia interface again.
|
| -class PNGView : public ApplicationDelegate,
|
| - public ViewManagerDelegate,
|
| - public ViewObserver {
|
| - public:
|
| - PNGView(URLResponsePtr response)
|
| - : width_(0),
|
| - height_(0),
|
| - app_(nullptr),
|
| - zoom_percentage_(kDefaultZoomPercentage) {
|
| - DecodePNG(response.Pass());
|
| - }
|
| -
|
| - ~PNGView() override {
|
| - for (auto& roots : embedder_for_roots_) {
|
| - roots.first->RemoveObserver(this);
|
| - delete roots.second;
|
| - }
|
| - }
|
| -
|
| - private:
|
| - static const uint16_t kMaxZoomPercentage = 400;
|
| - static const uint16_t kMinZoomPercentage = 20;
|
| - static const uint16_t kDefaultZoomPercentage = 100;
|
| - static const uint16_t kZoomStep = 20;
|
| -
|
| - // Overridden from ApplicationDelegate:
|
| - void Initialize(ApplicationImpl* app) override {
|
| - app_ = app;
|
| - view_manager_client_factory_.reset(
|
| - new ViewManagerClientFactory(app->shell(), this));
|
| - }
|
| -
|
| - // Overridden from ApplicationDelegate:
|
| - bool ConfigureIncomingConnection(
|
| - ApplicationConnection* connection) override {
|
| - connection->AddService(view_manager_client_factory_.get());
|
| - return true;
|
| - }
|
| -
|
| - // Overridden from ViewManagerDelegate:
|
| - void OnEmbed(View* root,
|
| - InterfaceRequest<ServiceProvider> services,
|
| - ServiceProviderPtr exposed_services) override {
|
| - // TODO(qsr): The same view should be embeddable on multiple views.
|
| - DCHECK(embedder_for_roots_.find(root) == embedder_for_roots_.end());
|
| - root->AddObserver(this);
|
| - EmbedderData* embedder_data = new EmbedderData(app_->shell(), root);
|
| - embedder_for_roots_[root] = embedder_data;
|
| - embedder_data->bitmap_uploader().SetBitmap(
|
| - width_, height_,
|
| - make_scoped_ptr(new std::vector<unsigned char>(*bitmap_)),
|
| - BitmapUploader::BGRA);
|
| - }
|
| -
|
| - void OnViewManagerDisconnected(ViewManager* view_manager) override {
|
| - }
|
| -
|
| - // Overridden from ViewObserver:
|
| - void OnViewBoundsChanged(View* view,
|
| - const Rect& old_bounds,
|
| - const Rect& new_bounds) override {
|
| - DCHECK(embedder_for_roots_.find(view) != embedder_for_roots_.end());
|
| - }
|
| -
|
| - void OnViewDestroyed(View* view) override {
|
| - // TODO(aa): Need to figure out how shutdown works.
|
| - const auto& it = embedder_for_roots_.find(view);
|
| - DCHECK(it != embedder_for_roots_.end());
|
| - delete it->second;
|
| - embedder_for_roots_.erase(it);
|
| - if (embedder_for_roots_.size() == 0)
|
| - ApplicationImpl::Terminate();
|
| - }
|
| -
|
| - void ZoomIn() {
|
| - // TODO(qsr,aa) Zoom should be per embedder view.
|
| - if (zoom_percentage_ >= kMaxZoomPercentage)
|
| - return;
|
| - zoom_percentage_ += kZoomStep;
|
| - }
|
| -
|
| - void ZoomOut() {
|
| - if (zoom_percentage_ <= kMinZoomPercentage)
|
| - return;
|
| - zoom_percentage_ -= kZoomStep;
|
| - }
|
| -
|
| - void ZoomToActualSize() {
|
| - if (zoom_percentage_ == kDefaultZoomPercentage)
|
| - return;
|
| - zoom_percentage_ = kDefaultZoomPercentage;
|
| - }
|
| -
|
| - void DecodePNG(URLResponsePtr response) {
|
| - std::string data;
|
| - mojo::common::BlockingCopyToString(response->body.Pass(), &data);
|
| - bitmap_.reset(new std::vector<unsigned char>);
|
| - gfx::PNGCodec::Decode(reinterpret_cast<const unsigned char*>(data.data()),
|
| - data.length(), gfx::PNGCodec::FORMAT_BGRA,
|
| - bitmap_.get(), &width_, &height_);
|
| - }
|
| -
|
| - int width_;
|
| - int height_;
|
| - scoped_ptr<std::vector<unsigned char>> bitmap_;
|
| - ApplicationImpl* app_;
|
| - std::map<View*, EmbedderData*> embedder_for_roots_;
|
| - scoped_ptr<ViewManagerClientFactory> view_manager_client_factory_;
|
| - uint16_t zoom_percentage_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(PNGView);
|
| -};
|
| -
|
| -class PNGViewer : public ApplicationDelegate,
|
| - public ContentHandlerFactory::ManagedDelegate {
|
| - public:
|
| - PNGViewer() : content_handler_factory_(this) {}
|
| -
|
| - private:
|
| - // Overridden from ApplicationDelegate:
|
| - bool ConfigureIncomingConnection(ApplicationConnection* connection) override {
|
| - connection->AddService(&content_handler_factory_);
|
| - return true;
|
| - }
|
| -
|
| - // Overridden from ContentHandlerFactory::ManagedDelegate:
|
| - scoped_ptr<ContentHandlerFactory::HandledApplicationHolder>
|
| - CreateApplication(InterfaceRequest<Application> application_request,
|
| - URLResponsePtr response) override {
|
| - return make_handled_factory_holder(new mojo::ApplicationImpl(
|
| - new PNGView(response.Pass()), application_request.Pass()));
|
| - }
|
| -
|
| - ContentHandlerFactory content_handler_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(PNGViewer);
|
| -};
|
| -
|
| -} // namespace examples
|
| -} // namespace mojo
|
| -
|
| -MojoResult MojoMain(MojoHandle application_request) {
|
| - mojo::ApplicationRunnerChromium runner(new mojo::examples::PNGViewer());
|
| - return runner.Run(application_request);
|
| -}
|
|
|