59 lines
		
	
	
	
		
			1.3 KiB
			
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			59 lines
		
	
	
	
		
			1.3 KiB
			
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
								 | 
							
								// Copyright (c) 2017 GitHub, Inc.
							 | 
						||
| 
								 | 
							
								// Use of this source code is governed by the MIT license that can be
							 | 
						||
| 
								 | 
							
								// found in the LICENSE file.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "atom/browser/osr/osr_view_proxy.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace atom {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								OffscreenViewProxy::OffscreenViewProxy(views::View* view)
							 | 
						||
| 
								 | 
							
								    : view_(view), observer_(nullptr) {
							 | 
						||
| 
								 | 
							
								  view_bitmap_.reset(new SkBitmap);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								OffscreenViewProxy::~OffscreenViewProxy() {
							 | 
						||
| 
								 | 
							
								  if (observer_) {
							 | 
						||
| 
								 | 
							
								    observer_->ProxyViewDestroyed(this);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void OffscreenViewProxy::SetObserver(OffscreenViewProxyObserver* observer) {
							 | 
						||
| 
								 | 
							
								  if (observer_) {
							 | 
						||
| 
								 | 
							
								    observer_->ProxyViewDestroyed(this);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  observer_ = observer;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void OffscreenViewProxy::RemoveObserver() {
							 | 
						||
| 
								 | 
							
								  observer_ = nullptr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const SkBitmap* OffscreenViewProxy::GetBitmap() const {
							 | 
						||
| 
								 | 
							
								  return view_bitmap_.get();
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void OffscreenViewProxy::SetBitmap(const SkBitmap& bitmap) {
							 | 
						||
| 
								 | 
							
								  if (view_bounds_.width() == bitmap.width() &&
							 | 
						||
| 
								 | 
							
								      view_bounds_.height() == bitmap.height() &&
							 | 
						||
| 
								 | 
							
								      observer_) {
							 | 
						||
| 
								 | 
							
								    view_bitmap_.reset(new SkBitmap(bitmap));
							 | 
						||
| 
								 | 
							
								    observer_->OnProxyViewPaint(view_bounds_);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const gfx::Rect& OffscreenViewProxy::GetBounds() {
							 | 
						||
| 
								 | 
							
								  return view_bounds_;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void OffscreenViewProxy::SetBounds(const gfx::Rect& bounds) {
							 | 
						||
| 
								 | 
							
								  view_bounds_ = bounds;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void OffscreenViewProxy::OnEvent(ui::Event* event) {
							 | 
						||
| 
								 | 
							
								  if (view_) {
							 | 
						||
| 
								 | 
							
								    view_->OnEvent(event);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}  // namespace atom
							 |