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

Side by Side Diff: mojo/examples/png_viewer/png_viewer.cc

Issue 418983002: Nukes view_manager namespace (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: resolve merge Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « mojo/examples/nesting_app/nesting_app.cc ('k') | mojo/examples/window_manager/debug_panel.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <algorithm> 5 #include <algorithm>
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/strings/string_tokenizer.h" 8 #include "base/strings/string_tokenizer.h"
9 #include "mojo/examples/media_viewer/media_viewer.mojom.h" 9 #include "mojo/examples/media_viewer/media_viewer.mojom.h"
10 #include "mojo/public/cpp/application/application_connection.h" 10 #include "mojo/public/cpp/application/application_connection.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 } 82 }
83 83
84 SkBitmap bitmap; 84 SkBitmap bitmap;
85 gfx::PNGCodec::Decode(static_cast<const unsigned char*>(data), 85 gfx::PNGCodec::Decode(static_cast<const unsigned char*>(data),
86 content_length, &bitmap); 86 content_length, &bitmap);
87 UpdateView(node_id, bitmap); 87 UpdateView(node_id, bitmap);
88 88
89 delete[] data; 89 delete[] data;
90 } 90 }
91 91
92 void UpdateView(view_manager::Id node_id, const SkBitmap& bitmap); 92 void UpdateView(Id node_id, const SkBitmap& bitmap);
93 93
94 int GetContentLength(const Array<String>& headers) { 94 int GetContentLength(const Array<String>& headers) {
95 for (size_t i = 0; i < headers.size(); ++i) { 95 for (size_t i = 0; i < headers.size(); ++i) {
96 base::StringTokenizer t(headers[i], ": ;="); 96 base::StringTokenizer t(headers[i], ": ;=");
97 while (t.GetNext()) { 97 while (t.GetNext()) {
98 if (!t.token_is_delim() && t.token() == "Content-Length") { 98 if (!t.token_is_delim() && t.token() == "Content-Length") {
99 while (t.GetNext()) { 99 while (t.GetNext()) {
100 if (!t.token_is_delim()) 100 if (!t.token_is_delim())
101 return atoi(t.token().c_str()); 101 return atoi(t.token().c_str());
102 } 102 }
103 } 103 }
104 } 104 }
105 } 105 }
106 return 0; 106 return 0;
107 } 107 }
108 108
109 PNGViewer* viewer_; 109 PNGViewer* viewer_;
110 110
111 DISALLOW_COPY_AND_ASSIGN(NavigatorImpl); 111 DISALLOW_COPY_AND_ASSIGN(NavigatorImpl);
112 }; 112 };
113 113
114 class PNGViewer 114 class PNGViewer
115 : public ApplicationDelegate, 115 : public ApplicationDelegate,
116 public view_manager::ViewManagerDelegate, 116 public ViewManagerDelegate,
117 public view_manager::NodeObserver, 117 public NodeObserver,
118 public InterfaceFactoryWithContext<NavigatorImpl, PNGViewer>, 118 public InterfaceFactoryWithContext<NavigatorImpl, PNGViewer>,
119 public InterfaceFactoryWithContext<ZoomableMediaImpl, PNGViewer> { 119 public InterfaceFactoryWithContext<ZoomableMediaImpl, PNGViewer> {
120 public: 120 public:
121 PNGViewer() 121 PNGViewer()
122 : InterfaceFactoryWithContext<NavigatorImpl, PNGViewer>(this), 122 : InterfaceFactoryWithContext<NavigatorImpl, PNGViewer>(this),
123 InterfaceFactoryWithContext<ZoomableMediaImpl, PNGViewer>(this), 123 InterfaceFactoryWithContext<ZoomableMediaImpl, PNGViewer>(this),
124 content_view_(NULL), 124 content_view_(NULL),
125 root_(NULL), 125 root_(NULL),
126 zoom_percentage_(kDefaultZoomPercentage), 126 zoom_percentage_(kDefaultZoomPercentage),
127 view_manager_client_factory_(this) {} 127 view_manager_client_factory_(this) {}
128 virtual ~PNGViewer() { 128 virtual ~PNGViewer() {
129 if (root_) 129 if (root_)
130 root_->RemoveObserver(this); 130 root_->RemoveObserver(this);
131 } 131 }
132 132
133 void UpdateView(view_manager::Id node_id, const SkBitmap& bitmap) { 133 void UpdateView(Id node_id, const SkBitmap& bitmap) {
134 bitmap_ = bitmap; 134 bitmap_ = bitmap;
135 zoom_percentage_ = kDefaultZoomPercentage; 135 zoom_percentage_ = kDefaultZoomPercentage;
136 DrawBitmap(); 136 DrawBitmap();
137 } 137 }
138 138
139 void ZoomIn() { 139 void ZoomIn() {
140 if (zoom_percentage_ >= kMaxZoomPercentage) 140 if (zoom_percentage_ >= kMaxZoomPercentage)
141 return; 141 return;
142 zoom_percentage_ += kZoomStep; 142 zoom_percentage_ += kZoomStep;
143 DrawBitmap(); 143 DrawBitmap();
(...skipping 21 matching lines...) Expand all
165 165
166 // Overridden from ApplicationDelegate: 166 // Overridden from ApplicationDelegate:
167 virtual bool ConfigureIncomingConnection(ApplicationConnection* connection) 167 virtual bool ConfigureIncomingConnection(ApplicationConnection* connection)
168 MOJO_OVERRIDE { 168 MOJO_OVERRIDE {
169 connection->AddService<navigation::Navigator>(this); 169 connection->AddService<navigation::Navigator>(this);
170 connection->AddService<ZoomableMedia>(this); 170 connection->AddService<ZoomableMedia>(this);
171 connection->AddService(&view_manager_client_factory_); 171 connection->AddService(&view_manager_client_factory_);
172 return true; 172 return true;
173 } 173 }
174 174
175 // Overridden from view_manager::ViewManagerDelegate: 175 // Overridden from ViewManagerDelegate:
176 virtual void OnRootAdded(view_manager::ViewManager* view_manager, 176 virtual void OnRootAdded(ViewManager* view_manager, Node* root) OVERRIDE {
177 view_manager::Node* root) OVERRIDE {
178 root_ = root; 177 root_ = root;
179 root_->AddObserver(this); 178 root_->AddObserver(this);
180 content_view_ = view_manager::View::Create(view_manager); 179 content_view_ = View::Create(view_manager);
181 root_->SetActiveView(content_view_); 180 root_->SetActiveView(content_view_);
182 content_view_->SetColor(SK_ColorGRAY); 181 content_view_->SetColor(SK_ColorGRAY);
183 if (!bitmap_.isNull()) 182 if (!bitmap_.isNull())
184 DrawBitmap(); 183 DrawBitmap();
185 } 184 }
186 virtual void OnViewManagerDisconnected( 185 virtual void OnViewManagerDisconnected(
187 view_manager::ViewManager* view_manager) OVERRIDE { 186 ViewManager* view_manager) OVERRIDE {
188 base::MessageLoop::current()->Quit(); 187 base::MessageLoop::current()->Quit();
189 } 188 }
190 189
191 void DrawBitmap() { 190 void DrawBitmap() {
192 if (!content_view_) 191 if (!content_view_)
193 return; 192 return;
194 193
195 skia::RefPtr<SkCanvas> canvas(skia::AdoptRef(skia::CreatePlatformCanvas( 194 skia::RefPtr<SkCanvas> canvas(skia::AdoptRef(skia::CreatePlatformCanvas(
196 content_view_->node()->bounds().width(), 195 content_view_->node()->bounds().width(),
197 content_view_->node()->bounds().height(), 196 content_view_->node()->bounds().height(),
198 true))); 197 true)));
199 canvas->drawColor(SK_ColorGRAY); 198 canvas->drawColor(SK_ColorGRAY);
200 SkPaint paint; 199 SkPaint paint;
201 SkScalar scale = 200 SkScalar scale =
202 SkFloatToScalar(zoom_percentage_ * 1.0f / kDefaultZoomPercentage); 201 SkFloatToScalar(zoom_percentage_ * 1.0f / kDefaultZoomPercentage);
203 canvas->scale(scale, scale); 202 canvas->scale(scale, scale);
204 canvas->drawBitmap(bitmap_, 0, 0, &paint); 203 canvas->drawBitmap(bitmap_, 0, 0, &paint);
205 content_view_->SetContents(skia::GetTopDevice(*canvas)->accessBitmap(true)); 204 content_view_->SetContents(skia::GetTopDevice(*canvas)->accessBitmap(true));
206 } 205 }
207 206
208 // NodeObserver: 207 // NodeObserver:
209 virtual void OnNodeBoundsChanged(view_manager::Node* node, 208 virtual void OnNodeBoundsChanged(Node* node,
210 const gfx::Rect& old_bounds, 209 const gfx::Rect& old_bounds,
211 const gfx::Rect& new_bounds) OVERRIDE { 210 const gfx::Rect& new_bounds) OVERRIDE {
212 DCHECK_EQ(node, root_); 211 DCHECK_EQ(node, root_);
213 DrawBitmap(); 212 DrawBitmap();
214 } 213 }
215 virtual void OnNodeDestroyed(view_manager::Node* node) OVERRIDE { 214 virtual void OnNodeDestroyed(Node* node) OVERRIDE {
216 DCHECK_EQ(node, root_); 215 DCHECK_EQ(node, root_);
217 node->RemoveObserver(this); 216 node->RemoveObserver(this);
218 root_ = NULL; 217 root_ = NULL;
219 } 218 }
220 219
221 view_manager::View* content_view_; 220 View* content_view_;
222 view_manager::Node* root_; 221 Node* root_;
223 SkBitmap bitmap_; 222 SkBitmap bitmap_;
224 uint16_t zoom_percentage_; 223 uint16_t zoom_percentage_;
225 view_manager::ViewManagerClientFactory view_manager_client_factory_; 224 ViewManagerClientFactory view_manager_client_factory_;
226 225
227 DISALLOW_COPY_AND_ASSIGN(PNGViewer); 226 DISALLOW_COPY_AND_ASSIGN(PNGViewer);
228 }; 227 };
229 228
230 void ZoomableMediaImpl::ZoomIn() { 229 void ZoomableMediaImpl::ZoomIn() {
231 viewer_->ZoomIn(); 230 viewer_->ZoomIn();
232 } 231 }
233 232
234 void ZoomableMediaImpl::ZoomOut() { 233 void ZoomableMediaImpl::ZoomOut() {
235 viewer_->ZoomOut(); 234 viewer_->ZoomOut();
236 } 235 }
237 236
238 void ZoomableMediaImpl::ZoomToActualSize() { 237 void ZoomableMediaImpl::ZoomToActualSize() {
239 viewer_->ZoomToActualSize(); 238 viewer_->ZoomToActualSize();
240 } 239 }
241 240
242 void NavigatorImpl::UpdateView(view_manager::Id node_id, 241 void NavigatorImpl::UpdateView(Id node_id,
243 const SkBitmap& bitmap) { 242 const SkBitmap& bitmap) {
244 viewer_->UpdateView(node_id, bitmap); 243 viewer_->UpdateView(node_id, bitmap);
245 } 244 }
246 245
247 } // namespace examples 246 } // namespace examples
248 247
249 // static 248 // static
250 ApplicationDelegate* ApplicationDelegate::Create() { 249 ApplicationDelegate* ApplicationDelegate::Create() {
251 return new examples::PNGViewer; 250 return new examples::PNGViewer;
252 } 251 }
253 252
254 } // namespace mojo 253 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/examples/nesting_app/nesting_app.cc ('k') | mojo/examples/window_manager/debug_panel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698