Bug 848491 - Update Skia to r8495
authorGeorge Wright <gw@gwright.org.uk>
Tue, 02 Apr 2013 16:49:07 -0400
changeset 150491 b3e5868f25401ac2529fec6f3aaeaec6dc9e40b3
parent 150490 5f652fba751d17bddadcf20a92d4f21bc442295a
child 150492 ab576a03025ea6f78a473954ba89b97e97159803
push id382
push userakeybl@mozilla.com
push dateMon, 21 Oct 2013 21:47:13 +0000
treeherdermozilla-release@5f1868ee45cb [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs848491
milestone25.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 848491 - Update Skia to r8495
gfx/skia/Makefile.in
gfx/skia/README_MOZILLA
gfx/skia/include/animator/SkAnimator.h
gfx/skia/include/animator/SkAnimatorView.h
gfx/skia/include/config/SkUserConfig.h
gfx/skia/include/core/Sk64.h
gfx/skia/include/core/SkAdvancedTypefaceMetrics.h
gfx/skia/include/core/SkAnnotation.h
gfx/skia/include/core/SkBitmap.h
gfx/skia/include/core/SkBounder.h
gfx/skia/include/core/SkCanvas.h
gfx/skia/include/core/SkChecksum.h
gfx/skia/include/core/SkClipStack.h
gfx/skia/include/core/SkColor.h
gfx/skia/include/core/SkColorFilter.h
gfx/skia/include/core/SkColorPriv.h
gfx/skia/include/core/SkColorShader.h
gfx/skia/include/core/SkComposeShader.h
gfx/skia/include/core/SkData.h
gfx/skia/include/core/SkDevice.h
gfx/skia/include/core/SkDeviceProperties.h
gfx/skia/include/core/SkDraw.h
gfx/skia/include/core/SkDrawFilter.h
gfx/skia/include/core/SkDrawLooper.h
gfx/skia/include/core/SkEmptyShader.h
gfx/skia/include/core/SkEndian.h
gfx/skia/include/core/SkFixed.h
gfx/skia/include/core/SkFlattenable.h
gfx/skia/include/core/SkFlattenableBuffers.h
gfx/skia/include/core/SkFloatBits.h
gfx/skia/include/core/SkFloatingPoint.h
gfx/skia/include/core/SkFontHost.h
gfx/skia/include/core/SkFontLCDConfig.h
gfx/skia/include/core/SkGraphics.h
gfx/skia/include/core/SkImage.h
gfx/skia/include/core/SkImageFilter.h
gfx/skia/include/core/SkImageTypes.h
gfx/skia/include/core/SkInstCnt.h
gfx/skia/include/core/SkLineClipper.h
gfx/skia/include/core/SkMMapStream.h
gfx/skia/include/core/SkMask.h
gfx/skia/include/core/SkMaskFilter.h
gfx/skia/include/core/SkMath.h
gfx/skia/include/core/SkMatrix.h
gfx/skia/include/core/SkMetaData.h
gfx/skia/include/core/SkOSFile.h
gfx/skia/include/core/SkPaint.h
gfx/skia/include/core/SkPath.h
gfx/skia/include/core/SkPathEffect.h
gfx/skia/include/core/SkPicture.h
gfx/skia/include/core/SkPixelRef.h
gfx/skia/include/core/SkPoint.h
gfx/skia/include/core/SkPostConfig.h
gfx/skia/include/core/SkPreConfig.h
gfx/skia/include/core/SkRRect.h
gfx/skia/include/core/SkRandom.h
gfx/skia/include/core/SkRasterizer.h
gfx/skia/include/core/SkReader32.h
gfx/skia/include/core/SkRect.h
gfx/skia/include/core/SkRefCnt.h
gfx/skia/include/core/SkScalar.h
gfx/skia/include/core/SkScalarCompare.h
gfx/skia/include/core/SkShader.h
gfx/skia/include/core/SkSize.h
gfx/skia/include/core/SkStream.h
gfx/skia/include/core/SkString.h
gfx/skia/include/core/SkStringUtils.h
gfx/skia/include/core/SkStrokeRec.h
gfx/skia/include/core/SkSurface.h
gfx/skia/include/core/SkTArray.h
gfx/skia/include/core/SkTDArray.h
gfx/skia/include/core/SkTDLinkedList.h
gfx/skia/include/core/SkTDStack.h
gfx/skia/include/core/SkTDict.h
gfx/skia/include/core/SkTInternalLList.h
gfx/skia/include/core/SkTLazy.h
gfx/skia/include/core/SkTSearch.h
gfx/skia/include/core/SkTemplates.h
gfx/skia/include/core/SkThread_platform.h
gfx/skia/include/core/SkTileGridPicture.h
gfx/skia/include/core/SkTime.h
gfx/skia/include/core/SkTrace.h
gfx/skia/include/core/SkTypeface.h
gfx/skia/include/core/SkTypes.h
gfx/skia/include/core/SkUnitMapper.h
gfx/skia/include/core/SkUtils.h
gfx/skia/include/core/SkWriter32.h
gfx/skia/include/core/SkXfermode.h
gfx/skia/include/effects/Sk1DPathEffect.h
gfx/skia/include/effects/Sk2DPathEffect.h
gfx/skia/include/effects/SkArithmeticMode.h
gfx/skia/include/effects/SkAvoidXfermode.h
gfx/skia/include/effects/SkBicubicImageFilter.h
gfx/skia/include/effects/SkBitmapSource.h
gfx/skia/include/effects/SkBlendImageFilter.h
gfx/skia/include/effects/SkBlurDrawLooper.h
gfx/skia/include/effects/SkBlurImageFilter.h
gfx/skia/include/effects/SkBlurMaskFilter.h
gfx/skia/include/effects/SkColorFilterImageFilter.h
gfx/skia/include/effects/SkColorMatrix.h
gfx/skia/include/effects/SkColorMatrixFilter.h
gfx/skia/include/effects/SkCornerPathEffect.h
gfx/skia/include/effects/SkDashPathEffect.h
gfx/skia/include/effects/SkDiscretePathEffect.h
gfx/skia/include/effects/SkDisplacementMapEffect.h
gfx/skia/include/effects/SkDrawExtraPathEffect.h
gfx/skia/include/effects/SkEmbossMaskFilter.h
gfx/skia/include/effects/SkGradientShader.h
gfx/skia/include/effects/SkImageFilterUtils.h
gfx/skia/include/effects/SkKernel33MaskFilter.h
gfx/skia/include/effects/SkLayerDrawLooper.h
gfx/skia/include/effects/SkLayerRasterizer.h
gfx/skia/include/effects/SkLightingImageFilter.h
gfx/skia/include/effects/SkMagnifierImageFilter.h
gfx/skia/include/effects/SkMatrixConvolutionImageFilter.h
gfx/skia/include/effects/SkMergeImageFilter.h
gfx/skia/include/effects/SkMorphologyImageFilter.h
gfx/skia/include/effects/SkOffsetImageFilter.h
gfx/skia/include/effects/SkPaintFlagsDrawFilter.h
gfx/skia/include/effects/SkPixelXorXfermode.h
gfx/skia/include/effects/SkPorterDuff.h
gfx/skia/include/effects/SkRectShaderImageFilter.h
gfx/skia/include/effects/SkSingleInputImageFilter.h
gfx/skia/include/effects/SkStippleMaskFilter.h
gfx/skia/include/effects/SkTableMaskFilter.h
gfx/skia/include/effects/SkTestImageFilters.h
gfx/skia/include/effects/SkTransparentShader.h
gfx/skia/include/gpu/GrAARectRenderer.h
gfx/skia/include/gpu/GrBackendEffectFactory.h
gfx/skia/include/gpu/GrCacheID.h
gfx/skia/include/gpu/GrClipData.h
gfx/skia/include/gpu/GrColor.h
gfx/skia/include/gpu/GrConfig.h
gfx/skia/include/gpu/GrContext.h
gfx/skia/include/gpu/GrContextFactory.h
gfx/skia/include/gpu/GrCustomStage.h
gfx/skia/include/gpu/GrCustomStageUnitTest.h
gfx/skia/include/gpu/GrDrawEffect.h
gfx/skia/include/gpu/GrEffect.h
gfx/skia/include/gpu/GrEffectStage.h
gfx/skia/include/gpu/GrEffectUnitTest.h
gfx/skia/include/gpu/GrFontScaler.h
gfx/skia/include/gpu/GrGlyph.h
gfx/skia/include/gpu/GrInstanceCounter.h
gfx/skia/include/gpu/GrKey.h
gfx/skia/include/gpu/GrMatrix.h
gfx/skia/include/gpu/GrNoncopyable.h
gfx/skia/include/gpu/GrOvalRenderer.h
gfx/skia/include/gpu/GrPaint.h
gfx/skia/include/gpu/GrPathRendererChain.h
gfx/skia/include/gpu/GrPoint.h
gfx/skia/include/gpu/GrProgramStageFactory.h
gfx/skia/include/gpu/GrRect.h
gfx/skia/include/gpu/GrRefCnt.h
gfx/skia/include/gpu/GrRenderTarget.h
gfx/skia/include/gpu/GrResource.h
gfx/skia/include/gpu/GrSamplerState.h
gfx/skia/include/gpu/GrScalar.h
gfx/skia/include/gpu/GrSurface.h
gfx/skia/include/gpu/GrTBackendEffectFactory.h
gfx/skia/include/gpu/GrTextContext.h
gfx/skia/include/gpu/GrTexture.h
gfx/skia/include/gpu/GrTextureAccess.h
gfx/skia/include/gpu/GrTypes.h
gfx/skia/include/gpu/GrTypesPriv.h
gfx/skia/include/gpu/GrUserConfig.h
gfx/skia/include/gpu/SkGpuCanvas.h
gfx/skia/include/gpu/SkGpuDevice.h
gfx/skia/include/gpu/SkGr.h
gfx/skia/include/gpu/SkGrPixelRef.h
gfx/skia/include/gpu/SkGrTexturePixelRef.h
gfx/skia/include/gpu/gl/GrGLConfig.h
gfx/skia/include/gpu/gl/GrGLConfig_chrome.h
gfx/skia/include/gpu/gl/GrGLExtensions.h
gfx/skia/include/gpu/gl/GrGLFunctions.h
gfx/skia/include/gpu/gl/GrGLInterface.h
gfx/skia/include/gpu/gl/SkANGLEGLContext.h
gfx/skia/include/gpu/gl/SkDebugGLContext.h
gfx/skia/include/gpu/gl/SkGLContext.h
gfx/skia/include/gpu/gl/SkGLContextHelper.h
gfx/skia/include/gpu/gl/SkMesaGLContext.h
gfx/skia/include/gpu/gl/SkNativeGLContext.h
gfx/skia/include/gpu/gl/SkNullGLContext.h
gfx/skia/include/images/SkBitmapRegionDecoder.h
gfx/skia/include/images/SkFlipPixelRef.h
gfx/skia/include/images/SkImageDecoder.h
gfx/skia/include/images/SkImageEncoder.h
gfx/skia/include/images/SkImageRef.h
gfx/skia/include/images/SkImages.h
gfx/skia/include/images/SkJpegUtility.h
gfx/skia/include/images/SkPageFlipper.h
gfx/skia/include/lazy/SkBitmapFactory.h
gfx/skia/include/lazy/SkImageCache.h
gfx/skia/include/lazy/SkLruImageCache.h
gfx/skia/include/lazy/SkPurgeableImageCache.h
gfx/skia/include/pdf/SkPDFDevice.h
gfx/skia/include/pdf/SkPDFDocument.h
gfx/skia/include/pipe/SkGPipe.h
gfx/skia/include/ports/SkFontConfigInterface.h
gfx/skia/include/ports/SkFontMgr.h
gfx/skia/include/ports/SkFontStyle.h
gfx/skia/include/ports/SkStream_Win.h
gfx/skia/include/ports/SkTypeface_android.h
gfx/skia/include/ports/SkTypeface_mac.h
gfx/skia/include/ports/SkTypeface_win.h
gfx/skia/include/svg/SkSVGBase.h
gfx/skia/include/text/SkTextLayout.h
gfx/skia/include/utils/SkBoundaryPatch.h
gfx/skia/include/utils/SkCamera.h
gfx/skia/include/utils/SkCondVar.h
gfx/skia/include/utils/SkCountdown.h
gfx/skia/include/utils/SkCubicInterval.h
gfx/skia/include/utils/SkDebugUtils.h
gfx/skia/include/utils/SkDeferredCanvas.h
gfx/skia/include/utils/SkDumpCanvas.h
gfx/skia/include/utils/SkInterpolator.h
gfx/skia/include/utils/SkMatrix44.h
gfx/skia/include/utils/SkNWayCanvas.h
gfx/skia/include/utils/SkParse.h
gfx/skia/include/utils/SkParsePaint.h
gfx/skia/include/utils/SkParsePath.h
gfx/skia/include/utils/SkPictureUtils.h
gfx/skia/include/utils/SkProxyCanvas.h
gfx/skia/include/utils/SkRTConf.h
gfx/skia/include/utils/SkRandom.h
gfx/skia/include/utils/SkRunnable.h
gfx/skia/include/utils/SkThreadPool.h
gfx/skia/include/utils/SkUnitMappers.h
gfx/skia/include/utils/SkWGL.h
gfx/skia/include/utils/mac/SkCGUtils.h
gfx/skia/include/views/SkBGViewArtist.h
gfx/skia/include/views/SkEvent.h
gfx/skia/include/views/SkEventSink.h
gfx/skia/include/views/SkKey.h
gfx/skia/include/views/SkOSMenu.h
gfx/skia/include/views/SkOSWindow_Android.h
gfx/skia/include/views/SkOSWindow_Mac.h
gfx/skia/include/views/SkOSWindow_NaCl.h
gfx/skia/include/views/SkOSWindow_SDL.h
gfx/skia/include/views/SkOSWindow_Unix.h
gfx/skia/include/views/SkOSWindow_Win.h
gfx/skia/include/views/SkOSWindow_iOS.h
gfx/skia/include/views/SkOSWindow_wxwidgets.h
gfx/skia/include/views/SkStackViewLayout.h
gfx/skia/include/views/SkTextBox.h
gfx/skia/include/views/SkTouchGesture.h
gfx/skia/include/views/SkView.h
gfx/skia/include/views/SkViewInflate.h
gfx/skia/include/views/SkWidget.h
gfx/skia/include/views/SkWindow.h
gfx/skia/include/views/animated/SkBorderView.h
gfx/skia/include/views/animated/SkScrollBarView.h
gfx/skia/include/xml/SkBML_WXMLParser.h
gfx/skia/include/xml/SkBML_XMLParser.h
gfx/skia/include/xml/SkDOM.h
gfx/skia/include/xml/SkJS.h
gfx/skia/include/xml/SkXMLWriter.h
gfx/skia/moz.build
gfx/skia/src/animator/SkAnimate.h
gfx/skia/src/animator/SkAnimateActive.cpp
gfx/skia/src/animator/SkAnimateBase.cpp
gfx/skia/src/animator/SkAnimateField.cpp
gfx/skia/src/animator/SkAnimateMaker.cpp
gfx/skia/src/animator/SkAnimateMaker.h
gfx/skia/src/animator/SkAnimateSet.h
gfx/skia/src/animator/SkAnimator.cpp
gfx/skia/src/animator/SkAnimatorScript.cpp
gfx/skia/src/animator/SkAnimatorScript.h
gfx/skia/src/animator/SkAnimatorScript2.cpp
gfx/skia/src/animator/SkBoundable.cpp
gfx/skia/src/animator/SkBoundable.h
gfx/skia/src/animator/SkBuildCondensedInfo.cpp
gfx/skia/src/animator/SkCondensedDebug.cpp
gfx/skia/src/animator/SkCondensedRelease.cpp
gfx/skia/src/animator/SkDisplayAdd.cpp
gfx/skia/src/animator/SkDisplayAdd.h
gfx/skia/src/animator/SkDisplayApply.cpp
gfx/skia/src/animator/SkDisplayApply.h
gfx/skia/src/animator/SkDisplayBounds.cpp
gfx/skia/src/animator/SkDisplayBounds.h
gfx/skia/src/animator/SkDisplayEvent.cpp
gfx/skia/src/animator/SkDisplayEvent.h
gfx/skia/src/animator/SkDisplayEvents.h
gfx/skia/src/animator/SkDisplayInclude.h
gfx/skia/src/animator/SkDisplayInput.h
gfx/skia/src/animator/SkDisplayList.cpp
gfx/skia/src/animator/SkDisplayList.h
gfx/skia/src/animator/SkDisplayMath.h
gfx/skia/src/animator/SkDisplayMovie.cpp
gfx/skia/src/animator/SkDisplayMovie.h
gfx/skia/src/animator/SkDisplayPost.cpp
gfx/skia/src/animator/SkDisplayPost.h
gfx/skia/src/animator/SkDisplayRandom.cpp
gfx/skia/src/animator/SkDisplayRandom.h
gfx/skia/src/animator/SkDisplayScreenplay.cpp
gfx/skia/src/animator/SkDisplayTypes.cpp
gfx/skia/src/animator/SkDisplayTypes.h
gfx/skia/src/animator/SkDisplayXMLParser.cpp
gfx/skia/src/animator/SkDisplayXMLParser.h
gfx/skia/src/animator/SkDisplayable.cpp
gfx/skia/src/animator/SkDisplayable.h
gfx/skia/src/animator/SkDraw3D.cpp
gfx/skia/src/animator/SkDraw3D.h
gfx/skia/src/animator/SkDrawBitmap.cpp
gfx/skia/src/animator/SkDrawBlur.cpp
gfx/skia/src/animator/SkDrawBlur.h
gfx/skia/src/animator/SkDrawClip.cpp
gfx/skia/src/animator/SkDrawColor.cpp
gfx/skia/src/animator/SkDrawDash.cpp
gfx/skia/src/animator/SkDrawDash.h
gfx/skia/src/animator/SkDrawDiscrete.cpp
gfx/skia/src/animator/SkDrawEmboss.cpp
gfx/skia/src/animator/SkDrawEmboss.h
gfx/skia/src/animator/SkDrawExtraPathEffect.cpp
gfx/skia/src/animator/SkDrawFull.cpp
gfx/skia/src/animator/SkDrawGradient.cpp
gfx/skia/src/animator/SkDrawGradient.h
gfx/skia/src/animator/SkDrawGroup.cpp
gfx/skia/src/animator/SkDrawGroup.h
gfx/skia/src/animator/SkDrawLine.h
gfx/skia/src/animator/SkDrawMatrix.cpp
gfx/skia/src/animator/SkDrawMatrix.h
gfx/skia/src/animator/SkDrawOval.cpp
gfx/skia/src/animator/SkDrawOval.h
gfx/skia/src/animator/SkDrawPaint.cpp
gfx/skia/src/animator/SkDrawPaint.h
gfx/skia/src/animator/SkDrawPath.cpp
gfx/skia/src/animator/SkDrawPath.h
gfx/skia/src/animator/SkDrawPoint.cpp
gfx/skia/src/animator/SkDrawRectangle.cpp
gfx/skia/src/animator/SkDrawRectangle.h
gfx/skia/src/animator/SkDrawSaveLayer.cpp
gfx/skia/src/animator/SkDrawText.cpp
gfx/skia/src/animator/SkDrawTextBox.cpp
gfx/skia/src/animator/SkDrawTextBox.h
gfx/skia/src/animator/SkDrawTo.cpp
gfx/skia/src/animator/SkDrawTransparentShader.cpp
gfx/skia/src/animator/SkDrawTransparentShader.h
gfx/skia/src/animator/SkDrawable.cpp
gfx/skia/src/animator/SkDump.cpp
gfx/skia/src/animator/SkDump.h
gfx/skia/src/animator/SkGetCondensedInfo.cpp
gfx/skia/src/animator/SkHitClear.cpp
gfx/skia/src/animator/SkHitTest.cpp
gfx/skia/src/animator/SkIntArray.h
gfx/skia/src/animator/SkMatrixParts.cpp
gfx/skia/src/animator/SkMemberInfo.cpp
gfx/skia/src/animator/SkMemberInfo.h
gfx/skia/src/animator/SkOperandInterpolator.h
gfx/skia/src/animator/SkOperandIterpolator.cpp
gfx/skia/src/animator/SkPaintParts.cpp
gfx/skia/src/animator/SkParseSVGPath.cpp
gfx/skia/src/animator/SkPathParts.cpp
gfx/skia/src/animator/SkPathParts.h
gfx/skia/src/animator/SkPostParts.cpp
gfx/skia/src/animator/SkScript.cpp
gfx/skia/src/animator/SkScript2.h
gfx/skia/src/animator/SkScriptRuntime.cpp
gfx/skia/src/animator/SkScriptTokenizer.cpp
gfx/skia/src/animator/SkSnapshot.cpp
gfx/skia/src/animator/SkSnapshot.h
gfx/skia/src/animator/SkTDArray_Experimental.h
gfx/skia/src/animator/SkTextToPath.cpp
gfx/skia/src/animator/SkTextToPath.h
gfx/skia/src/animator/SkTime.cpp
gfx/skia/src/animator/SkXMLAnimatorWriter.cpp
gfx/skia/src/animator/SkXMLAnimatorWriter.h
gfx/skia/src/core/ARGB32_Clamp_Bilinear_BitmapShader.h
gfx/skia/src/core/SkAAClip.cpp
gfx/skia/src/core/SkAdvancedTypefaceMetrics.cpp
gfx/skia/src/core/SkAlphaRuns.cpp
gfx/skia/src/core/SkAnnotation.cpp
gfx/skia/src/core/SkAntiRun.h
gfx/skia/src/core/SkAutoKern.h
gfx/skia/src/core/SkBBoxHierarchy.cpp
gfx/skia/src/core/SkBBoxHierarchy.h
gfx/skia/src/core/SkBBoxHierarchyRecord.cpp
gfx/skia/src/core/SkBBoxHierarchyRecord.h
gfx/skia/src/core/SkBBoxRecord.cpp
gfx/skia/src/core/SkBBoxRecord.h
gfx/skia/src/core/SkBitmap.cpp
gfx/skia/src/core/SkBitmapHeap.cpp
gfx/skia/src/core/SkBitmapHeap.h
gfx/skia/src/core/SkBitmapProcShader.cpp
gfx/skia/src/core/SkBitmapProcShader.h
gfx/skia/src/core/SkBitmapProcState.cpp
gfx/skia/src/core/SkBitmapProcState.h
gfx/skia/src/core/SkBitmapProcState_filter.h
gfx/skia/src/core/SkBitmapProcState_matrixProcs.cpp
gfx/skia/src/core/SkBitmapProcState_procs.h
gfx/skia/src/core/SkBitmapProcState_sample.h
gfx/skia/src/core/SkBitmapProcState_shaderproc.h
gfx/skia/src/core/SkBitmapSampler.cpp
gfx/skia/src/core/SkBitmap_scroll.cpp
gfx/skia/src/core/SkBlitBWMaskTemplate.h
gfx/skia/src/core/SkBlitMask_D32.cpp
gfx/skia/src/core/SkBlitRow_D16.cpp
gfx/skia/src/core/SkBlitRow_D32.cpp
gfx/skia/src/core/SkBlitRow_D4444.cpp
gfx/skia/src/core/SkBlitter.cpp
gfx/skia/src/core/SkBlitter.h
gfx/skia/src/core/SkBlitter_4444.cpp
gfx/skia/src/core/SkBlitter_A1.cpp
gfx/skia/src/core/SkBlitter_A8.cpp
gfx/skia/src/core/SkBlitter_ARGB32.cpp
gfx/skia/src/core/SkBlitter_RGB16.cpp
gfx/skia/src/core/SkBlitter_Sprite.cpp
gfx/skia/src/core/SkBuffer.h
gfx/skia/src/core/SkCanvas.cpp
gfx/skia/src/core/SkChunkAlloc.cpp
gfx/skia/src/core/SkClipStack.cpp
gfx/skia/src/core/SkColor.cpp
gfx/skia/src/core/SkColorFilter.cpp
gfx/skia/src/core/SkColorTable.cpp
gfx/skia/src/core/SkComposeShader.cpp
gfx/skia/src/core/SkConcaveToTriangles.cpp
gfx/skia/src/core/SkConcaveToTriangles.h
gfx/skia/src/core/SkConfig8888.h
gfx/skia/src/core/SkCordic.h
gfx/skia/src/core/SkCoreBlitters.h
gfx/skia/src/core/SkCubicClipper.cpp
gfx/skia/src/core/SkData.cpp
gfx/skia/src/core/SkDebug.cpp
gfx/skia/src/core/SkDescriptor.h
gfx/skia/src/core/SkDevice.cpp
gfx/skia/src/core/SkDeviceImageFilterProxy.h
gfx/skia/src/core/SkDeviceProfile.cpp
gfx/skia/src/core/SkDeviceProfile.h
gfx/skia/src/core/SkDither.cpp
gfx/skia/src/core/SkDraw.cpp
gfx/skia/src/core/SkDrawProcs.h
gfx/skia/src/core/SkEdge.cpp
gfx/skia/src/core/SkEdge.h
gfx/skia/src/core/SkEdgeBuilder.cpp
gfx/skia/src/core/SkEdgeClipper.cpp
gfx/skia/src/core/SkFDStream.cpp
gfx/skia/src/core/SkFDot6.h
gfx/skia/src/core/SkFilterProc.h
gfx/skia/src/core/SkFilterShader.h
gfx/skia/src/core/SkFlate.cpp
gfx/skia/src/core/SkFlattenable.cpp
gfx/skia/src/core/SkFloat.cpp
gfx/skia/src/core/SkFloatBits.cpp
gfx/skia/src/core/SkFontDescriptor.cpp
gfx/skia/src/core/SkFontDescriptor.h
gfx/skia/src/core/SkFontHost.cpp
gfx/skia/src/core/SkFontStream.cpp
gfx/skia/src/core/SkFontStream.h
gfx/skia/src/core/SkGeometry.cpp
gfx/skia/src/core/SkGlyphCache.cpp
gfx/skia/src/core/SkGlyphCache.h
gfx/skia/src/core/SkGraphics.cpp
gfx/skia/src/core/SkImageFilter.cpp
gfx/skia/src/core/SkInstCnt.cpp
gfx/skia/src/core/SkLineClipper.cpp
gfx/skia/src/core/SkMMapStream.cpp
gfx/skia/src/core/SkMallocPixelRef.cpp
gfx/skia/src/core/SkMask.cpp
gfx/skia/src/core/SkMaskFilter.cpp
gfx/skia/src/core/SkMaskGamma.cpp
gfx/skia/src/core/SkMaskGamma.h
gfx/skia/src/core/SkMath.cpp
gfx/skia/src/core/SkMathPriv.h
gfx/skia/src/core/SkMatrix.cpp
gfx/skia/src/core/SkMatrixUtils.h
gfx/skia/src/core/SkMemory_stdlib.cpp
gfx/skia/src/core/SkMetaData.cpp
gfx/skia/src/core/SkOrderedReadBuffer.cpp
gfx/skia/src/core/SkOrderedReadBuffer.h
gfx/skia/src/core/SkOrderedWriteBuffer.cpp
gfx/skia/src/core/SkOrderedWriteBuffer.h
gfx/skia/src/core/SkPaint.cpp
gfx/skia/src/core/SkPaintPriv.cpp
gfx/skia/src/core/SkPaintPriv.h
gfx/skia/src/core/SkPath.cpp
gfx/skia/src/core/SkPathEffect.cpp
gfx/skia/src/core/SkPathHeap.cpp
gfx/skia/src/core/SkPathHeap.h
gfx/skia/src/core/SkPathMeasure.cpp
gfx/skia/src/core/SkPathRef.h
gfx/skia/src/core/SkPicture.cpp
gfx/skia/src/core/SkPictureFlat.cpp
gfx/skia/src/core/SkPictureFlat.h
gfx/skia/src/core/SkPicturePlayback.cpp
gfx/skia/src/core/SkPicturePlayback.h
gfx/skia/src/core/SkPictureRecord.cpp
gfx/skia/src/core/SkPictureRecord.h
gfx/skia/src/core/SkPictureStateTree.cpp
gfx/skia/src/core/SkPictureStateTree.h
gfx/skia/src/core/SkPixelRef.cpp
gfx/skia/src/core/SkPtrRecorder.cpp
gfx/skia/src/core/SkPtrRecorder.h
gfx/skia/src/core/SkQuadClipper.cpp
gfx/skia/src/core/SkRRect.cpp
gfx/skia/src/core/SkRTree.cpp
gfx/skia/src/core/SkRTree.h
gfx/skia/src/core/SkRasterClip.cpp
gfx/skia/src/core/SkRasterClip.h
gfx/skia/src/core/SkRasterizer.cpp
gfx/skia/src/core/SkRect.cpp
gfx/skia/src/core/SkRefCnt.cpp
gfx/skia/src/core/SkRefDict.cpp
gfx/skia/src/core/SkRegion.cpp
gfx/skia/src/core/SkRegionPriv.h
gfx/skia/src/core/SkRegion_path.cpp
gfx/skia/src/core/SkScalerContext.cpp
gfx/skia/src/core/SkScalerContext.h
gfx/skia/src/core/SkScan.cpp
gfx/skia/src/core/SkScanPriv.h
gfx/skia/src/core/SkScan_AntiPath.cpp
gfx/skia/src/core/SkScan_Antihair.cpp
gfx/skia/src/core/SkScan_Hairline.cpp
gfx/skia/src/core/SkScan_Path.cpp
gfx/skia/src/core/SkShader.cpp
gfx/skia/src/core/SkSpriteBlitter.h
gfx/skia/src/core/SkSpriteBlitterTemplate.h
gfx/skia/src/core/SkSpriteBlitter_ARGB32.cpp
gfx/skia/src/core/SkSpriteBlitter_RGB16.cpp
gfx/skia/src/core/SkStream.cpp
gfx/skia/src/core/SkString.cpp
gfx/skia/src/core/SkStringUtils.cpp
gfx/skia/src/core/SkStroke.cpp
gfx/skia/src/core/SkStroke.h
gfx/skia/src/core/SkStrokeRec.cpp
gfx/skia/src/core/SkStrokerPriv.cpp
gfx/skia/src/core/SkStrokerPriv.h
gfx/skia/src/core/SkTLList.h
gfx/skia/src/core/SkTLS.cpp
gfx/skia/src/core/SkTSearch.cpp
gfx/skia/src/core/SkTSort.h
gfx/skia/src/core/SkTextToPathIter.h
gfx/skia/src/core/SkTileGrid.cpp
gfx/skia/src/core/SkTileGrid.h
gfx/skia/src/core/SkTileGridPicture.cpp
gfx/skia/src/core/SkTypeface.cpp
gfx/skia/src/core/SkTypefaceCache.cpp
gfx/skia/src/core/SkTypefacePriv.h
gfx/skia/src/core/SkUtils.cpp
gfx/skia/src/core/SkUtilsArm.cpp
gfx/skia/src/core/SkUtilsArm.h
gfx/skia/src/core/SkWriter32.cpp
gfx/skia/src/core/SkXfermode.cpp
gfx/skia/src/device/xps/SkXPSDevice.cpp
gfx/skia/src/effects/Sk1DPathEffect.cpp
gfx/skia/src/effects/Sk2DPathEffect.cpp
gfx/skia/src/effects/SkArithmeticMode.cpp
gfx/skia/src/effects/SkAvoidXfermode.cpp
gfx/skia/src/effects/SkBicubicImageFilter.cpp
gfx/skia/src/effects/SkBitmapSource.cpp
gfx/skia/src/effects/SkBlendImageFilter.cpp
gfx/skia/src/effects/SkBlurDrawLooper.cpp
gfx/skia/src/effects/SkBlurImageFilter.cpp
gfx/skia/src/effects/SkBlurMask.cpp
gfx/skia/src/effects/SkBlurMask.h
gfx/skia/src/effects/SkBlurMaskFilter.cpp
gfx/skia/src/effects/SkColorFilterImageFilter.cpp
gfx/skia/src/effects/SkColorFilters.cpp
gfx/skia/src/effects/SkColorMatrix.cpp
gfx/skia/src/effects/SkColorMatrixFilter.cpp
gfx/skia/src/effects/SkCornerPathEffect.cpp
gfx/skia/src/effects/SkDashPathEffect.cpp
gfx/skia/src/effects/SkDiscretePathEffect.cpp
gfx/skia/src/effects/SkDisplacementMapEffect.cpp
gfx/skia/src/effects/SkEmbossMask.cpp
gfx/skia/src/effects/SkEmbossMask.h
gfx/skia/src/effects/SkEmbossMaskFilter.cpp
gfx/skia/src/effects/SkImageFilterUtils.cpp
gfx/skia/src/effects/SkKernel33MaskFilter.cpp
gfx/skia/src/effects/SkLayerDrawLooper.cpp
gfx/skia/src/effects/SkLayerRasterizer.cpp
gfx/skia/src/effects/SkLightingImageFilter.cpp
gfx/skia/src/effects/SkMagnifierImageFilter.cpp
gfx/skia/src/effects/SkMatrixConvolutionImageFilter.cpp
gfx/skia/src/effects/SkMergeImageFilter.cpp
gfx/skia/src/effects/SkMorphologyImageFilter.cpp
gfx/skia/src/effects/SkOffsetImageFilter.cpp
gfx/skia/src/effects/SkPaintFlagsDrawFilter.cpp
gfx/skia/src/effects/SkPixelXorXfermode.cpp
gfx/skia/src/effects/SkPorterDuff.cpp
gfx/skia/src/effects/SkRectShaderImageFilter.cpp
gfx/skia/src/effects/SkRectShape.cpp
gfx/skia/src/effects/SkSingleInputImageFilter.cpp
gfx/skia/src/effects/SkStippleMaskFilter.cpp
gfx/skia/src/effects/SkTableColorFilter.cpp
gfx/skia/src/effects/SkTableMaskFilter.cpp
gfx/skia/src/effects/SkTestImageFilters.cpp
gfx/skia/src/effects/SkTransparentShader.cpp
gfx/skia/src/effects/gradients/SkBitmapCache.cpp
gfx/skia/src/effects/gradients/SkBitmapCache.h
gfx/skia/src/effects/gradients/SkClampRange.cpp
gfx/skia/src/effects/gradients/SkClampRange.h
gfx/skia/src/effects/gradients/SkGradientShader.cpp
gfx/skia/src/effects/gradients/SkGradientShaderPriv.h
gfx/skia/src/effects/gradients/SkLinearGradient.cpp
gfx/skia/src/effects/gradients/SkLinearGradient.h
gfx/skia/src/effects/gradients/SkRadialGradient.cpp
gfx/skia/src/effects/gradients/SkRadialGradient.h
gfx/skia/src/effects/gradients/SkSweepGradient.cpp
gfx/skia/src/effects/gradients/SkSweepGradient.h
gfx/skia/src/effects/gradients/SkTwoPointConicalGradient.cpp
gfx/skia/src/effects/gradients/SkTwoPointConicalGradient.h
gfx/skia/src/effects/gradients/SkTwoPointRadialGradient.cpp
gfx/skia/src/effects/gradients/SkTwoPointRadialGradient.h
gfx/skia/src/gpu/FlingState.cpp
gfx/skia/src/gpu/GrAAConvexPathRenderer.cpp
gfx/skia/src/gpu/GrAAConvexPathRenderer.h
gfx/skia/src/gpu/GrAAHairLinePathRenderer.cpp
gfx/skia/src/gpu/GrAAHairLinePathRenderer.h
gfx/skia/src/gpu/GrAARectRenderer.cpp
gfx/skia/src/gpu/GrAddPathRenderers_default.cpp
gfx/skia/src/gpu/GrAllocPool.cpp
gfx/skia/src/gpu/GrAllocPool.h
gfx/skia/src/gpu/GrAtlas.cpp
gfx/skia/src/gpu/GrAtlas.h
gfx/skia/src/gpu/GrBinHashKey.h
gfx/skia/src/gpu/GrBufferAllocPool.cpp
gfx/skia/src/gpu/GrBufferAllocPool.h
gfx/skia/src/gpu/GrCacheID.cpp
gfx/skia/src/gpu/GrClipData.cpp
gfx/skia/src/gpu/GrClipMaskCache.cpp
gfx/skia/src/gpu/GrClipMaskCache.h
gfx/skia/src/gpu/GrClipMaskManager.cpp
gfx/skia/src/gpu/GrClipMaskManager.h
gfx/skia/src/gpu/GrContext.cpp
gfx/skia/src/gpu/GrCustomStage.cpp
gfx/skia/src/gpu/GrDefaultPathRenderer.cpp
gfx/skia/src/gpu/GrDefaultPathRenderer.h
gfx/skia/src/gpu/GrDrawState.cpp
gfx/skia/src/gpu/GrDrawState.h
gfx/skia/src/gpu/GrDrawTarget.cpp
gfx/skia/src/gpu/GrDrawTarget.h
gfx/skia/src/gpu/GrDrawTargetCaps.h
gfx/skia/src/gpu/GrEffect.cpp
gfx/skia/src/gpu/GrGeometryBuffer.h
gfx/skia/src/gpu/GrGpu.cpp
gfx/skia/src/gpu/GrGpu.h
gfx/skia/src/gpu/GrGpuFactory.cpp
gfx/skia/src/gpu/GrGpuVertex.h
gfx/skia/src/gpu/GrInOrderDrawBuffer.cpp
gfx/skia/src/gpu/GrInOrderDrawBuffer.h
gfx/skia/src/gpu/GrIndexBuffer.h
gfx/skia/src/gpu/GrMatrix.cpp
gfx/skia/src/gpu/GrMemory.cpp
gfx/skia/src/gpu/GrMemoryPool.cpp
gfx/skia/src/gpu/GrOvalRenderer.cpp
gfx/skia/src/gpu/GrPath.h
gfx/skia/src/gpu/GrPathRenderer.cpp
gfx/skia/src/gpu/GrPathRenderer.h
gfx/skia/src/gpu/GrPathRendererChain.cpp
gfx/skia/src/gpu/GrPathRendererChain.h
gfx/skia/src/gpu/GrPathUtils.cpp
gfx/skia/src/gpu/GrPathUtils.h
gfx/skia/src/gpu/GrPlotMgr.h
gfx/skia/src/gpu/GrRandom.h
gfx/skia/src/gpu/GrRectanizer.cpp
gfx/skia/src/gpu/GrRectanizer.h
gfx/skia/src/gpu/GrRectanizer_fifo.cpp
gfx/skia/src/gpu/GrRedBlackTree.h
gfx/skia/src/gpu/GrReducedClip.cpp
gfx/skia/src/gpu/GrReducedClip.h
gfx/skia/src/gpu/GrRenderTarget.cpp
gfx/skia/src/gpu/GrResource.cpp
gfx/skia/src/gpu/GrResourceCache.cpp
gfx/skia/src/gpu/GrResourceCache.h
gfx/skia/src/gpu/GrSWMaskHelper.cpp
gfx/skia/src/gpu/GrSWMaskHelper.h
gfx/skia/src/gpu/GrSoftwarePathRenderer.cpp
gfx/skia/src/gpu/GrSoftwarePathRenderer.h
gfx/skia/src/gpu/GrStencilAndCoverPathRenderer.cpp
gfx/skia/src/gpu/GrStencilAndCoverPathRenderer.h
gfx/skia/src/gpu/GrStencilBuffer.cpp
gfx/skia/src/gpu/GrStencilBuffer.h
gfx/skia/src/gpu/GrSurface.cpp
gfx/skia/src/gpu/GrTBSearch.h
gfx/skia/src/gpu/GrTDArray.h
gfx/skia/src/gpu/GrTHashCache.h
gfx/skia/src/gpu/GrTLList.h
gfx/skia/src/gpu/GrTextContext.cpp
gfx/skia/src/gpu/GrTextStrike.cpp
gfx/skia/src/gpu/GrTextStrike.h
gfx/skia/src/gpu/GrTextStrike_impl.h
gfx/skia/src/gpu/GrTexture.cpp
gfx/skia/src/gpu/GrTextureAccess.cpp
gfx/skia/src/gpu/GrVertexBuffer.h
gfx/skia/src/gpu/SkGpuCanvas.cpp
gfx/skia/src/gpu/SkGpuDevice.cpp
gfx/skia/src/gpu/SkGr.cpp
gfx/skia/src/gpu/SkGrFontScaler.cpp
gfx/skia/src/gpu/SkGrPixelRef.cpp
gfx/skia/src/gpu/android/GrGLCreateNativeInterface_android.cpp
gfx/skia/src/gpu/android/SkNativeGLContext_android.cpp
gfx/skia/src/gpu/app-android.cpp
gfx/skia/src/gpu/effects/Gr1DKernelEffect.h
gfx/skia/src/gpu/effects/GrColorTableEffect.cpp
gfx/skia/src/gpu/effects/GrColorTableEffect.h
gfx/skia/src/gpu/effects/GrConfigConversionEffect.cpp
gfx/skia/src/gpu/effects/GrConfigConversionEffect.h
gfx/skia/src/gpu/effects/GrConvolutionEffect.cpp
gfx/skia/src/gpu/effects/GrConvolutionEffect.h
gfx/skia/src/gpu/effects/GrSimpleTextureEffect.cpp
gfx/skia/src/gpu/effects/GrSimpleTextureEffect.h
gfx/skia/src/gpu/effects/GrSingleTextureEffect.cpp
gfx/skia/src/gpu/effects/GrSingleTextureEffect.h
gfx/skia/src/gpu/effects/GrTextureDomainEffect.cpp
gfx/skia/src/gpu/effects/GrTextureDomainEffect.h
gfx/skia/src/gpu/effects/GrTextureStripAtlas.cpp
gfx/skia/src/gpu/effects/GrTextureStripAtlas.h
gfx/skia/src/gpu/gl/GrGLBufferImpl.cpp
gfx/skia/src/gpu/gl/GrGLBufferImpl.h
gfx/skia/src/gpu/gl/GrGLCaps.cpp
gfx/skia/src/gpu/gl/GrGLCaps.h
gfx/skia/src/gpu/gl/GrGLContext.cpp
gfx/skia/src/gpu/gl/GrGLContext.h
gfx/skia/src/gpu/gl/GrGLContextInfo.cpp
gfx/skia/src/gpu/gl/GrGLContextInfo.h
gfx/skia/src/gpu/gl/GrGLCreateNullInterface.cpp
gfx/skia/src/gpu/gl/GrGLDefines.h
gfx/skia/src/gpu/gl/GrGLEffect.cpp
gfx/skia/src/gpu/gl/GrGLEffect.h
gfx/skia/src/gpu/gl/GrGLEffectMatrix.cpp
gfx/skia/src/gpu/gl/GrGLEffectMatrix.h
gfx/skia/src/gpu/gl/GrGLExtensions.cpp
gfx/skia/src/gpu/gl/GrGLIRect.h
gfx/skia/src/gpu/gl/GrGLIndexBuffer.cpp
gfx/skia/src/gpu/gl/GrGLIndexBuffer.h
gfx/skia/src/gpu/gl/GrGLInterface.cpp
gfx/skia/src/gpu/gl/GrGLNoOpInterface.cpp
gfx/skia/src/gpu/gl/GrGLNoOpInterface.h
gfx/skia/src/gpu/gl/GrGLPath.cpp
gfx/skia/src/gpu/gl/GrGLProgram.cpp
gfx/skia/src/gpu/gl/GrGLProgram.h
gfx/skia/src/gpu/gl/GrGLProgramDesc.cpp
gfx/skia/src/gpu/gl/GrGLProgramDesc.h
gfx/skia/src/gpu/gl/GrGLProgramStage.cpp
gfx/skia/src/gpu/gl/GrGLProgramStage.h
gfx/skia/src/gpu/gl/GrGLRenderTarget.cpp
gfx/skia/src/gpu/gl/GrGLRenderTarget.h
gfx/skia/src/gpu/gl/GrGLSL.cpp
gfx/skia/src/gpu/gl/GrGLSL.h
gfx/skia/src/gpu/gl/GrGLShaderBuilder.cpp
gfx/skia/src/gpu/gl/GrGLShaderBuilder.h
gfx/skia/src/gpu/gl/GrGLShaderVar.h
gfx/skia/src/gpu/gl/GrGLStencilBuffer.cpp
gfx/skia/src/gpu/gl/GrGLStencilBuffer.h
gfx/skia/src/gpu/gl/GrGLTexture.cpp
gfx/skia/src/gpu/gl/GrGLTexture.h
gfx/skia/src/gpu/gl/GrGLUniformManager.cpp
gfx/skia/src/gpu/gl/GrGLUniformManager.h
gfx/skia/src/gpu/gl/GrGLUtil.cpp
gfx/skia/src/gpu/gl/GrGLUtil.h
gfx/skia/src/gpu/gl/GrGLVertexArray.cpp
gfx/skia/src/gpu/gl/GrGLVertexArray.h
gfx/skia/src/gpu/gl/GrGLVertexBuffer.cpp
gfx/skia/src/gpu/gl/GrGLVertexBuffer.h
gfx/skia/src/gpu/gl/GrGpuGL.cpp
gfx/skia/src/gpu/gl/GrGpuGL.h
gfx/skia/src/gpu/gl/GrGpuGL_program.cpp
gfx/skia/src/gpu/gl/SkGLContext.cpp
gfx/skia/src/gpu/gl/SkGLContextHelper.cpp
gfx/skia/src/gpu/gl/android/GrGLCreateNativeInterface_android.cpp
gfx/skia/src/gpu/gl/android/SkNativeGLContext_android.cpp
gfx/skia/src/gpu/gl/angle/GrGLCreateANGLEInterface.cpp
gfx/skia/src/gpu/gl/debug/GrDebugGL.cpp
gfx/skia/src/gpu/gl/debug/GrDebugGL.h
gfx/skia/src/gpu/gl/debug/GrGLCreateDebugInterface.cpp
gfx/skia/src/gpu/gl/debug/GrTextureUnitObj.cpp
gfx/skia/src/gpu/gl/debug/GrVertexArrayObj.h
gfx/skia/src/gpu/gl/iOS/GrGLCreateNativeInterface_iOS.cpp
gfx/skia/src/gpu/gl/iOS/SkNativeGLContext_iOS.mm
gfx/skia/src/gpu/gl/mac/GrGLCreateNativeInterface_mac.cpp
gfx/skia/src/gpu/gl/mac/SkNativeGLContext_mac.cpp
gfx/skia/src/gpu/gl/mesa/GrGLCreateMesaInterface.cpp
gfx/skia/src/gpu/gl/mesa/SkMesaGLContext.cpp
gfx/skia/src/gpu/gl/mesa/osmesa_wrapper.h
gfx/skia/src/gpu/gl/nacl/SkNativeGLContext_nacl.cpp
gfx/skia/src/gpu/gl/unix/GrGLCreateNativeInterface_unix.cpp
gfx/skia/src/gpu/gl/win/GrGLCreateNativeInterface_win.cpp
gfx/skia/src/gpu/gl/win/SkNativeGLContext_win.cpp
gfx/skia/src/gpu/gr_hello_world.cpp
gfx/skia/src/gpu/gr_unittests.cpp
gfx/skia/src/gpu/ios/GrGLDefaultInterface_iOS.cpp
gfx/skia/src/image/SkDataPixelRef.cpp
gfx/skia/src/image/SkImage.cpp
gfx/skia/src/image/SkImagePriv.cpp
gfx/skia/src/image/SkImagePriv.h
gfx/skia/src/image/SkImage_Base.h
gfx/skia/src/image/SkImage_Codec.cpp
gfx/skia/src/image/SkImage_Gpu.cpp
gfx/skia/src/image/SkImage_Picture.cpp
gfx/skia/src/image/SkImage_Raster.cpp
gfx/skia/src/image/SkSurface.cpp
gfx/skia/src/image/SkSurface_Base.h
gfx/skia/src/image/SkSurface_Gpu.cpp
gfx/skia/src/image/SkSurface_Picture.cpp
gfx/skia/src/image/SkSurface_Raster.cpp
gfx/skia/src/images/SkBitmapRegionDecoder.cpp
gfx/skia/src/images/SkFDStream.cpp
gfx/skia/src/images/SkFlipPixelRef.cpp
gfx/skia/src/images/SkImageDecoder.cpp
gfx/skia/src/images/SkImageDecoder_Factory.cpp
gfx/skia/src/images/SkImageDecoder_libbmp.cpp
gfx/skia/src/images/SkImageDecoder_libgif.cpp
gfx/skia/src/images/SkImageDecoder_libico.cpp
gfx/skia/src/images/SkImageDecoder_libjpeg.cpp
gfx/skia/src/images/SkImageDecoder_libpng.cpp
gfx/skia/src/images/SkImageDecoder_libwebp.cpp
gfx/skia/src/images/SkImageDecoder_wbmp.cpp
gfx/skia/src/images/SkImageEncoder.cpp
gfx/skia/src/images/SkImageEncoder_Factory.cpp
gfx/skia/src/images/SkImageRef.cpp
gfx/skia/src/images/SkImageRefPool.cpp
gfx/skia/src/images/SkImageRefPool.h
gfx/skia/src/images/SkImageRef_GlobalPool.cpp
gfx/skia/src/images/SkImageRef_ashmem.cpp
gfx/skia/src/images/SkImageRef_ashmem.h
gfx/skia/src/images/SkImages.cpp
gfx/skia/src/images/SkJpegUtility.cpp
gfx/skia/src/images/SkJpegUtility.h
gfx/skia/src/images/SkMovie.cpp
gfx/skia/src/images/SkMovie_gif.cpp
gfx/skia/src/images/SkPageFlipper.cpp
gfx/skia/src/images/SkScaledBitmapSampler.h
gfx/skia/src/images/transform_scanline.h
gfx/skia/src/lazy/SkBitmapFactory.cpp
gfx/skia/src/lazy/SkLazyPixelRef.cpp
gfx/skia/src/lazy/SkLazyPixelRef.h
gfx/skia/src/lazy/SkLruImageCache.cpp
gfx/skia/src/lazy/SkPurgeableImageCache.cpp
gfx/skia/src/lazy/SkPurgeableMemoryBlock.h
gfx/skia/src/lazy/SkPurgeableMemoryBlock_common.cpp
gfx/skia/src/opts/SkBitmapProcState_matrixProcs_neon.cpp
gfx/skia/src/opts/SkBitmapProcState_matrix_clamp_neon.h
gfx/skia/src/opts/SkBitmapProcState_matrix_repeat_neon.h
gfx/skia/src/opts/SkBitmapProcState_opts_SSE2.cpp
gfx/skia/src/opts/SkBitmapProcState_opts_SSSE3.cpp
gfx/skia/src/opts/SkBitmapProcState_opts_arm.cpp
gfx/skia/src/opts/SkBitmapProcState_opts_none.cpp
gfx/skia/src/opts/SkBlitRect_opts_SSE2.cpp
gfx/skia/src/opts/SkBlitRect_opts_SSE2.h
gfx/skia/src/opts/SkBlitRow_opts_arm_neon.cpp
gfx/skia/src/opts/SkBlitRow_opts_none.cpp
gfx/skia/src/opts/SkUtils_opts_none.cpp
gfx/skia/src/opts/opts_check_SSE2.cpp
gfx/skia/src/opts/opts_check_arm.cpp
gfx/skia/src/pdf/SkPDFCatalog.cpp
gfx/skia/src/pdf/SkPDFCatalog.h
gfx/skia/src/pdf/SkPDFDevice.cpp
gfx/skia/src/pdf/SkPDFDocument.cpp
gfx/skia/src/pdf/SkPDFFont.cpp
gfx/skia/src/pdf/SkPDFFont.h
gfx/skia/src/pdf/SkPDFFontImpl.h
gfx/skia/src/pdf/SkPDFFormXObject.cpp
gfx/skia/src/pdf/SkPDFFormXObject.h
gfx/skia/src/pdf/SkPDFGraphicState.cpp
gfx/skia/src/pdf/SkPDFGraphicState.h
gfx/skia/src/pdf/SkPDFImage.cpp
gfx/skia/src/pdf/SkPDFImage.h
gfx/skia/src/pdf/SkPDFPage.cpp
gfx/skia/src/pdf/SkPDFPage.h
gfx/skia/src/pdf/SkPDFShader.cpp
gfx/skia/src/pdf/SkPDFStream.cpp
gfx/skia/src/pdf/SkPDFStream.h
gfx/skia/src/pdf/SkPDFTypes.cpp
gfx/skia/src/pdf/SkPDFTypes.h
gfx/skia/src/pdf/SkPDFUtils.cpp
gfx/skia/src/pdf/SkTSet.h
gfx/skia/src/pipe/SkGPipePriv.h
gfx/skia/src/pipe/SkGPipeRead.cpp
gfx/skia/src/pipe/SkGPipeWrite.cpp
gfx/skia/src/pipe/utils/SamplePipeControllers.cpp
gfx/skia/src/pipe/utils/SamplePipeControllers.h
gfx/skia/src/ports/FontHostConfiguration_android.cpp
gfx/skia/src/ports/FontHostConfiguration_android.h
gfx/skia/src/ports/SkDebug_android.cpp
gfx/skia/src/ports/SkDebug_nacl.cpp
gfx/skia/src/ports/SkDebug_stdio.cpp
gfx/skia/src/ports/SkDebug_win.cpp
gfx/skia/src/ports/SkFontConfigInterface_direct.cpp
gfx/skia/src/ports/SkFontDescriptor.cpp
gfx/skia/src/ports/SkFontDescriptor.h
gfx/skia/src/ports/SkFontHost_FONTPATH.cpp
gfx/skia/src/ports/SkFontHost_FreeType.cpp
gfx/skia/src/ports/SkFontHost_FreeType_common.cpp
gfx/skia/src/ports/SkFontHost_FreeType_common.h
gfx/skia/src/ports/SkFontHost_android.cpp
gfx/skia/src/ports/SkFontHost_android_old.cpp
gfx/skia/src/ports/SkFontHost_ascender.cpp
gfx/skia/src/ports/SkFontHost_fontconfig.cpp
gfx/skia/src/ports/SkFontHost_freetype_mac.cpp
gfx/skia/src/ports/SkFontHost_linux.cpp
gfx/skia/src/ports/SkFontHost_mac.cpp
gfx/skia/src/ports/SkFontHost_mac_atsui.cpp
gfx/skia/src/ports/SkFontHost_mac_coretext.cpp
gfx/skia/src/ports/SkFontHost_none.cpp
gfx/skia/src/ports/SkFontHost_sandbox_none.cpp
gfx/skia/src/ports/SkFontHost_simple.cpp
gfx/skia/src/ports/SkFontHost_tables.cpp
gfx/skia/src/ports/SkFontHost_win.cpp
gfx/skia/src/ports/SkFontHost_win_dw.cpp
gfx/skia/src/ports/SkGlobalInitialization_default.cpp
gfx/skia/src/ports/SkHarfBuzzFont.cpp
gfx/skia/src/ports/SkImageDecoder_CG.cpp
gfx/skia/src/ports/SkImageDecoder_WIC.cpp
gfx/skia/src/ports/SkImageDecoder_empty.cpp
gfx/skia/src/ports/SkImageRef_ashmem.cpp
gfx/skia/src/ports/SkImageRef_ashmem.h
gfx/skia/src/ports/SkMemory_malloc.cpp
gfx/skia/src/ports/SkMemory_mozalloc.cpp
gfx/skia/src/ports/SkOSFile_stdio.cpp
gfx/skia/src/ports/SkPurgeableMemoryBlock_android.cpp
gfx/skia/src/ports/SkPurgeableMemoryBlock_mac.cpp
gfx/skia/src/ports/SkPurgeableMemoryBlock_none.cpp
gfx/skia/src/ports/SkThread_pthread.cpp
gfx/skia/src/ports/SkThread_win.cpp
gfx/skia/src/ports/SkXMLParser_expat.cpp
gfx/skia/src/ports/SkXMLParser_tinyxml.cpp
gfx/skia/src/ports/SkXMLPullParser_expat.cpp
gfx/skia/src/sfnt/SkOTTableTypes.h
gfx/skia/src/sfnt/SkOTTable_OS_2.h
gfx/skia/src/sfnt/SkOTTable_OS_2_V0.h
gfx/skia/src/sfnt/SkOTTable_OS_2_V1.h
gfx/skia/src/sfnt/SkOTTable_OS_2_V2.h
gfx/skia/src/sfnt/SkOTTable_OS_2_V3.h
gfx/skia/src/sfnt/SkOTTable_OS_2_V4.h
gfx/skia/src/sfnt/SkOTTable_OS_2_VA.h
gfx/skia/src/sfnt/SkOTTable_glyf.h
gfx/skia/src/sfnt/SkOTTable_loca.h
gfx/skia/src/sfnt/SkOTTable_maxp.h
gfx/skia/src/sfnt/SkOTTable_maxp_CFF.h
gfx/skia/src/sfnt/SkOTTable_maxp_TT.h
gfx/skia/src/sfnt/SkOTTable_name.cpp
gfx/skia/src/sfnt/SkOTTable_name.h
gfx/skia/src/sfnt/SkOTUtils.cpp
gfx/skia/src/sfnt/SkOTUtils.h
gfx/skia/src/sfnt/SkSFNTHeader.h
gfx/skia/src/svg/SkSVGElements.cpp
gfx/skia/src/svg/SkSVGFilter.h
gfx/skia/src/svg/SkSVGGradient.cpp
gfx/skia/src/svg/SkSVGPaintState.cpp
gfx/skia/src/text/SkTextLayout.cpp
gfx/skia/src/utils/SkBase64.cpp
gfx/skia/src/utils/SkBitSet.cpp
gfx/skia/src/utils/SkBitSet.h
gfx/skia/src/utils/SkBitmapChecksummer.cpp
gfx/skia/src/utils/SkBitmapChecksummer.h
gfx/skia/src/utils/SkBitmapTransformer.cpp
gfx/skia/src/utils/SkBitmapTransformer.h
gfx/skia/src/utils/SkBoundaryPatch.cpp
gfx/skia/src/utils/SkCamera.cpp
gfx/skia/src/utils/SkCityHash.cpp
gfx/skia/src/utils/SkCityHash.h
gfx/skia/src/utils/SkCondVar.cpp
gfx/skia/src/utils/SkCountdown.cpp
gfx/skia/src/utils/SkCubicInterval.cpp
gfx/skia/src/utils/SkCullPoints.cpp
gfx/skia/src/utils/SkDebugTrace.h
gfx/skia/src/utils/SkDeferredCanvas.cpp
gfx/skia/src/utils/SkDumpCanvas.cpp
gfx/skia/src/utils/SkInterpolator.cpp
gfx/skia/src/utils/SkJSON.cpp
gfx/skia/src/utils/SkLayer.cpp
gfx/skia/src/utils/SkMD5.cpp
gfx/skia/src/utils/SkMD5.h
gfx/skia/src/utils/SkMatrix44.cpp
gfx/skia/src/utils/SkMeshUtils.cpp
gfx/skia/src/utils/SkNWayCanvas.cpp
gfx/skia/src/utils/SkOSFile.cpp
gfx/skia/src/utils/SkParseColor.cpp
gfx/skia/src/utils/SkParsePath.cpp
gfx/skia/src/utils/SkPictureUtils.cpp
gfx/skia/src/utils/SkProxyCanvas.cpp
gfx/skia/src/utils/SkRTConf.cpp
gfx/skia/src/utils/SkSHA1.cpp
gfx/skia/src/utils/SkSHA1.h
gfx/skia/src/utils/SkThreadPool.cpp
gfx/skia/src/utils/SkUnitMappers.cpp
gfx/skia/src/utils/android/ashmem.cpp
gfx/skia/src/utils/android/ashmem.h
gfx/skia/src/utils/cityhash/README
gfx/skia/src/utils/cityhash/config.h
gfx/skia/src/utils/ios/SkFontHost_iOS.mm
gfx/skia/src/utils/mac/SkBitmap_Mac.cpp
gfx/skia/src/utils/mac/SkCreateCGImageRef.cpp
gfx/skia/src/utils/mac/SkStream_mac.cpp
gfx/skia/src/utils/win/SkWGL_win.cpp
gfx/skia/src/views/SkBGViewArtist.cpp
gfx/skia/src/views/SkEvent.cpp
gfx/skia/src/views/SkParsePaint.cpp
gfx/skia/src/views/SkProgressView.cpp
gfx/skia/src/views/SkStackViewLayout.cpp
gfx/skia/src/views/SkTagList.cpp
gfx/skia/src/views/SkTextBox.cpp
gfx/skia/src/views/SkTouchGesture.cpp
gfx/skia/src/views/SkView.cpp
gfx/skia/src/views/SkViewInflate.cpp
gfx/skia/src/views/SkViewPriv.cpp
gfx/skia/src/views/SkViewPriv.h
gfx/skia/src/views/SkWidget.cpp
gfx/skia/src/views/SkWidgets.cpp
gfx/skia/src/views/SkWindow.cpp
gfx/skia/src/views/animated/SkImageView.cpp
gfx/skia/src/views/animated/SkListView.cpp
gfx/skia/src/views/animated/SkListWidget.cpp
gfx/skia/src/views/animated/SkScrollBarView.cpp
gfx/skia/src/views/animated/SkStaticTextView.cpp
gfx/skia/src/views/animated/SkWidgetViews.cpp
gfx/skia/src/views/ios/SkOSWindow_iOS.mm
gfx/skia/src/views/mac/SkNSView.h
gfx/skia/src/views/mac/SkNSView.mm
gfx/skia/src/views/mac/SkOSWindow_Mac.cpp
gfx/skia/src/views/mac/SkOSWindow_Mac.mm
gfx/skia/src/views/mac/SkOptionsTableView.mm
gfx/skia/src/views/sdl/SkOSWindow_SDL.cpp
gfx/skia/src/views/unix/SkOSWindow_Unix.cpp
gfx/skia/src/views/win/SkOSWindow_win.cpp
gfx/skia/src/views/win/skia_win.cpp
gfx/skia/src/xml/SkBML_XMLParser.cpp
gfx/skia/src/xml/SkDOM.cpp
gfx/skia/src/xml/SkJS.cpp
gfx/skia/src/xml/SkXMLPullParser.cpp
gfx/skia/src/xml/SkXMLWriter.cpp
--- a/gfx/skia/Makefile.in
+++ b/gfx/skia/Makefile.in
@@ -18,43 +18,48 @@ DEFINES += -DSK_A32_SHIFT=24 -DSK_R32_SH
 
 LOCAL_INCLUDES += \
 	-I$(srcdir)/include/core \
 	-I$(srcdir)/include/config \
 	-I$(srcdir)/include/gpu \
 	-I$(srcdir)/include/pipe \
 	-I$(srcdir)/include/ports \
 	-I$(srcdir)/include/images \
+	-I$(srcdir)/include/lazy \
 	-I$(srcdir)/include/utils \
 	-I$(srcdir)/include/utils/mac \
 	-I$(srcdir)/include/utils/win \
 	-I$(srcdir)/include/views \
 	-I$(srcdir)/include/effects \
 	-I$(srcdir)/src/core \
 	-I$(srcdir)/src/image \
 	-I$(srcdir)/src/gpu \
 	-I$(srcdir)/src/gpu/effects \
 	-I$(srcdir)/src/gpu/gl \
+	-I$(srcdir)/src/lazy \
 	-I$(srcdir)/src/utils \
+	-I$(srcdir)/src/utils/android \
 	-I$(srcdir)/src/sfnt \
 	$(NULL)
 
 VPATH += \
 	$(srcdir)/src/core \
 	$(srcdir)/src/gpu \
 	$(srcdir)/src/gpu/effects \
 	$(srcdir)/src/gpu/gl \
 	$(srcdir)/src/image \
 	$(srcdir)/src/images \
+	$(srcdir)/src/lazy \
 	$(srcdir)/src/pipe \
 	$(srcdir)/src/ports \
 	$(srcdir)/src/opts \
 	$(srcdir)/src/effects \
 	$(srcdir)/src/effects/gradients \
 	$(srcdir)/src/utils \
+	$(srcdir)/src/utils/android \
 	$(srcdir)/src/utils/mac \
 	$(srcdir)/src/sfnt \
 	$(NULL)
 
 ifeq (android,$(MOZ_WIDGET_TOOLKIT))
 OS_CXXFLAGS += $(CAIRO_FT_CFLAGS)
 endif
 
--- a/gfx/skia/README_MOZILLA
+++ b/gfx/skia/README_MOZILLA
@@ -1,5 +1,5 @@
 The source from this directory was copied from the skia subversion trunk
 using the update.sh script. The changes made were those applied by update.sh,
 the addition/update of Makefile.in files for the Mozilla build system.
 
-The subversion revision used was r5539.
+The subversion revision used was r8495.
--- a/gfx/skia/include/animator/SkAnimator.h
+++ b/gfx/skia/include/animator/SkAnimator.h
@@ -493,9 +493,8 @@ private:
     friend class SkApply;
     friend class SkDisplayMovie;
     friend class SkDisplayType;
     friend class SkPost;
     friend class SkXMLAnimatorWriter;
 };
 
 #endif
-
--- a/gfx/skia/include/animator/SkAnimatorView.h
+++ b/gfx/skia/include/animator/SkAnimatorView.h
@@ -32,9 +32,8 @@ protected:
 
 private:
     SkAnimator* fAnimator;
 
     typedef SkView INHERITED;
 };
 
 #endif
-
--- a/gfx/skia/include/config/SkUserConfig.h
+++ b/gfx/skia/include/config/SkUserConfig.h
@@ -60,22 +60,31 @@
 
     By default, these mutually exclusive flags are defined in SkPreConfig.h,
     based on the presence or absence of NDEBUG, but that decision can be changed
     here.
  */
 //#define SK_DEBUG
 //#define SK_RELEASE
 
+/*  Skia has certain debug-only code that is extremely intensive even for debug
+    builds.  This code is useful for diagnosing specific issues, but is not
+    generally applicable, therefore it must be explicitly enabled to avoid
+    the performance impact. By default these flags are undefined, but can be
+    enabled by uncommenting them below.
+ */
+//#define SK_DEBUG_GLYPH_CACHE
+//#define SK_DEBUG_PATH
+
 /*  To assist debugging, Skia provides an instance counting utility in
     include/core/SkInstCount.h. This flag turns on and off that utility to
     allow instance count tracking in either debug or release builds. By
     default it is enabled in debug but disabled in release.
  */
-//#define SK_ENABLE_INST_COUNT
+//#define SK_ENABLE_INST_COUNT 1
 
 /*  If, in debugging mode, Skia needs to stop (presumably to invoke a debugger)
     it will call SK_CRASH(). If this is not defined it, it is defined in
     SkPostConfig.h to write to an illegal address
  */
 //#define SK_CRASH() *(int *)(uintptr_t)0 = 0
 
 
@@ -135,16 +144,22 @@
  */
 //#define SK_SFNTLY_SUBSETTER "sfntly/subsetter/font_subsetter.h"
 
 /*  Define this to remove dimension checks on bitmaps. Not all blits will be
     correct yet, so this is mostly for debugging the implementation.
  */
 #define SK_ALLOW_OVER_32K_BITMAPS
 
+/**
+ *  To revert to int-only srcrect behavior in drawBitmapRect(ToRect),
+ *  define this symbol.
+ */
+//#define SK_SUPPORT_INT_SRCRECT_DRAWBITMAPRECT
+
 /*  Define this to set the upper limit for text to support LCD. Values that
     are very large increase the cost in the font cache and draw slower, without
     improving readability. If this is undefined, Skia will use its default
     value (e.g. 48)
  */
 //#define SK_MAX_SIZE_FOR_LCDTEXT     48
 
 /*  If SK_DEBUG is defined, then you can optionally define SK_SUPPORT_UNITTEST
@@ -179,25 +194,11 @@
 
 /* Determines whether to build code that supports the GPU backend. Some classes
    that are not GPU-specific, such as SkShader subclasses, have optional code
    that is used allows them to interact with the GPU backend. If you'd like to
    omit this code set SK_SUPPORT_GPU to 0. This also allows you to omit the gpu
    directories from your include search path when you're not building the GPU
    backend. Defaults to 1 (build the GPU code).
  */
-#ifdef USE_SKIA_GPU
-    #define SK_SUPPORT_GPU 1
-#else
-    #define SK_SUPPORT_GPU 0
-#endif
-
-/*  Don't dither 32bit gradients, to match what the canvas test suite expects.
- */
-#define SK_DISABLE_DITHER_32BIT_GRADIENT
-
-/*  Don't include stdint.h on windows as it conflicts with our build system.
- */
-#ifdef SK_BUILD_FOR_WIN32 
-    #define SK_IGNORE_STDINT_DOT_H 
-#endif 
+//#define SK_SUPPORT_GPU 1
 
 #endif
--- a/gfx/skia/include/core/Sk64.h
+++ b/gfx/skia/include/core/Sk64.h
@@ -223,9 +223,8 @@ struct SK_API Sk64 {
     }
 
 #ifdef SkLONGLONG
     SkLONGLONG getLongLong() const;
 #endif
 };
 
 #endif
-
--- a/gfx/skia/include/core/SkAdvancedTypefaceMetrics.h
+++ b/gfx/skia/include/core/SkAdvancedTypefaceMetrics.h
@@ -47,19 +47,17 @@ public:
     bool fMultiMaster;
     uint16_t fLastGlyphID; // The last valid glyph ID in the font.
     uint16_t fEmSize;  // The size of the em box (defines font units).
 
     // These enum values match the values used in the PDF file format.
     enum StyleFlags {
         kFixedPitch_Style  = 0x00001,
         kSerif_Style       = 0x00002,
-        kSymbolic_Style    = 0x00004,
         kScript_Style      = 0x00008,
-        kNonsymbolic_Style = 0x00020,
         kItalic_Style      = 0x00040,
         kAllCaps_Style     = 0x10000,
         kSmallCaps_Style   = 0x20000,
         kForceBold_Style   = 0x40000
     };
     uint16_t fStyle;        // Font style characteristics.
     int16_t fItalicAngle;   // Counterclockwise degrees from vertical of the
                             // dominant vertical stroke for an Italic face.
--- a/gfx/skia/include/core/SkAnnotation.h
+++ b/gfx/skia/include/core/SkAnnotation.h
@@ -9,16 +9,17 @@
 #define SkAnnotation_DEFINED
 
 #include "SkFlattenable.h"
 
 class SkData;
 class SkDataSet;
 class SkStream;
 class SkWStream;
+struct SkPoint;
 
 /**
  *  Experimental class for annotating draws. Do not use directly yet.
  *  Use helper functions at the bottom of this file for now.
  */
 class SkAnnotation : public SkFlattenable {
 public:
     enum Flags {
@@ -59,16 +60,28 @@ private:
  *  Experimental collection of predefined Keys into the Annotation dictionary
  */
 class SkAnnotationKeys {
 public:
     /**
      *  Returns the canonical key whose payload is a URL
      */
     static const char* URL_Key();
+
+    /**
+     *  Returns the canonical key whose payload is the name of a destination to
+     *  be defined.
+     */
+    static const char* Define_Named_Dest_Key();
+
+    /**
+     *  Returns the canonical key whose payload is the name of a destination to
+     *  be linked to.
+     */
+    static const char* Link_Named_Dest_Key();
 };
 
 ///////////////////////////////////////////////////////////////////////////////
 //
 // Experimental helper functions to use Annotations
 //
 
 struct SkRect;
@@ -81,9 +94,35 @@ class SkCanvas;
  *  specified rectangle (in local coordinates, just like drawRect). If the
  *  backend of this canvas does not support annotations, this call is
  *  safely ignored.
  *
  *  The caller is responsible for managing its ownership of the SkData.
  */
 SK_API void SkAnnotateRectWithURL(SkCanvas*, const SkRect&, SkData*);
 
+/**
+ *  Experimental!
+ *
+ *  Annotate the canvas by associating a name with the specified point.
+ *
+ *  If the backend of this canvas does not support annotations, this call is
+ *  safely ignored.
+ *
+ *  The caller is responsible for managing its ownership of the SkData.
+ */
+SK_API void SkAnnotateNamedDestination(SkCanvas*, const SkPoint&, SkData*);
+
+/**
+ *  Experimental!
+ *
+ *  Annotate the canvas by making the specified rectangle link to a named
+ *  destination.
+ *
+ *  If the backend of this canvas does not support annotations, this call is
+ *  safely ignored.
+ *
+ *  The caller is responsible for managing its ownership of the SkData.
+ */
+SK_API void SkAnnotateLinkToDestination(SkCanvas*, const SkRect&, SkData*);
+
+
 #endif
--- a/gfx/skia/include/core/SkBitmap.h
+++ b/gfx/skia/include/core/SkBitmap.h
@@ -16,16 +16,17 @@
 #include "SkPoint.h"
 #include "SkRefCnt.h"
 
 struct SkIRect;
 struct SkRect;
 class SkPaint;
 class SkPixelRef;
 class SkRegion;
+class SkString;
 
 // This is an opaque class, not interpreted by skia
 class SkGpuTexture;
 
 /** \class SkBitmap
 
     The SkBitmap class specifies a raster bitmap. A bitmap has an integer width
     and height, and a format (config), and a pointer to the actual pixels.
@@ -106,17 +107,17 @@ public:
     /** Return the bitmap's width, in pixels.
     */
     int width() const { return fWidth; }
     /** Return the bitmap's height, in pixels.
     */
     int height() const { return fHeight; }
     /** Return the number of bytes between subsequent rows of the bitmap.
     */
-    int rowBytes() const { return fRowBytes; }
+    size_t rowBytes() const { return fRowBytes; }
 
     /** Return the shift amount per pixel (i.e. 0 for 1-byte per pixel, 1 for
         2-bytes per pixel configs, 2 for 4-bytes per pixel configs). Return 0
         for configs that are not at least 1-byte per pixel (e.g. kA1_Config
         or kNo_Config)
     */
     int shiftPerPixel() const { return fBytesPerPixel >> 1; }
 
@@ -139,17 +140,17 @@ public:
     /** Return the byte size of the pixels, based on the height and rowBytes.
         Note this truncates the result to 32bits. Call getSize64() to detect
         if the real size exceeds 32bits.
     */
     size_t getSize() const { return fHeight * fRowBytes; }
 
     /** Return the number of bytes from the pointer returned by getPixels()
         to the end of the allocated space in the buffer. Required in
-        cases where extractBitmap has been called.
+        cases where extractSubset has been called.
     */
     size_t getSafeSize() const ;
 
     /** Return the byte size of the pixels, based on the height and rowBytes.
         This routine is slightly slower than getSize(), but does not truncate
         the answer to 32bits.
     */
     Sk64 getSize64() const {
@@ -200,17 +201,17 @@ public:
     /** Reset the bitmap to its initial state (see default constructor). If we are a (shared)
         owner of the pixels, that ownership is decremented.
     */
     void reset();
 
     /** Given a config and a width, this computes the optimal rowBytes value. This is called automatically
         if you pass 0 for rowBytes to setConfig().
     */
-    static int ComputeRowBytes(Config c, int width);
+    static size_t ComputeRowBytes(Config c, int width);
 
     /** Return the bytes-per-pixel for the specified config. If the config is
         not at least 1-byte per pixel, return 0, including for kNo_Config.
     */
     static int ComputeBytesPerPixel(Config c);
 
     /** Return the shift-per-pixel for the specified config. If the config is
      not at least 1-byte per pixel, return 0, including for kNo_Config.
@@ -218,26 +219,44 @@ public:
     static int ComputeShiftPerPixel(Config c) {
         return ComputeBytesPerPixel(c) >> 1;
     }
 
     static Sk64 ComputeSize64(Config, int width, int height);
     static size_t ComputeSize(Config, int width, int height);
 
     /**
+     *  This will brute-force return true if all of the pixels in the bitmap
+     *  are opaque. If it fails to read the pixels, or encounters an error,
+     *  it will return false.
+     *
+     *  Since this can be an expensive operation, the bitmap stores a flag for
+     *  this (isOpaque, setIsOpaque). Only call this if you need to compute this
+     *  value from "unknown" pixels.
+     */
+    static bool ComputeIsOpaque(const SkBitmap&);
+
+    /**
+     *  Calls ComputeIsOpaque, and passes its result to setIsOpaque().
+     */
+    void computeAndSetOpaquePredicate() {
+        this->setIsOpaque(ComputeIsOpaque(*this));
+    }
+
+    /**
      *  Return the bitmap's bounds [0, 0, width, height] as an SkRect
      */
     void getBounds(SkRect* bounds) const;
     void getBounds(SkIRect* bounds) const;
 
     /** Set the bitmap's config and dimensions. If rowBytes is 0, then
         ComputeRowBytes() is called to compute the optimal value. This resets
         any pixel/colortable ownership, just like reset().
     */
-    void setConfig(Config, int width, int height, int rowBytes = 0);
+    void setConfig(Config, int width, int height, size_t rowBytes = 0);
     /** Use this to assign a new pixel address for an existing bitmap. This
         will automatically release any pixelref previously installed. Only call
         this if you are handling ownership/lifetime of the pixel memory.
 
         If the bitmap retains a reference to the colortable (assuming it is
         not null) it will take care of incrementing the reference count.
 
         @param pixels   Address for the pixels, managed by the caller.
@@ -254,23 +273,22 @@ public:
         disable this optimization and ensure that pixels in the padding are not
         overwritten.
 
         Always returns false for RLE formats.
 
         @param dst      Location of destination buffer.
         @param dstSize  Size of destination buffer. Must be large enough to hold
                         pixels using indicated stride.
-        @param dstRowBytes  Width of each line in the buffer. If -1, uses
+        @param dstRowBytes  Width of each line in the buffer. If 0, uses
                             bitmap's internal stride.
         @param preserveDstPad Must we preserve padding in the dst
     */
-    bool copyPixelsTo(void* const dst, size_t dstSize, int dstRowBytes = -1,
-                      bool preserveDstPad = false)
-         const;
+    bool copyPixelsTo(void* const dst, size_t dstSize, size_t dstRowBytes = 0,
+                      bool preserveDstPad = false) const;
 
     /** Use the standard HeapAllocator to create the pixelref that manages the
         pixel memory. It will be sized based on the current width/height/config.
         If this is called multiple times, a new pixelref object will be created
         each time.
 
         If the bitmap retains a reference to the colortable (assuming it is
         not null) it will take care of incrementing the reference count.
@@ -519,16 +537,30 @@ public:
     void freeMipMap();
 
     /** Given scale factors sx, sy, determine the miplevel available in the
         bitmap, and return it (this is the amount to shift matrix iterators
         by). If dst is not null, it is set to the correct level.
     */
     int extractMipLevel(SkBitmap* dst, SkFixed sx, SkFixed sy);
 
+#ifdef SK_BUILD_FOR_ANDROID
+    bool hasHardwareMipMap() const {
+        return (fFlags & kHasHardwareMipMap_Flag) != 0;
+    }
+
+    void setHasHardwareMipMap(bool hasHardwareMipMap) {
+        if (hasHardwareMipMap) {
+            fFlags |= kHasHardwareMipMap_Flag;
+        } else {
+            fFlags &= ~kHasHardwareMipMap_Flag;
+        }
+    }
+#endif
+
     bool extractAlpha(SkBitmap* dst) const {
         return this->extractAlpha(dst, NULL, NULL, NULL);
     }
 
     bool extractAlpha(SkBitmap* dst, const SkPaint* paint,
                       SkIPoint* offset) const {
         return this->extractAlpha(dst, paint, NULL, offset);
     }
@@ -602,51 +634,60 @@ public:
             fYPtrs[y] = addr;
         }
 
     private:
         uint8_t** fYPtrs;
         int       fHeight;
     };
 
+    SkDEVCODE(void toString(SkString* str) const;)
+
 private:
     struct MipMap;
     mutable MipMap* fMipMap;
 
     mutable SkPixelRef* fPixelRef;
     mutable size_t      fPixelRefOffset;
     mutable int         fPixelLockCount;
     // either user-specified (in which case it is not treated as mutable)
     // or a cache of the returned value from fPixelRef->lockPixels()
     mutable void*       fPixels;
     mutable SkColorTable* fColorTable;    // only meaningful for kIndex8
 
     enum Flags {
         kImageIsOpaque_Flag     = 0x01,
         kImageIsVolatile_Flag   = 0x02,
-        kImageIsImmutable_Flag  = 0x04
+        kImageIsImmutable_Flag  = 0x04,
+#ifdef SK_BUILD_FOR_ANDROID
+        /* A hint for the renderer responsible for drawing this bitmap
+         * indicating that it should attempt to use mipmaps when this bitmap
+         * is drawn scaled down.
+         */
+        kHasHardwareMipMap_Flag = 0x08,
+#endif
     };
 
     uint32_t    fRowBytes;
     uint32_t    fWidth;
     uint32_t    fHeight;
     uint8_t     fConfig;
     uint8_t     fFlags;
     uint8_t     fBytesPerPixel; // based on config
 
     /* Internal computations for safe size.
     */
-    static Sk64 ComputeSafeSize64(Config config,
+    static Sk64 ComputeSafeSize64(Config   config,
                                   uint32_t width,
                                   uint32_t height,
-                                  uint32_t rowBytes);
+                                  size_t   rowBytes);
     static size_t ComputeSafeSize(Config   config,
                                   uint32_t width,
                                   uint32_t height,
-                                  uint32_t rowBytes);
+                                  size_t   rowBytes);
 
     /*  Unreference any pixelrefs or colortables
     */
     void freePixels();
     void updatePixelsFromRef() const;
 
     static SkFixed ComputeMipLevel(SkFixed sx, SkFixed dy);
 };
--- a/gfx/skia/include/core/SkBounder.h
+++ b/gfx/skia/include/core/SkBounder.h
@@ -86,9 +86,8 @@ private:
     friend class SkDrawIter;
     friend struct Draw1Glyph;
     friend class SkMaskFilter;
 
     typedef SkRefCnt INHERITED;
 };
 
 #endif
-
--- a/gfx/skia/include/core/SkCanvas.h
+++ b/gfx/skia/include/core/SkCanvas.h
@@ -20,17 +20,19 @@
 #include "SkRegion.h"
 #include "SkScalarCompare.h"
 #include "SkXfermode.h"
 
 class SkBounder;
 class SkDevice;
 class SkDraw;
 class SkDrawFilter;
+class SkMetaData;
 class SkPicture;
+class SkRRect;
 class SkSurface_Base;
 
 /** \class SkCanvas
 
     A Canvas encapsulates all of the state about drawing into a device (bitmap).
     This includes a reference to the device itself, and a stack of matrix/clip
     values. For any given draw call (e.g. drawRect), the geometry of the object
     being drawn is transformed by the concatenation of all the matrices in the
@@ -57,16 +59,18 @@ public:
 
     /** Deprecated - Construct a canvas with the specified bitmap to draw into.
         @param bitmap   Specifies a bitmap for the canvas to draw into. Its
                         structure are copied to the canvas.
     */
     explicit SkCanvas(const SkBitmap& bitmap);
     virtual ~SkCanvas();
 
+    SkMetaData& getMetaData();
+
     ///////////////////////////////////////////////////////////////////////////
 
     /**
      *  Trigger the immediate execution of all pending draw operations.
      */
     void flush();
 
     /**
@@ -77,44 +81,32 @@ public:
     SkISize getDeviceSize() const;
 
     /** Return the canvas' device object, which may be null. The device holds
         the bitmap of the pixels that the canvas draws into. The reference count
         of the returned device is not changed by this call.
     */
     SkDevice* getDevice() const;
 
-    /** Specify a device for this canvas to draw into. If it is not null, its
-        reference count is incremented. If the canvas was already holding a
-        device, its reference count is decremented. The new device is returned.
-    */
-    virtual SkDevice* setDevice(SkDevice* device);
-
     /**
      *  saveLayer() can create another device (which is later drawn onto
      *  the previous device). getTopDevice() returns the top-most device current
      *  installed. Note that this can change on other calls like save/restore,
      *  so do not access this device after subsequent canvas calls.
      *  The reference count of the device is not changed.
      *
      * @param updateMatrixClip If this is true, then before the device is
      *        returned, we ensure that its has been notified about the current
      *        matrix and clip. Note: this happens automatically when the device
      *        is drawn to, but is optional here, as there is a small perf hit
      *        sometimes.
      */
     SkDevice* getTopDevice(bool updateMatrixClip = false) const;
 
     /**
-     *  Create a new raster device and make it current. This also returns
-     *  the new device.
-     */
-    SkDevice* setBitmapDevice(const SkBitmap& bitmap);
-
-    /**
      *  Shortcut for getDevice()->createCompatibleDevice(...).
      *  If getDevice() == NULL, this method does nothing, and returns NULL.
      */
     SkDevice* createCompatibleDevice(SkBitmap::Config config,
                                     int width, int height,
                                     bool isOpaque);
 
     ///////////////////////////////////////////////////////////////////////////
@@ -343,34 +335,57 @@ public:
         @param matrix The matrix that will be copied into the current matrix.
     */
     virtual void setMatrix(const SkMatrix& matrix);
 
     /** Helper for setMatrix(identity). Sets the current matrix to identity.
     */
     void resetMatrix();
 
-    /** Modify the current clip with the specified rectangle.
-        @param rect The rect to intersect with the current clip
-        @param op The region op to apply to the current clip
-        @return true if the canvas' clip is non-empty
-    */
+    /**
+     *  Modify the current clip with the specified rectangle.
+     *  @param rect The rect to combine with the current clip
+     *  @param op The region op to apply to the current clip
+     *  @param doAntiAlias true if the clip should be antialiased
+     *  @return true if the canvas' clip is non-empty
+     */
     virtual bool clipRect(const SkRect& rect,
                           SkRegion::Op op = SkRegion::kIntersect_Op,
                           bool doAntiAlias = false);
 
-    /** Modify the current clip with the specified path.
-        @param path The path to apply to the current clip
-        @param op The region op to apply to the current clip
-        @return true if the canvas' new clip is non-empty
-    */
+    /**
+     *  Modify the current clip with the specified SkRRect.
+     *  @param rrect The rrect to combine with the current clip
+     *  @param op The region op to apply to the current clip
+     *  @param doAntiAlias true if the clip should be antialiased
+     *  @return true if the canvas' clip is non-empty
+     */
+    virtual bool clipRRect(const SkRRect& rrect,
+                           SkRegion::Op op = SkRegion::kIntersect_Op,
+                           bool doAntiAlias = false);
+
+    /**
+     *  Modify the current clip with the specified path.
+     *  @param path The path to combine with the current clip
+     *  @param op The region op to apply to the current clip
+     *  @param doAntiAlias true if the clip should be antialiased
+     *  @return true if the canvas' new clip is non-empty
+     */
     virtual bool clipPath(const SkPath& path,
                           SkRegion::Op op = SkRegion::kIntersect_Op,
                           bool doAntiAlias = false);
 
+    /** EXPERIMENTAL -- only used for testing
+        Set to false to force clips to be hard, even if doAntiAlias=true is
+        passed to clipRect or clipPath.
+     */
+    void setAllowSoftClip(bool allow) {
+        fAllowSoftClip = allow;
+    }
+
     /** Modify the current clip with the specified region. Note that unlike
         clipRect() and clipPath() which transform their arguments by the current
         matrix, clipRegion() assumes its argument is already in device
         coordinates, and so no transformation is performed.
         @param deviceRgn    The region to apply to the current clip
         @param op The region op to apply to the current clip
         @return true if the canvas' new clip is non-empty
     */
@@ -573,17 +588,26 @@ public:
     void drawRectCoords(SkScalar left, SkScalar top, SkScalar right,
                         SkScalar bottom, const SkPaint& paint);
 
     /** Draw the specified oval using the specified paint. The oval will be
         filled or framed based on the Style in the paint.
         @param oval     The rectangle bounds of the oval to be drawn
         @param paint    The paint used to draw the oval
     */
-    void drawOval(const SkRect& oval, const SkPaint&);
+    virtual void drawOval(const SkRect& oval, const SkPaint&);
+
+    /**
+     *  Draw the specified RRect using the specified paint The rrect will be filled or stroked
+     *  based on the Style in the paint.
+     *
+     *  @param rrect    The round-rect to draw
+     *  @param paint    The paint used to draw the round-rect
+     */
+    virtual void drawRRect(const SkRRect& rrect, const SkPaint& paint);
 
     /** Draw the specified circle using the specified paint. If radius is <= 0,
         then nothing will be drawn. The circle will be filled
         or framed based on the Style in the paint.
         @param cx       The x-coordinate of the center of the cirle to be drawn
         @param cy       The y-coordinate of the center of the cirle to be drawn
         @param radius   The radius of the cirle to be drawn
         @param paint    The paint used to draw the circle
@@ -639,18 +663,35 @@ public:
     /** Draw the specified bitmap, with the specified matrix applied (before the
         canvas' matrix is applied).
         @param bitmap   The bitmap to be drawn
         @param src      Optional: specify the subset of the bitmap to be drawn
         @param dst      The destination rectangle where the scaled/translated
                         image will be drawn
         @param paint    The paint used to draw the bitmap, or NULL
     */
-    virtual void drawBitmapRect(const SkBitmap& bitmap, const SkIRect* src,
-                                const SkRect& dst, const SkPaint* paint = NULL);
+    virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
+                                      const SkRect& dst,
+                                      const SkPaint* paint);
+
+    void drawBitmapRect(const SkBitmap& bitmap, const SkRect& dst,
+                        const SkPaint* paint) {
+        this->drawBitmapRectToRect(bitmap, NULL, dst, paint);
+    }
+
+    void drawBitmapRect(const SkBitmap& bitmap, const SkIRect* isrc,
+                        const SkRect& dst, const SkPaint* paint = NULL) {
+        SkRect realSrcStorage;
+        SkRect* realSrcPtr = NULL;
+        if (isrc) {
+            realSrcStorage.set(*isrc);
+            realSrcPtr = &realSrcStorage;
+        }
+        this->drawBitmapRectToRect(bitmap, realSrcPtr, dst, paint);
+    }
 
     virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m,
                                   const SkPaint* paint = NULL);
 
     /**
      *  Draw the bitmap stretched differentially to fit into dst.
      *  center is a rect within the bitmap, and logically divides the bitmap
      *  into 9 sections (3x3). For example, if the middle pixel of a [5x5]
@@ -757,20 +798,17 @@ public:
         */
     void drawPosTextOnPath(const void* text, size_t byteLength,
                            const SkPoint pos[], const SkPaint& paint,
                            const SkPath& path, const SkMatrix* matrix);
 #endif
 
     /** Draw the picture into this canvas. This method effective brackets the
         playback of the picture's draw calls with save/restore, so the state
-        of this canvas will be unchanged after this call. This contrasts with
-        the more immediate method SkPicture::draw(), which does not bracket
-        the canvas with save/restore, thus the canvas may be left in a changed
-        state after the call.
+        of this canvas will be unchanged after this call.
         @param picture The recorded drawing commands to playback into this
                        canvas.
     */
     virtual void drawPicture(SkPicture& picture);
 
     enum VertexMode {
         kTriangles_VertexMode,
         kTriangleStrip_VertexMode,
@@ -784,17 +822,17 @@ public:
         @param vertices Array of vertices for the mesh
         @param texs May be null. If not null, specifies the coordinate
                              in texture space for each vertex.
         @param colors May be null. If not null, specifies a color for each
                       vertex, to be interpolated across the triangle.
         @param xmode Used if both texs and colors are present. In this
                     case the colors are combined with the texture using mode,
                     before being drawn using the paint. If mode is null, then
-                    kMultiply_Mode is used.
+                    kModulate_Mode is used.
         @param indices If not null, array of indices to reference into the
                     vertex (texs, colors) array.
         @param indexCount number of entries in the indices array (if not null)
         @param paint Specifies the shader/texture if present.
     */
     virtual void drawVertices(VertexMode vmode, int vertexCount,
                               const SkPoint vertices[], const SkPoint texs[],
                               const SkColor colors[], SkXfermode* xmode,
@@ -874,18 +912,16 @@ public:
      *  clips organized by the save/restore frame in which they were
      *  added.
      *  @return the current clip stack ("list" of individual clip elements)
      */
     const SkClipStack* getClipStack() const {
         return &fClipStack;
     }
 
-    void setExternalMatrix(const SkMatrix* = NULL);
-
     class ClipVisitor {
     public:
         virtual ~ClipVisitor();
         virtual void clipRect(const SkRect&, SkRegion::Op, bool antialias) = 0;
         virtual void clipPath(const SkPath&, SkRegion::Op, bool antialias) = 0;
     };
 
     /**
@@ -950,55 +986,65 @@ protected:
     // returns false if the entire rectangle is entirely clipped out
     bool clipRectBounds(const SkRect* bounds, SaveFlags flags,
                         SkIRect* intersection);
 
     // notify our surface (if we have one) that we are about to draw, so it
     // can perform copy-on-write or invalidate any cached images
     void predrawNotify();
 
+    /** DEPRECATED -- use constructor(device)
+
+     Marked as 'protected' to avoid new clients using this before we can
+     completely remove it.
+
+     Specify a device for this canvas to draw into. If it is not null, its
+     reference count is incremented. If the canvas was already holding a
+     device, its reference count is decremented. The new device is returned.
+     */
+    virtual SkDevice* setDevice(SkDevice* device);
+
 private:
     class MCRec;
 
     SkClipStack fClipStack;
     SkDeque     fMCStack;
     // points to top of stack
     MCRec*      fMCRec;
     // the first N recs that can fit here mean we won't call malloc
     uint32_t    fMCRecStorage[32];
 
     SkBounder*  fBounder;
-    SkDevice*   fLastDeviceToGainFocus;
     int         fSaveLayerCount;    // number of successful saveLayer calls
 
+    SkMetaData* fMetaData;
+
     SkSurface_Base*  fSurfaceBase;
     SkSurface_Base* getSurfaceBase() const { return fSurfaceBase; }
     void setSurfaceBase(SkSurface_Base* sb) {
         fSurfaceBase = sb;
     }
     friend class SkSurface_Base;
 
-    void prepareForDeviceDraw(SkDevice*, const SkMatrix&, const SkRegion&);
-
     bool fDeviceCMDirty;            // cleared by updateDeviceCMCache()
     void updateDeviceCMCache();
 
     friend class SkDrawIter;    // needs setupDrawForLayerDevice()
     friend class AutoDrawLooper;
 
     SkDevice* createLayerDevice(SkBitmap::Config, int width, int height,
                                 bool isOpaque);
 
     SkDevice* init(SkDevice*);
 
     // internal methods are not virtual, so they can safely be called by other
     // canvas apis, without confusing subclasses (like SkPictureRecording)
     void internalDrawBitmap(const SkBitmap&, const SkIRect*, const SkMatrix& m,
                                   const SkPaint* paint);
-    void internalDrawBitmapRect(const SkBitmap& bitmap, const SkIRect* src,
+    void internalDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src,
                                 const SkRect& dst, const SkPaint* paint);
     void internalDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center,
                                 const SkRect& dst, const SkPaint* paint);
     void internalDrawPaint(const SkPaint& paint);
     int internalSaveLayer(const SkRect* bounds, const SkPaint* paint,
                           SaveFlags, bool justForImageFilter);
     void internalDrawDevice(SkDevice*, int x, int y, const SkPaint*);
 
@@ -1011,29 +1057,27 @@ private:
                                     const char text[], size_t byteLength,
                                     SkScalar x, SkScalar y);
 
     /*  These maintain a cache of the clip bounds in local coordinates,
         (converted to 2s-compliment if floats are slow).
      */
     mutable SkRectCompareType fLocalBoundsCompareType;
     mutable bool              fLocalBoundsCompareTypeDirty;
+    bool fAllowSoftClip;
 
     const SkRectCompareType& getLocalClipBoundsCompareType() const {
         if (fLocalBoundsCompareTypeDirty) {
             this->computeLocalClipBoundsCompareType();
             fLocalBoundsCompareTypeDirty = false;
         }
         return fLocalBoundsCompareType;
     }
     void computeLocalClipBoundsCompareType() const;
 
-    SkMatrix    fExternalMatrix, fExternalInverse;
-    bool        fUseExternalMatrix;
-
     class AutoValidateClip : ::SkNoncopyable {
     public:
         explicit AutoValidateClip(SkCanvas* canvas) : fCanvas(canvas) {
             fCanvas->validateClip();
         }
         ~AutoValidateClip() { fCanvas->validateClip(); }
 
     private:
@@ -1058,17 +1102,30 @@ public:
     SkAutoCanvasRestore(SkCanvas* canvas, bool doSave) : fCanvas(canvas) {
         SkASSERT(canvas);
         fSaveCount = canvas->getSaveCount();
         if (doSave) {
             canvas->save();
         }
     }
     ~SkAutoCanvasRestore() {
-        fCanvas->restoreToCount(fSaveCount);
+        if (fCanvas) {
+            fCanvas->restoreToCount(fSaveCount);
+        }
+    }
+
+    /**
+     *  Perform the restore now, instead of waiting for the destructor. Will
+     *  only do this once.
+     */
+    void restore() {
+        if (fCanvas) {
+            fCanvas->restoreToCount(fSaveCount);
+            fCanvas = NULL;
+        }
     }
 
 private:
     SkCanvas*   fCanvas;
     int         fSaveCount;
 };
 
 #endif
--- a/gfx/skia/include/core/SkChecksum.h
+++ b/gfx/skia/include/core/SkChecksum.h
@@ -25,16 +25,21 @@ private:
     static inline uintptr_t Mash(uintptr_t total, uintptr_t value) {
         return ((total >> ROTR) | (total << ROTL)) ^ value;
     }
 
 public:
     /**
      *  Compute a 32-bit checksum for a given data block
      *
+     *  WARNING: this algorithm is tuned for efficiency, not backward/forward
+     *  compatibility.  It may change at any time, so a checksum generated with
+     *  one version of the Skia code may not match a checksum generated with
+     *  a different version of the Skia code.
+     *
      *  @param data Memory address of the data block to be processed. Must be
      *              32-bit aligned.
      *  @param size Size of the data block in bytes. Must be a multiple of 4.
      *  @return checksum result
      */
     static uint32_t Compute(const uint32_t* data, size_t size) {
         SkASSERT(SkIsAlign4(size));
 
@@ -78,9 +83,8 @@ public:
         if (8 == sizeof(result)) {
             result ^= result >> HALFBITS;
         }
         return static_cast<uint32_t>(result);
     }
 };
 
 #endif
-
--- a/gfx/skia/include/core/SkClipStack.h
+++ b/gfx/skia/include/core/SkClipStack.h
@@ -4,70 +4,306 @@
  *
  * Use of this source code is governed by a BSD-style license that can be
  * found in the LICENSE file.
  */
 #ifndef SkClipStack_DEFINED
 #define SkClipStack_DEFINED
 
 #include "SkDeque.h"
+#include "SkPath.h"
+#include "SkRect.h"
 #include "SkRegion.h"
 #include "SkTDArray.h"
 
-struct SkRect;
-class SkPath;
 
 // Because a single save/restore state can have multiple clips, this class
 // stores the stack depth (fSaveCount) and clips (fDeque) separately.
 // Each clip in fDeque stores the stack state to which it belongs
 // (i.e., the fSaveCount in force when it was added). Restores are thus
 // implemented by removing clips from fDeque that have an fSaveCount larger
 // then the freshly decremented count.
 class SK_API SkClipStack {
 public:
+    enum BoundsType {
+        // The bounding box contains all the pixels that can be written to
+        kNormal_BoundsType,
+        // The bounding box contains all the pixels that cannot be written to.
+        // The real bound extends out to infinity and all the pixels outside
+        // of the bound can be written to. Note that some of the pixels inside
+        // the bound may also be writeable but all pixels that cannot be
+        // written to are guaranteed to be inside.
+        kInsideOut_BoundsType
+    };
+
+    class Element {
+    public:
+        enum Type {
+            //!< This element makes the clip empty (regardless of previous elements).
+            kEmpty_Type,
+            //!< This element combines a rect with the current clip using a set operation
+            kRect_Type,
+            //!< This element combines a path with the current clip using a set operation
+            kPath_Type,
+        };
+
+        Element() {
+            this->initCommon(0, SkRegion::kReplace_Op, false);
+            this->setEmpty();
+        }
+
+        Element(const SkRect& rect, SkRegion::Op op, bool doAA) {
+            this->initRect(0, rect, op, doAA);
+        }
+
+        Element(const SkPath& path, SkRegion::Op op, bool doAA) {
+            this->initPath(0, path, op, doAA);
+        }
+
+        bool operator== (const Element& element) const {
+            if (this == &element) {
+                return true;
+            }
+            if (fOp != element.fOp ||
+                fType != element.fType ||
+                fDoAA != element.fDoAA ||
+                fSaveCount != element.fSaveCount) {
+                return false;
+            }
+            switch (fType) {
+                case kPath_Type:
+                    return fPath == element.fPath;
+                case kRect_Type:
+                    return fRect == element.fRect;
+                case kEmpty_Type:
+                    return true;
+                default:
+                    SkDEBUGFAIL("Unexpected type.");
+                    return false;
+            }
+        }
+        bool operator!= (const Element& element) const { return !(*this == element); }
+
+        //!< Call to get the type of the clip element.
+        Type getType() const { return fType; }
+
+        //!< Call if getType() is kPath to get the path.
+        const SkPath& getPath() const { return fPath; }
+
+        //!< Call if getType() is kRect to get the rect.
+        const SkRect& getRect() const { return fRect; }
+
+        //!< Call if getType() is not kEmpty to get the set operation used to combine this element.
+        SkRegion::Op getOp() const { return fOp; }
+
+        /** If getType() is not kEmpty this indicates whether the clip shape should be anti-aliased
+            when it is rasterized. */
+        bool isAA() const { return fDoAA; }
+
+        //!< Inverts the fill of the clip shape. Note that a kEmpty element remains kEmpty.
+        void invertShapeFillType();
+
+        //!< Sets the set operation represented by the element.
+        void setOp(SkRegion::Op op) { fOp = op; }
+
+        /** The GenID can be used by clip stack clients to cache representations of the clip. The
+            ID corresponds to the set of clip elements up to and including this element within the
+            stack not to the element itself. That is the same clip path in different stacks will
+            have a different ID since the elements produce different clip result in the context of
+            their stacks. */
+        int32_t getGenID() const { return fGenID; }
+
+        /**
+         * Gets the bounds of the clip element, either the rect or path bounds. (Whether the shape
+         * is inverse filled is not considered.)
+         */
+        const SkRect& getBounds() const {
+            static const SkRect kEmpty = { 0, 0, 0, 0 };
+            switch (fType) {
+                case kRect_Type:
+                    return fRect;
+                case kPath_Type:
+                    return fPath.getBounds();
+                case kEmpty_Type:
+                    return kEmpty;
+                default:
+                    SkDEBUGFAIL("Unexpected type.");
+                    return kEmpty;
+            }
+        }
+
+        /**
+         * Conservatively checks whether the clip shape contains the rect param. (Whether the shape
+         * is inverse filled is not considered.)
+         */
+        bool contains(const SkRect& rect) const {
+            switch (fType) {
+                case kRect_Type:
+                    return fRect.contains(rect);
+                case kPath_Type:
+                    return fPath.conservativelyContainsRect(rect);
+                case kEmpty_Type:
+                    return false;
+                default:
+                    SkDEBUGFAIL("Unexpected type.");
+                    return false;
+            }
+        }
+
+        /**
+         * Is the clip shape inverse filled.
+         */
+        bool isInverseFilled() const {
+            return kPath_Type == fType && fPath.isInverseFillType();
+        }
+
+    private:
+        friend class SkClipStack;
+
+        SkPath          fPath;
+        SkRect          fRect;
+        int             fSaveCount; // save count of stack when this element was added.