1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/image/src/ImageWrapper.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,321 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#include "ImageWrapper.h" 1.10 +#include "mozilla/gfx/2D.h" 1.11 +#include "mozilla/RefPtr.h" 1.12 +#include "Orientation.h" 1.13 + 1.14 +#include "mozilla/MemoryReporting.h" 1.15 + 1.16 +using mozilla::gfx::DataSourceSurface; 1.17 +using mozilla::gfx::SourceSurface; 1.18 +using mozilla::layers::LayerManager; 1.19 +using mozilla::layers::ImageContainer; 1.20 + 1.21 +namespace mozilla { 1.22 +namespace image { 1.23 + 1.24 +// Inherited methods from Image. 1.25 + 1.26 +nsresult 1.27 +ImageWrapper::Init(const char* aMimeType, uint32_t aFlags) 1.28 +{ 1.29 + return mInnerImage->Init(aMimeType, aFlags); 1.30 +} 1.31 + 1.32 +already_AddRefed<imgStatusTracker> 1.33 +ImageWrapper::GetStatusTracker() 1.34 +{ 1.35 + return mInnerImage->GetStatusTracker(); 1.36 +} 1.37 + 1.38 +nsIntRect 1.39 +ImageWrapper::FrameRect(uint32_t aWhichFrame) 1.40 +{ 1.41 + return mInnerImage->FrameRect(aWhichFrame); 1.42 +} 1.43 + 1.44 +uint32_t 1.45 +ImageWrapper::SizeOfData() 1.46 +{ 1.47 + return mInnerImage->SizeOfData(); 1.48 +} 1.49 + 1.50 +size_t 1.51 +ImageWrapper::HeapSizeOfSourceWithComputedFallback(mozilla::MallocSizeOf aMallocSizeOf) const 1.52 +{ 1.53 + return mInnerImage->HeapSizeOfSourceWithComputedFallback(aMallocSizeOf); 1.54 +} 1.55 + 1.56 +size_t 1.57 +ImageWrapper::HeapSizeOfDecodedWithComputedFallback(mozilla::MallocSizeOf aMallocSizeOf) const 1.58 +{ 1.59 + return mInnerImage->HeapSizeOfDecodedWithComputedFallback(aMallocSizeOf); 1.60 +} 1.61 + 1.62 +size_t 1.63 +ImageWrapper::NonHeapSizeOfDecoded() const 1.64 +{ 1.65 + return mInnerImage->NonHeapSizeOfDecoded(); 1.66 +} 1.67 + 1.68 +size_t 1.69 +ImageWrapper::OutOfProcessSizeOfDecoded() const 1.70 +{ 1.71 + return mInnerImage->OutOfProcessSizeOfDecoded(); 1.72 +} 1.73 + 1.74 +void 1.75 +ImageWrapper::IncrementAnimationConsumers() 1.76 +{ 1.77 + MOZ_ASSERT(NS_IsMainThread(), "Main thread only to encourage serialization " 1.78 + "with DecrementAnimationConsumers"); 1.79 + mInnerImage->IncrementAnimationConsumers(); 1.80 +} 1.81 + 1.82 +void 1.83 +ImageWrapper::DecrementAnimationConsumers() 1.84 +{ 1.85 + MOZ_ASSERT(NS_IsMainThread(), "Main thread only to encourage serialization " 1.86 + "with IncrementAnimationConsumers"); 1.87 + mInnerImage->DecrementAnimationConsumers(); 1.88 +} 1.89 + 1.90 +#ifdef DEBUG 1.91 +uint32_t 1.92 +ImageWrapper::GetAnimationConsumers() 1.93 +{ 1.94 + return mInnerImage->GetAnimationConsumers(); 1.95 +} 1.96 +#endif 1.97 + 1.98 +nsresult 1.99 +ImageWrapper::OnImageDataAvailable(nsIRequest* aRequest, 1.100 + nsISupports* aContext, 1.101 + nsIInputStream* aInStr, 1.102 + uint64_t aSourceOffset, 1.103 + uint32_t aCount) 1.104 +{ 1.105 + return mInnerImage->OnImageDataAvailable(aRequest, aContext, aInStr, 1.106 + aSourceOffset, aCount); 1.107 +} 1.108 + 1.109 +nsresult 1.110 +ImageWrapper::OnImageDataComplete(nsIRequest* aRequest, 1.111 + nsISupports* aContext, 1.112 + nsresult aStatus, 1.113 + bool aLastPart) 1.114 +{ 1.115 + return mInnerImage->OnImageDataComplete(aRequest, aContext, aStatus, aLastPart); 1.116 +} 1.117 + 1.118 +nsresult 1.119 +ImageWrapper::OnNewSourceData() 1.120 +{ 1.121 + return mInnerImage->OnNewSourceData(); 1.122 +} 1.123 + 1.124 +void 1.125 +ImageWrapper::SetInnerWindowID(uint64_t aInnerWindowId) 1.126 +{ 1.127 + mInnerImage->SetInnerWindowID(aInnerWindowId); 1.128 +} 1.129 + 1.130 +uint64_t 1.131 +ImageWrapper::InnerWindowID() const 1.132 +{ 1.133 + return mInnerImage->InnerWindowID(); 1.134 +} 1.135 + 1.136 +bool 1.137 +ImageWrapper::HasError() 1.138 +{ 1.139 + return mInnerImage->HasError(); 1.140 +} 1.141 + 1.142 +void 1.143 +ImageWrapper::SetHasError() 1.144 +{ 1.145 + mInnerImage->SetHasError(); 1.146 +} 1.147 + 1.148 +ImageURL* 1.149 +ImageWrapper::GetURI() 1.150 +{ 1.151 + return mInnerImage->GetURI(); 1.152 +} 1.153 + 1.154 +// Methods inherited from XPCOM interfaces. 1.155 + 1.156 +NS_IMPL_ISUPPORTS(ImageWrapper, imgIContainer) 1.157 + 1.158 +NS_IMETHODIMP 1.159 +ImageWrapper::GetWidth(int32_t* aWidth) 1.160 +{ 1.161 + return mInnerImage->GetWidth(aWidth); 1.162 +} 1.163 + 1.164 +NS_IMETHODIMP 1.165 +ImageWrapper::GetHeight(int32_t* aHeight) 1.166 +{ 1.167 + return mInnerImage->GetHeight(aHeight); 1.168 +} 1.169 + 1.170 +NS_IMETHODIMP 1.171 +ImageWrapper::GetIntrinsicSize(nsSize* aSize) 1.172 +{ 1.173 + return mInnerImage->GetIntrinsicSize(aSize); 1.174 +} 1.175 + 1.176 +NS_IMETHODIMP 1.177 +ImageWrapper::GetIntrinsicRatio(nsSize* aSize) 1.178 +{ 1.179 + return mInnerImage->GetIntrinsicRatio(aSize); 1.180 +} 1.181 + 1.182 +NS_IMETHODIMP_(Orientation) 1.183 +ImageWrapper::GetOrientation() 1.184 +{ 1.185 + return mInnerImage->GetOrientation(); 1.186 +} 1.187 + 1.188 +NS_IMETHODIMP 1.189 +ImageWrapper::GetType(uint16_t* aType) 1.190 +{ 1.191 + return mInnerImage->GetType(aType); 1.192 +} 1.193 + 1.194 +NS_IMETHODIMP_(uint16_t) 1.195 +ImageWrapper::GetType() 1.196 +{ 1.197 + return mInnerImage->GetType(); 1.198 +} 1.199 + 1.200 +NS_IMETHODIMP 1.201 +ImageWrapper::GetAnimated(bool* aAnimated) 1.202 +{ 1.203 + return mInnerImage->GetAnimated(aAnimated); 1.204 +} 1.205 + 1.206 +NS_IMETHODIMP_(TemporaryRef<SourceSurface>) 1.207 +ImageWrapper::GetFrame(uint32_t aWhichFrame, 1.208 + uint32_t aFlags) 1.209 +{ 1.210 + return mInnerImage->GetFrame(aWhichFrame, aFlags); 1.211 +} 1.212 + 1.213 +NS_IMETHODIMP_(bool) 1.214 +ImageWrapper::FrameIsOpaque(uint32_t aWhichFrame) 1.215 +{ 1.216 + return mInnerImage->FrameIsOpaque(aWhichFrame); 1.217 +} 1.218 + 1.219 +NS_IMETHODIMP 1.220 +ImageWrapper::GetImageContainer(LayerManager* aManager, ImageContainer** _retval) 1.221 +{ 1.222 + return mInnerImage->GetImageContainer(aManager, _retval); 1.223 +} 1.224 + 1.225 +NS_IMETHODIMP 1.226 +ImageWrapper::Draw(gfxContext* aContext, 1.227 + GraphicsFilter aFilter, 1.228 + const gfxMatrix& aUserSpaceToImageSpace, 1.229 + const gfxRect& aFill, 1.230 + const nsIntRect& aSubimage, 1.231 + const nsIntSize& aViewportSize, 1.232 + const SVGImageContext* aSVGContext, 1.233 + uint32_t aWhichFrame, 1.234 + uint32_t aFlags) 1.235 +{ 1.236 + return mInnerImage->Draw(aContext, aFilter, aUserSpaceToImageSpace, aFill, 1.237 + aSubimage, aViewportSize, aSVGContext, aWhichFrame, 1.238 + aFlags); 1.239 +} 1.240 + 1.241 +NS_IMETHODIMP 1.242 +ImageWrapper::RequestDecode() 1.243 +{ 1.244 + return mInnerImage->RequestDecode(); 1.245 +} 1.246 + 1.247 +NS_IMETHODIMP 1.248 +ImageWrapper::StartDecoding() 1.249 +{ 1.250 + return mInnerImage->StartDecoding(); 1.251 +} 1.252 + 1.253 +bool 1.254 +ImageWrapper::IsDecoded() 1.255 +{ 1.256 + return mInnerImage->IsDecoded(); 1.257 +} 1.258 + 1.259 +NS_IMETHODIMP 1.260 +ImageWrapper::LockImage() 1.261 +{ 1.262 + MOZ_ASSERT(NS_IsMainThread(), 1.263 + "Main thread to encourage serialization with UnlockImage"); 1.264 + return mInnerImage->LockImage(); 1.265 +} 1.266 + 1.267 +NS_IMETHODIMP 1.268 +ImageWrapper::UnlockImage() 1.269 +{ 1.270 + MOZ_ASSERT(NS_IsMainThread(), 1.271 + "Main thread to encourage serialization with LockImage"); 1.272 + return mInnerImage->UnlockImage(); 1.273 +} 1.274 + 1.275 +NS_IMETHODIMP 1.276 +ImageWrapper::RequestDiscard() 1.277 +{ 1.278 + return mInnerImage->RequestDiscard(); 1.279 +} 1.280 + 1.281 +NS_IMETHODIMP_(void) 1.282 +ImageWrapper::RequestRefresh(const mozilla::TimeStamp& aTime) 1.283 +{ 1.284 + return mInnerImage->RequestRefresh(aTime); 1.285 +} 1.286 + 1.287 +NS_IMETHODIMP 1.288 +ImageWrapper::GetAnimationMode(uint16_t* aAnimationMode) 1.289 +{ 1.290 + return mInnerImage->GetAnimationMode(aAnimationMode); 1.291 +} 1.292 + 1.293 +NS_IMETHODIMP 1.294 +ImageWrapper::SetAnimationMode(uint16_t aAnimationMode) 1.295 +{ 1.296 + return mInnerImage->SetAnimationMode(aAnimationMode); 1.297 +} 1.298 + 1.299 +NS_IMETHODIMP 1.300 +ImageWrapper::ResetAnimation() 1.301 +{ 1.302 + return mInnerImage->ResetAnimation(); 1.303 +} 1.304 + 1.305 +NS_IMETHODIMP_(float) 1.306 +ImageWrapper::GetFrameIndex(uint32_t aWhichFrame) 1.307 +{ 1.308 + return mInnerImage->GetFrameIndex(aWhichFrame); 1.309 +} 1.310 + 1.311 +NS_IMETHODIMP_(int32_t) 1.312 +ImageWrapper::GetFirstFrameDelay() 1.313 +{ 1.314 + return mInnerImage->GetFirstFrameDelay(); 1.315 +} 1.316 + 1.317 +NS_IMETHODIMP_(void) 1.318 +ImageWrapper::SetAnimationStartTime(const mozilla::TimeStamp& aTime) 1.319 +{ 1.320 + mInnerImage->SetAnimationStartTime(aTime); 1.321 +} 1.322 + 1.323 +} // namespace image 1.324 +} // namespace mozilla