Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Unified Diff: examples/png_viewer/png_viewer.cc

Issue 1559723002: Update the UI examples. (Closed) Base URL: git@github.com:domokit/mojo.git@moz-14
Patch Set: address feedback Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « examples/png_viewer/BUILD.gn ('k') | examples/ui/pdf_viewer/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
-}
« no previous file with comments | « examples/png_viewer/BUILD.gn ('k') | examples/ui/pdf_viewer/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698